Hello, I'm porting uClinux for W90N740, the kernel is booted successful, but the USB Host has some problems. After the kernel is booted, I plug in a USB Card reader, the kernel outputs the following messages, I don't understand the messages, :( The attachment is the HCD source code for W90N740. $ cat /proc/kmsg & 74 $ <5>Linux version 2.6.22-uc0 ([EMAIL PROTECTED]) (gcc version 3.4.3) #479 Mon Oct 1 12:32:33 CST 2007 <4>CPU: Winbond-W90N740 [32103201] revision 1 (ARMvundefined/unknown), cr=00000000 <4>Machine: W90N740 <4>W90N740 cache init <7>On node 0 totalpages: 4096 <7> DMA zone: 32 pages used for memmap <7> DMA zone: 0 pages reserved <7> DMA zone: 4064 pages, LIFO batch:0 <7> Normal zone: 0 pages used for memmap <4>Built 1 zonelists. Total pages: 4064 <5>Kernel command line: init=/linuxrc console=ttyS0,115200 root=31:2 <4>PID hash table entries: 64 (order: 6, 256 bytes) <4>Dentry cache hash table entries: 2048 (order: 1, 8192 bytes) <4>Inode-cache hash table entries: 1024 (order: 0, 4096 bytes) <6>Memory:1 banks <4> 16MB = 16MB total <5>Memory: 14772KB available (1168K code, 244K data, 44K init) <6>Calibrating delay loop... <5>39.83 BogoMIPS <4>Mount-cache hash table entries: 512 <5>SCSI subsystem initialized <6>usbcore: registered new interface driver usbfs <6>usbcore: registered new interface driver hub <6>usbcore: registered new device driver usb <4>NetWinder Floating Point Emulator V0.97 (double precision) <6>NTFS driver 2.1.28 [Flags: R/W]. <6>io scheduler noop registered (default) <6>Serial: W90N740 driver $Revision: 1.00 $ <3>scsi_debug_init: out of memory, 1 <4>uclinux[mtd]: RAM probe address=0x7f000000 size=0x200000 <5>Creating 5 MTD partitions on "cramfs": <5>0x00000000-0x00010000 : "uBoot" <5>0x00010000-0x00100000 : "Kernel" <5>0x00100000-0x001e0000 : "Cramfs" <5>0x001e0000-0x001f0000 : "ParamA" <5>0x001f0000-0x00200000 : "ParamB" <4>uclinux[mtd]: set Cramfs to be root filesystem <7>ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver <7>ohci_hcd: block sizes: ed 64 td 64 <4>w90n740_usb_set_power(0013b4f8, 1, 1) <4>w90n740_usb_set_power(0013b4f8, 2, 1) <4>w90n740 start USB host controller. <6>w90n740-ohci w90n740-ohci: W90N74X OHCI <7>drivers/usb/core/inode.c: creating file 'devices' <7>drivers/usb/core/inode.c: creating file '001' <6>w90n740-ohci w90n740-ohci: new USB bus registered, assigned bus number 1 <6>w90n740-ohci w90n740-ohci: irq 9, io mem 0xfff05000 <7>w90n740-ohci w90n740-ohci: created debug files <7>w90n740-ohci w90n740-ohci: enabling initreset quirk <7>w90n740-ohci w90n740-ohci: OHCI controller state <7>w90n740-ohci w90n740-ohci: OHCI 1.0, NO legacy support registers <7>w90n740-ohci w90n740-ohci: control 0x083 HCFS=operational CBSR=3 <7>w90n740-ohci w90n740-ohci: cmdstatus 0x00000 SOC=0 <7>w90n740-ohci w90n740-ohci: intrstatus 0x00000004 SF <7>w90n740-ohci w90n740-ohci: intrenable 0x8000004a MIE RHSC RD WDH <7>w90n740-ohci w90n740-ohci: hcca frame #0004 <7>w90n740-ohci w90n740-ohci: roothub.a 01000002 POTPGT=1 NDP=2(2) <7>w90n740-ohci w90n740-ohci: roothub.b 00000000 PPCM=0000 DR=0000 <7>w90n740-ohci w90n740-ohci: roothub.status 00008000 DRWE <7>w90n740-ohci w90n740-ohci: roothub.portstatus [0] 0x00000100 PPS <7>w90n740-ohci w90n740-ohci: roothub.portstatus [1] 0x00000100 PPS <7>usb usb1: default language 0x0409 <7>usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1 <6>usb usb1: Product: W90N74X OHCI <6>usb usb1: Manufacturer: Linux 2.6.22-uc0 ohci_hcd <6>usb usb1: SerialNumber: W90N74x <7>usb usb1: uevent <7>usb usb1: usb_probe_device <6>usb usb1: configuration #1 chosen from 1 choice <7>usb usb1: adding 1-0:1.0 (config #1, interface 0) <7>usb 1-0:1.0: uevent <7>usb 1-0:1.0: uevent <7>hub 1-0:1.0: usb_probe_interface <7>hub 1-0:1.0: usb_probe_interface - got id <6>hub 1-0:1.0: USB hub found <6>hub 1-0:1.0: 2 ports detected <7>hub 1-0:1.0: standalone hub <7>hub 1-0:1.0: ganged power switching <7>hub 1-0:1.0: global over-current protection <7>hub 1-0:1.0: power on to power good time: 2ms <7>hub 1-0:1.0: local power source is good <7>hub 1-0:1.0: no over-current condition exists <7>hub 1-0:1.0: enabling power on all ports <7>hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0000 <7>drivers/usb/core/inode.c: creating file '001' <6>Initializing USB Mass Storage driver... <7>w90n740-ohci w90n740-ohci: GetStatus roothub.portstatus [0] = 0x00000100 PPS <7>w90n740-ohci w90n740-ohci: GetStatus roothub.portstatus [1] = 0x00000100 PPS <6>usbcore: registered new interface driver usb-storage <6>USB Mass Storage support registered. <4>VFS: Mounted root (cramfs filesystem) readonly. <6>Freeing init memory: 44K <7>opening ttyS0...uart_open(0) called <4>Open an initial console succeed. <5>Clock: old time 1970/01/01 - 00:00:01 GMT <5>Clock: new time 2007/06/01 - 10:37:47 GMT
The card reader is plugged into the USB port at this time and the kernel prints the following messages: <7>w90n740-ohci w90n740-ohci: rhsc <7>hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0002 <7>w90n740-ohci w90n740-ohci: GetStatus roothub.portstatus [0] = 0x00010101 CSC PPS CCS <7>hub 1-0:1.0: port 1, status 0101, change 0001, 12 Mb/s <7>w90n740-ohci w90n740-ohci: GetStatus roothub.portstatus [0] = 0x00000101 PPS CCS <7>w90n740-ohci w90n740-ohci: GetStatus roothub.portstatus [0] = 0x00000101 PPS CCS <7>w90n740-ohci w90n740-ohci: GetStatus roothub.portstatus [0] = 0x00000101 PPS CCS <7>w90n740-ohci w90n740-ohci: GetStatus roothub.portstatus [0] = 0x00000101 PPS CCS <7>w90n740-ohci w90n740-ohci: GetStatus roothub.portstatus [0] = 0x00000101 PPS CCS <7>hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x101 <7>w90n740-ohci w90n740-ohci: GetStatus roothub.portstatus [0] = 0x00100103 PRSC PPS PES CCS usb 1-1: new full speed USB device using w90n740-ohci and address 2 <6>usb 1-1: new full sp€ed USB device using w90n740-ohci and address 2 <7>drivers/usb/host/ohci-dbg.c: SUB 00315a40 dev=0 ep=0in-ctrl flags=0 len=0/64 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00315a40 dev=0 ep=0in-ctrl flags=0 len=18/64 stat=0 <7>drivers/usb/host/ohci-dbg.c: setup(8): 80 06 00 01 00 00 40 00 <7>drivers/usb/host/ohci-dbg.c: data(18/64): 12 01 00 02 00 00 00 40 8f 05 66 63 00 01 01 02... stat:0 <7>w90n740-ohci w90n740-ohci: GetStatus roothub.portstatus [0] = 0x00100103 PRSC PPS PES CCS <7>drivers/usb/host/ohci-dbg.c: SUB 003159f8 dev=0 ep=0out-ctrl flags=0 len=0/0 stat=-115 <7>drivers/usb/host/ohci-dbg.c: setup(8): 00 05 02 00 00 00 00 00 <7>drivers/usb/host/ohci-dbg.c: RET 003159f8 dev=0 ep=0out-ctrl flags=0 len=0/0 stat=0 <7>drivers/usb/host/ohci-dbg.c: SUB 00315a18 dev=2 ep=0in-ctrl flags=0 len=0/18 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00315a18 dev=2 ep=0in-ctrl flags=0 len=18/18 stat=0 <7>drivers/usb/host/ohci-dbg.c: setup(8): 80 06 00 01 00 00 12 00 <7>drivers/usb/housb 1-1: Product: Mass Storage Device st/ohci-usb 1-1: Manufacturer: Generic dbg.c: dusb 1-1: SerialNumber: 058F0O1111B1 ata(18/18): 12 01 00 02 00 00 00 40 8f 05 66 63 00 01001 02... stat:0 @7>drivers/usb/host/ohci-dbg.c: Susb 1-1: configuration #1 chosen from 1 choice UB 00315c48 dev=2 ep=0in-ctrl flags=0 len=0/9 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00315c48 dev=2 ep=0in-ctrl scsi0 : SCSI emulation for USB Mass Storage devices flass=0 len=9/9 stat=0 <7>drivers/usb/host/ohci-dbg.c: setup(8): 80 06 00 02 00 00 09 00 <7>drivers/usbhhost/ohci-dbg.c: data(9/9): 09 02 20 00 01 01 00 80 32 stat:0 <7>drivers/usb/host/ohci-dbg.c: SUB 00315c70 dev=2 ep=0in-ctrl flags=0 len=0/32 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00315c70 dev=2 ep=0in-ctrl flags=0 len=32/32 stat=0 <7>drivers/usb/host/ohci-dbg.c: setup(8): 80 06 00 02 00 00 20 00 <7>drivers/usb/host/ohci-dbg.c: data(32/32): 09 02 20 00 01 01 00 80 32 09 04 00 00 02 08 06... stat:0 <7>drivers/usb/host/ohci-dbg.c: SUB 00315f00 dev=2 ep=0in-ctrl flags=0 len=0/255 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00315f00 dev=2 ep=0in-ctrl flags=0 len=4/255 stat=0 <7>drivers/usb/host/ohci-dbg.c: setup(8): 80 06 00 03 00 00 ff 00 <7>drivers/usb/host/ohci-dbg.c: data(4/255): 04 03 09 04 stat:0 <7>usb 1-1: default language 0x0409 <7>drivers/usb/host/ohci-dbg.c: SUB 00315f00 dev=2 ep=0in-ctrl flags=0 len=0/255 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00315f00 dev=2 ep=0in-ctrl flags=0 len=40/255 stat=0 <7>drivers/usb/host/ohci-dbg.c: setup(8): 80 06 02 03 09 04 ff 00 <7>drivers/usb/host/ohci-dbg.c: data(40/255): 28 03 4d 00 61 00 73 00 73 00 20 00 53 00 74 00... stat:0 <7>drivers/usb/host/ohci-dbg.c: SUB 00315f20 dev=2 ep=0in-ctrl flags=0 len=0/255 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00315f20 dev=2 ep=0in-ctrl flags=0 len=16/255 stat=0 <7>drivers/usb/host/ohci-dbg.c: setup(8): 80 06 01 03 09 04 ff 00 <7>drivers/usb/host/ohci-dbg.c: data(16/255): 10 03 47 00 65 00 6e 00 65 00 72 00 69 00 63 00 stat:0 <7>drivers/usb/host/ohci-dbg.c: SUB 00315f30 dev=2 ep=0in-ctrl flags=0 len=0/255 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00315f30 dev=2 ep=0in-ctrl flags=0 len=26/255 stat=0 <7>drivers/usb/host/ohci-dbg.c: setup(8): 80 06 03 03 09 04 ff 00 <7>drivers/usb/host/ohci-dbg.c: data(26/255): 1a 03 30 00 35 00 38 00 46 00 30 00 4f 00 31 00... stat:0 <7>usb 1-1: new device strings: Mfr=1, Product=2, SerialNumber=3 <6>usb 1-1: Product: Mass Storage Device <6>usb 1-1: Manufacturer: Generic <6>usb 1-1: SerialNumber: 058F0O1111B1 <7>usb 1-1: uevent <7>usb 1-1: usb_probe_device <6>usb 1-1: configuration #1 chosen from 1 choice <7>drivers/usb/host/ohci-dbg.c: SUB 002a2f48 dev=2 ep=0out-ctrl flags=0 len=0/0 stat=-115 <7>drivers/usb/host/ohci-dbg.c: setup(8): 00 09 01 00 00 00 00 00 <7>drivers/usb/host/ohci-dbg.c: RET 002a2f48 dev=2 ep=0out-ctrl flags=0 len=0/0 stat=0 <7>usb 1-1: adding 1-1:1.0 (config #1, interface 0) <7>usb 1-1:1.0: uevent <7>usb 1-1:1.0: uevent <7>usb-storage 1-1:1.0: usb_probe_interface <7>usb-storage 1-1:1.0: usb_probe_interface - got id <7>usb-storage: USB Mass Storage device detected <7>usb-storage: -- associate_dev <7>usb-storage: Vendor: 0x058f, Product: 0x6366, Revision: 0x0100 <7>usb-storage: Interface Subclass: 0x06, Protocol: 0x50 <7>usb-storage: Transport: Bulk <7>usb-storage: Protocol: Transparent SCSI <6>scsi0 : SCSI emulation for USB Mass Storage devices <7>usb-storage: *** thread sleeping. <7>usb-storage: device found at 2 <7>usb-storage: waiting for device to settle before scanning <7>drivers/usb/core/inode.c: creating file '002' <7>hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0002 <7>w90n740-ohci w90n740-ohci: GetStatus roothub.portstatus [0] = 0x00000103 PPS PES CCS <7>usb-storaee: usb_stor_control_msg: rq=fe rqtype=a1 value=0000 index=00 len=1 <7>drivers/usb/host/ohci-dbg.c: SUB 00336738 dev=2 ep=0in-ctrl flags=c len=0/1 stat=-115 <7>drivers/usb/host/oscsi 0:0:0:0: Direct-Access Multi Flash Reader 1.00 PQ: 0 ANSI: 0 hci-dbg.c: RET 00336738 dev22 pp=0in-ctrl flags=c len=1/1 stat=0 <7>drivers/usb/host/ohci-dbg.c: setup(8): a1 fe 00 00 00 00 01000 <7>drivers/usb/host/ohci-dbg.c: data(1/1): 00 stat:0 <7>usb-storage: GetMaxLUN command result is 1, data is 0 <7>usb-storage: queuecommand called <7>usb-storage: *** thread awakened. <7>usb-storage: Command INQUIRY (6 bytes) <7>usb-storage: 12 00 00 00 24 00 <7>usb-storage: Bulk Command S 0x43425355 T 0x1 L 36 F 128 Trg 0 LUN 0 CL 6 <7>usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes <7>drivers/usb/host/ohci-dbg.c: SUB 00336738 dev=2 ep=1out-bulk flags=c len=0/31 stat=-115 <7>drivers/usb/host/ohci-dbg.c: data(0/31): 55 53 42 43 01 00 00 00 24 00 00 00 80 00 06 12... stat:-115 <7>drivers/usb/host/ohci-dbg.c: RET 00336738 dev=2 ep=1out-bulk flags=c len=31/31 stat=0 <7>usb-storage: Status code 0; transferred 31/31 <7>usb-storage: -- transfer complete <7>usb-storage: Bulk command transfer result=0 <7>usb-storage: usb_stor_bulk_transfer_sglist: xfer 36 bytes, 1 entries <7>drivers/usb/host/ohci-dbg.c: SUB 0032f698 dev=2 ep=2in-bulk flags=5 len=0/36 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 0032f698 dev=2 ep=2in-bulk flags=5 len=36/36 stat=0 <7>drivers/usb/host/ohci-dbg.c: data(36/36): 00 80 00 00 1f 00 00 00 4d 75 6c 74 69 20 20 20... stat:0 <7>usb-storage: Status code 0; transferred 36/36 <7>usb-storage: -- transfer complete <7>usb-storage: Bulk data transfer result 0x0 <7>usb-storage: Attempting to get CSW... <7>usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes <7>drivers/usb/host/ohci-dbg.c: SUB 00336738 dev=2 ep=2in-bulk flags=c len=0/13 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00336738 dev=2 ep=2in-bulk flags=c len=13/13 stat=0 <7>drivers/usb/host/ohci-dbg.c: data(13/13): 55 53 42 53 01 00 00 00 00 00 00 00 00 stat:0 <7>usb-storage: Status code 0; transferred 13/13 <7>usb-storage: -- transfer complete <7>usb-storage: Bulk status result = 0 <7>usb-storage: Bulk Status S 0x53425355 T 0x1 R 0 Stat 0x0 <7>usb-storage: scsi cmd done, result=0x0 <7>usb-storage: *** thread sleeping. <5>scsi 0:0:0:0: Direct-Access Multi Flash Reader 1.00 PQ: 0 ANSI: 0 <7>usb-storage: queuecommand called <7>usb-storage: *** thread awakened. <7>usb-storage: Command TEST_UNIT_READY (6 bytes) <7>usb-storage: 00 00 00 00 00 00 <7>usb-storage: Bulk Command S 0x43425355 T 0x2 L 0 F 0 Trg 0 LUN 0 CL 6 <7>usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes <7>drivers/usb/host/ohci-dbg.c: SUB 00336738 dev=2 ep=1out-bulk flags=c len=0/31 stat=-115 <7>drivers/usb/host/ohci-dbg.c: data(0/31): 55 53 42 43 02 00 00 00 00 00 00 00 00 00 06 00... stat:-115 <7>drivers/usb/host/ohci-dbg.c: RET 00336738 dev=2 ep=1out-bulk flags=c len=31/31 stat=0 <7>usb-storage: Status code 0; transferred 31/31 <7>usb-storage: -- transfer complete <7>usb-storage: Bulk command transfer result=0 <7>usb-storage: Attempting to get CSW... <7>usb-storage: usb_stor_bulk_transfer_buf: ffer 13 bytes <7>drivers/usb/host/ohci-dbg.c: SUB 00336738 dev=2 ep=2in-bulk flags=c len=0/13 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00336738 dev=2 ep=2in-bulk flags=c len=13/13 stat=0 <7>drivers/usb/host/ohci-dbg.c: data(13/13): 55 53 42 53 02 00 00 00 00 00 0 00 01 stat:0 <7>usb-storage: Status code 0; transferred 13/13 <7>usb-storage: -- transfer complete <7>usb-storage: Bulk status result = 0 <7>usb-storage: Bulk Status S 0x53425355 T 0x2 R 0 Stat 0x1 <7>usb-storage: -- transport indicates command failure <7>usb-storage: Issuing auto-REQUEST_SENSE <7>usb-storage: Bulk Command S 0x43425355 T 0x3 L 18 F 128 Trg 0 LUN 0 CL 6 <7>usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes <7>drivers/usb/host/ohci-dbg.c: SUB 00336738 dev=2 ep=1out-bulk flags=c len=0/31 stat=-115 <7>drivers/usb/host/ohci-dbg.c: data(0/31): 55 53 42 43 03 00 00 00 12 00 00 00 80 00 06 03... stat:-115 <7>drivers/usb/host/ohci-dbg.c: RET 00336738 dev=2 ep=1out-bulk flags=c len=31/31 stat=0 <7>usb-storage: Status code 0; transferred 31/31 <7>usb-storage: -- transfer complete <7>usb-storage: Bulk command transfer result=0 <7>usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes <7>drivers/usb/host/ohci-dbg.c: SUB 00336738 dev=2 ep=2in-bulk flags=8 len=0/18 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00336738 dev=2 ep=2in-bulk flags=8 len=18/18 stat=0 <7>drivers/usb/host/ohci-dbg.c: data(18/18): f0 02 06 00 00 00 00 0a 00 aa 55 42 28 00 02 00... stat:0 <7>usb-storage: Status code 0; transferred 18/18 <7>usb-storage: -- transfer complete <7>usb-storage: Bulk data transfer result 0x0 <7>usb-storage: Attempting to get CSW... <7>usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes <7>drivers/usb/host/ohci-dbg.c: SUB 00336738 dev=2 ep=2in-bulk flags=c len=0/13 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00336738 dev=2 ep=2in-bulk flags=c len=13/13 stat=0 <7>drivers/usb/host/ohci-dbg.c: data(13/13): 55 53 42 53 03 00 00 00 00 00 00 00 00 stat:0 <7>usb-storage: Status code 0; transferred 13/13 <7>usb-storage: -- transfer complete <7>usb-storage: Bulk status result = 0 <7>usb-storage: Bulk Status S 0x53425355 T 0x3 R 0 Stat 0x0 <7>usb-storage: -- Result from auto-sense is 0 <7>usb-storage: -- code: 0xf0, key: 0x6, ASC: 0x28, ASCQ: 0x0 <7>usb-storage: Unit Attention: Not ready to ready change, medium may have changed <7>usb-storage: scsi cmd done, result=0x2 <7>usb-storage: *** thread sleeping. <7>usb-storage: queuecommand called <7>usb-storage: *** thread awakened. <7>usb-storage: Command TEST_UNIT_READY (6 bytes) <7>usb-storage: 00 00 00 00 00 00 <7>usb-storage: Bulk Command S 0x43425355 T 0x4 L 0 F 0 Trg 0 LUN 0 CL 6 <7>usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes <7>drivers/usb/host/ohci-dbg.c: SUB 00336738 dev=2 ep=1out-bulk flags=c len=0/31 stat=-115 <7>drivers/usb/host/ohci-dbg.c: data(0/31): 55 53 42 43 04 00 00 00 00 00 00 00 00 00 06 00... stat:-115 <7>drivers/usb/host/ohci-dbg.c: RET 00336738 dev=2 ep=1out-bulk flags=c len=31/31 stat=0 <7>usb-storage: Status code 0; transferred 31/31 <7>usb-storage: -- transfer complete <7>usb-storage: Bulk command transfer result=0 <7>usb-storage: Attempting to get CSW... <7>usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes <7>drivers/usb/host/ohci-dbg.c: SUB 00336738 dev=2 ep=2in-bulk flags=c len=0/13 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 00336738 dev=2 ep=2in-bulk flags=c len=13/13 stat=0 <7>drivers/usb/host/ohci-dbg.c: data(13/13): 55 53 42 53 04 00 00 00 00 00 00 00 00 stat:0 <7>usb-storage: Status code 0; transferred 13/13 <7>usb-storage: -- transfer complete <7>usb-storage: Bulk status result = 0 <7>usb-storage: Bulk Status S 0x53425355 T 0x4 R 0 Stat 0x0 <7>usb-storage: scsi cmd done, result=0x0 <7>usb-storage: *** thread sleeping. <7>usb-storage: queuecommand called <7>usb-storage: *** thread awakened. <7>usb-storage: Command READ_CAPACITY (10 bytes) <7>usb-storage: 25 00 00 00 00 00 00 00 00 00 <7>usb-storage: Bulk Command S 0x43425355 T 0x5 L 8 F 128 Trg 0 LUN 0 CL 10 <7>usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes <7>drivers/usb/host/ohci-dbg.c: SUB 00336738 dev=2 ep=1out-bulk flags=c len=0/31 stat=-115 <7>drivers/usb/host/ohci-dbg.c: data(0/31): 55 53 42 43 05 00 00 00 08 00 00 00 80 00 0a 25... stat:-115 <7>drivers/usb/host/ohci-dbg.c: RET 00336738 dev=2 ep=1out-bulk flags=c len=31/31 stat=0 <7>usb-storage: Status code 0; transferred 31/31 <7>usb-storage: -- transfer complete <7>usb-storage: Bulk command transfer result=0 <7>usb-storage: usb_stor_bulk_transfer_sglist: xfer 8 bytes, 1 entries <7>drivers/usb/host/ohci-dbg.c: SUB 0032cdb8 dev=2 ep=2in-bulk flags=5 len=0/8 stat=-115 <7>drivers/usb/host/ohci-dbg.c: RET 0032cdb8 dev=2 ep=2in-bulk flags=5 len=8/8 stat=0 <7>drivers/usb/host/ohci-dbg.c: data(8/8): 00 01 f5 ff 00 00 02 00 stat:0 <7>usb-storage: Status code 0; transferred 8/8 <7>usb-storage: -- transfer complete <7>usb-storage: Bulk data transfer result 0x0 <7>usb-storage: Attempting to get CSW... <7>usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes <7>drivers/usb/host/ohci-dbg.c: SUB 00336738 dev=2 ep=2in-bulk flags=c len=0/13 stat=-115 $ <7>usb-storage: command_abort called <7>usb-storage: usb_stor_stop_transport called <7>usb-storage: -- cancelling URB <7>drivers/usb/host/ohci-dbg.c: UNLINK 00336738 dev=2 ep=2in-bulk flags=c len=0/13 stat=-104 There is nothing in /proc/bus/usb! What should I do? Darwin Chen. ----------------------------------------------------------- /* * linux/drivers/usb/host/ohci-w90n740.c * OHCI HCD (Host Controller Driver) for Winbond w90n740. * * (C) Copyright 2006-2008 Chen Weiwen <[EMAIL PROTECTED]> * * USB Bus Glue for Winbond W90N740 * * Written by Chen Weiwen <[EMAIL PROTECTED]> * Based on fragments of Samsung S3c24xx Christopher Hoover <[EMAIL PROTECTED]>. * * Modified for W90N740 from ohci-s3c2410.c * by Chen Weiwen, <[EMAIL PROTECTED]> * Copyright (C) 2006-2008 Chen Weiwen * * This file is licenced under the GPL. */ #include <linux/platform_device.h> #include <asm/hardware.h> #include <asm/arch/usb-control.h> #define valid_port(idx) ((idx) == 1 || (idx) == 2) #define HCRootHubStatus 0xFFF05050 void enable_usb_clock() { unsigned long nClockSel; nClockSel = CSR_READ(CLKSEL); nClockSel |= 0x00000080; CSR_WRITE(CLKSEL, nClockSel); } void disable_usb_clock() { unsigned long nClockSel; nClockSel = CSR_READ(CLKSEL); nClockSel &= 0xFFFFFF7F; CSR_WRITE(CLKSEL, nClockSel); } static void w90n740_usb_power_control(int port, int to) { int ps = CSR_READ(HCRootHubStatus); if(to) CSR_WRITE(HCRootHubStatus, ps|0x10000); else CSR_WRITE(HCRootHubStatus, ps|0x01); } static void w90n740_usb_enable_oc(struct w90n740_hcd_info * info, int on) { } static struct w90n740_hcd_info *to_w90n740_info(struct usb_hcd *hcd) { return hcd->self.controller->platform_data; } static void w90n740_start_hc(struct platform_device *dev, struct usb_hcd *hcd) { struct w90n740_hcd_info *info = dev->dev.platform_data; printk("w90n740 start USB host controller.\n"); enable_usb_clock(); mdelay(2); //let the bus clock stabilise } static void w90n740_stop_hc(struct platform_device *dev) { struct w90n740_hcd_info *info = dev->dev.platform_data; if (info != NULL) { info->report_oc = NULL; info->hcd = NULL; if (info->enable_oc != NULL) { (info->enable_oc)(info, 0); } } disable_usb_clock(); } /* w90n740_usb_set_power * * configure the power on a port, by calling the platform device * routine registered with the platform device */ static void w90n740_usb_set_power(struct w90n740_hcd_info *info, int port, int to) { int ps = CSR_READ(0xfff05048); if (info == NULL) return; printk(KERN_DEBUG "w90n740_usb_set_power(%08x, %d, %d)\n", info, port, to); CSR_WRITE(0xfff05048,ps|0x200); ps = CSR_READ(HCRootHubStatus); if(to) CSR_WRITE(HCRootHubStatus, ps|0x10000); else CSR_WRITE(HCRootHubStatus, ps|0x01); } /* may be called without controller electrically present */ /* may be called with controller, bus, and devices active */ /* * usb_hcd_w90n740_remove - shutdown processing for HCD * @dev: USB Host Controller being removed * Context: !in_interrupt() * * Reverses the effect of usb_hcd_3c2410_probe(), first invoking * the HCD's stop() method. It is always called from a thread * context, normally "rmmod", "apmd", or something similar. * */ static void usb_hcd_w90n740_remove (struct usb_hcd *hcd, struct platform_device *dev) { usb_remove_hcd(hcd); w90n740_stop_hc(dev); iounmap(hcd->regs); release_mem_region(hcd->rsrc_start, hcd->rsrc_len); usb_put_hcd(hcd); } /** * usb_hcd_w90n740_probe - initialize W90N740-based HCDs * Context: !in_interrupt() * * Allocates basic resources for this USB host controller, and * then invokes the start() method for the HCD associated with it * through the hotplug entry's driver_data. * */ static int usb_hcd_w90n740_probe (const struct hc_driver *driver, struct platform_device *dev) { struct usb_hcd *hcd = NULL; int retval; struct w90n740_hcd_info * info = (struct w90n740_hcd_info *)dev->dev.platform_data; w90n740_usb_set_power(dev->dev.platform_data, 1, 1); w90n740_usb_set_power(dev->dev.platform_data, 2, 1); hcd = usb_create_hcd(driver, &dev->dev, "W90N74x"); if (hcd == NULL) return -ENOMEM; hcd->rsrc_start = dev->resource[0].start; hcd->rsrc_len = dev->resource[0].end - dev->resource[0].start + 1; if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) { dev_err(&dev->dev, "request_mem_region failed"); retval = -EBUSY; goto err_put; } w90n740_start_hc(dev, hcd); hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); if (!hcd->regs) { dev_err(&dev->dev, "ioremap failed\n"); retval = -ENOMEM; goto err_ioremap; } ohci_hcd_init(hcd_to_ohci(hcd)); retval = usb_add_hcd(hcd,INT_USBINT0 , IRQF_DISABLED); if (retval != 0) goto err_ioremap; return 0; err_ioremap: w90n740_stop_hc(dev); iounmap(hcd->regs); err_mem: release_mem_region(hcd->rsrc_start, hcd->rsrc_len); err_put: usb_put_hcd(hcd); return retval; } static int ohci_w90n740_start (struct usb_hcd *hcd) { struct ohci_hcd *ohci = hcd_to_ohci (hcd); int ret; if ((ret = ohci_init(ohci)) < 0) return ret; if ((ret = ohci_run (ohci)) < 0) { err ("can't start %s", hcd->self.bus_name); ohci_stop (hcd); return ret; } return 0; } static const struct hc_driver ohci_w90n740_hc_driver = { .description = hcd_name, .product_desc = "W90N74X OHCI", .hcd_priv_size = sizeof(struct ohci_hcd), /* * generic hardware linkage */ .irq = ohci_irq, .flags = HCD_USB11 | HCD_MEMORY, /* * basic lifecycle operations */ .start = ohci_w90n740_start, .stop = ohci_stop, .shutdown = ohci_shutdown, /* * managing i/o requests and associated device resources */ .urb_enqueue = ohci_urb_enqueue, .urb_dequeue = ohci_urb_dequeue, .endpoint_disable = ohci_endpoint_disable, /* * scheduling support */ .get_frame_number = ohci_get_frame, /* * root hub support */ .hub_status_data = ohci_hub_status_data, .hub_control = ohci_hub_control, .hub_irq_enable = ohci_rhsc_enable, #ifdef CONFIG_PM .bus_suspend = ohci_bus_suspend, .bus_resume = ohci_bus_resume, #endif .start_port_reset = ohci_start_port_reset, }; /* device driver */ static int ohci_hcd_w90n740_drv_probe(struct platform_device *pdev) { return usb_hcd_w90n740_probe(&ohci_w90n740_hc_driver, pdev); } static int ohci_hcd_w90n740_drv_remove(struct platform_device *pdev) { struct usb_hcd *hcd = platform_get_drvdata(pdev); usb_hcd_w90n740_remove(hcd, pdev); return 0; } static struct platform_driver ohci_hcd_w90n740_driver = { .probe = ohci_hcd_w90n740_drv_probe, .remove = ohci_hcd_w90n740_drv_remove, .shutdown = usb_hcd_platform_shutdown, .driver = { .owner = THIS_MODULE, .name = "w90n740-ohci", }, }; ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Linux-usb-users@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-users