From: <mar...@us...> - 2007-04-06 22:44:20
|
Revision: 952 http://svn.sourceforge.net/hackndev/?rev=952&view=rev Author: marex_z71 Date: 2007-04-06 15:44:13 -0700 (Fri, 06 Apr 2007) Log Message: ----------- PalmLD: Fix WRITE function, add example of standard enumeration with master supplied descriptor Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c 2007-04-06 20:20:59 UTC (rev 951) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c 2007-04-06 22:44:13 UTC (rev 952) @@ -41,7 +41,7 @@ int palmld_usb2_cmd_write(u8 data) { /* prepare data */ - u8 data1 = ((data & 0xf0)>>3); /* Upper nibble */ + u8 data1 = ((data & 0xf0)>>4); /* Upper nibble */ u8 data2 = (data & 0x0f); /* Lower nibble */ /* initiate write to reg */ @@ -70,31 +70,195 @@ /* ENUMERATE WITH BUILTIN DESCRIPTOR */ /* select register 0x30 - descriptor RAM*/ palmld_usb2_cmd_set_reg(0x30); - printk("SET ADDR to 0x30,GPIO86 %i\n",(GET_GPIO(86)?1:0)); /* write descriptor length */ - palmld_usb2_cmd_write(0x06); + palmld_usb2_cmd_write(0xa0); palmld_usb2_cmd_write(0x00); - printk("WRITE DESR size to 0x30,GPIO86 %i\n",(GET_GPIO(86)?1:0)); /* write descriptor as described in SX2 docs */ - palmld_usb2_cmd_write(0x04); - palmld_usb2_cmd_write(0x0B); + /* Device Descriptor */ + palmld_usb2_cmd_write(18); + palmld_usb2_cmd_write(01); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(02); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(64); + palmld_usb2_cmd_write(0x12); + palmld_usb2_cmd_write(0x34); + palmld_usb2_cmd_write(0x56); + palmld_usb2_cmd_write(0x78); + palmld_usb2_cmd_write(0xcd); + palmld_usb2_cmd_write(0xab); + palmld_usb2_cmd_write(01); + palmld_usb2_cmd_write(02); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(01); + /* Device qualifier */ + palmld_usb2_cmd_write(10); + palmld_usb2_cmd_write(06); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(02); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(64); + palmld_usb2_cmd_write(01); + palmld_usb2_cmd_write(00); + /* High Speed Config */ + palmld_usb2_cmd_write(9); + palmld_usb2_cmd_write(02); + palmld_usb2_cmd_write(46); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(01); + palmld_usb2_cmd_write(01); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(0x0A); + palmld_usb2_cmd_write(50); + /* Interface descr */ + palmld_usb2_cmd_write(9); + palmld_usb2_cmd_write(04); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(04); + palmld_usb2_cmd_write(0xFF); + palmld_usb2_cmd_write(0x00); + palmld_usb2_cmd_write(0x00); + palmld_usb2_cmd_write(00); + /* Endpoint descr */ + palmld_usb2_cmd_write(07); + palmld_usb2_cmd_write(05); + palmld_usb2_cmd_write(0x02); + palmld_usb2_cmd_write(02); + palmld_usb2_cmd_write(0x00); + palmld_usb2_cmd_write(0x02); + palmld_usb2_cmd_write(0x00); + /* Endpoint descr */ + palmld_usb2_cmd_write(07); + palmld_usb2_cmd_write(05); palmld_usb2_cmd_write(0x04); + palmld_usb2_cmd_write(02); palmld_usb2_cmd_write(0x00); - palmld_usb2_cmd_write(0x02); palmld_usb2_cmd_write(0x00); - + /* Endpoint descr */ + palmld_usb2_cmd_write(07); + palmld_usb2_cmd_write(05); + palmld_usb2_cmd_write(0x86); + palmld_usb2_cmd_write(02); palmld_usb2_cmd_write(0x00); - palmld_usb2_cmd_write(0x01); - - palmld_usb2_cmd_write(0x01); + palmld_usb2_cmd_write(0x02); palmld_usb2_cmd_write(0x00); - + /* Endpoint descr */ + palmld_usb2_cmd_write(07); + palmld_usb2_cmd_write(05); + palmld_usb2_cmd_write(0x88); + palmld_usb2_cmd_write(02); palmld_usb2_cmd_write(0x00); + palmld_usb2_cmd_write(0x02); palmld_usb2_cmd_write(0x00); + + /* Full Speed Config */ + palmld_usb2_cmd_write(9); + palmld_usb2_cmd_write(02); + palmld_usb2_cmd_write(46); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(01); + palmld_usb2_cmd_write(01); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(0x0A); + palmld_usb2_cmd_write(50); + /* Interface descr */ + palmld_usb2_cmd_write(9); + palmld_usb2_cmd_write(04); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write(04); + palmld_usb2_cmd_write(0xFF); + palmld_usb2_cmd_write(0x00); + palmld_usb2_cmd_write(0x00); + palmld_usb2_cmd_write(00); + /* Endpoint descr */ + palmld_usb2_cmd_write(07); + palmld_usb2_cmd_write(05); + palmld_usb2_cmd_write(0x02); + palmld_usb2_cmd_write(02); + palmld_usb2_cmd_write(0x40); + palmld_usb2_cmd_write(0x00); + palmld_usb2_cmd_write(0x00); + /* Endpoint descr */ + palmld_usb2_cmd_write(07); + palmld_usb2_cmd_write(05); + palmld_usb2_cmd_write(0x04); + palmld_usb2_cmd_write(02); + palmld_usb2_cmd_write(0x40); + palmld_usb2_cmd_write(0x00); + palmld_usb2_cmd_write(0x00); + /* Endpoint descr */ + palmld_usb2_cmd_write(07); + palmld_usb2_cmd_write(05); + palmld_usb2_cmd_write(0x86); + palmld_usb2_cmd_write(02); + palmld_usb2_cmd_write(0x40); + palmld_usb2_cmd_write(0x00); + palmld_usb2_cmd_write(0x00); + /* Endpoint descr */ + palmld_usb2_cmd_write(07); + palmld_usb2_cmd_write(05); + palmld_usb2_cmd_write(0x88); + palmld_usb2_cmd_write(02); + palmld_usb2_cmd_write(0x40); + palmld_usb2_cmd_write(0x00); + palmld_usb2_cmd_write(0x00); + /* String descr 0 */ + palmld_usb2_cmd_write(04); + palmld_usb2_cmd_write(03); + palmld_usb2_cmd_write(0x09); + palmld_usb2_cmd_write(0x04); + + /* String descr 1 */ + palmld_usb2_cmd_write(16); + palmld_usb2_cmd_write(03); + palmld_usb2_cmd_write('C'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('y'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('p'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('r'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('e'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('s'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('s'); + palmld_usb2_cmd_write(00); + + /* String descr 1 */ + palmld_usb2_cmd_write(20); + palmld_usb2_cmd_write(3); + palmld_usb2_cmd_write('C'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('Y'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('7'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('C'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('6'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('8'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('0'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('0'); + palmld_usb2_cmd_write(00); + palmld_usb2_cmd_write('1'); + palmld_usb2_cmd_write(00); + + /* A LOT OF DEBUGING CRAP */ /* printk("GPIO106 %i\n",(GET_GPIO(106)?1:0)); printk("GPIO106 %i\n",(GET_GPIO(106)?1:0)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |