On Tue, 28 Jun 2005, Bill Gatliff wrote:
> The isp1161's INT1 line is tied to GPIO22 on my PXA255 > (according to the schematic). Here is my latest platform > stuff: > > #define CSB625_USB_PHYS PXA_CS5_PHYS > #define CSB625_USB_IRQ 22 > > static struct resource isp116x_resources[] = { > [0] = { > .start = CSB625_USB_PHYS, > .end = CSB625_USB_PHYS + 1, > .flags = IORESOURCE_MEM, > }, > [1] = { > .start = CSB625_USB_PHYS + 2, > .end = CSB625_USB_PHYS + 3, > .flags = IORESOURCE_MEM, > }, > [2] = { > .start = CSB625_USB_IRQ, > .end = CSB625_USB_IRQ, > .flags = IORESOURCE_IRQ, > }, > }; > > static struct isp116x_platform_data > csb625_isp116x_platform_data = { > .sel15Kres = 1, > .int_act_high = 1, > .int_edge_triggered = 1, > }; > > static struct platform_device isp116x_device = { > .name = "isp116x-hcd", > .id = 0, > .num_resources = ARRAY_SIZE(isp116x_resources), > .resource = isp116x_resources, > .dev = { > .platform_data = &csb625_isp116x_platform_data, > }, > }; > > ... > pxa_gpio_mode(GPIO33_nCS_5_MD); > pxa_gpio_mode(CSB625_USB_IRQ); > set_irq_type(IRQ_GPIO(CSB625_USB_IRQ), IRQT_RISING); > ... > > I also modified /proc/driver/isp116x, so that it also > reports register values. > > [Note: I'm a bit confused about the IRQ_GPIO macro, I'm not > sure where I need it and where I don't. But variations on > where I put it don't seem to improve anything.] > I cannot comment on IRQ_GPIO. I have never worked with pxa. It seems that we can better continue this discussion on LAK list. I'm subscribed there too. > Ok, with that out of the way, here is what I see the machine > doing. After booting without a device attached: > > # cat /proc/driver/isp116x > ISP116x Host Controller > isp116x-hcd version 08 Apr 2005 > hc_irq_enable 0012 opr atl > hc_irq_status 0041 clkrdy sof > hc_int_enable 80000050 MIE rhsc ue > hc_int_status 00000024 fno sof > periodic size= 32 > HCREVISION [00]: 00000010 > HCCONTROL [01]: 00000080 > HCCMDSTAT [02]: 00000000 > HCINTSTAT [03]: 00000024 > HCINTENB [04]: 80000050 > HCFMINTVL [0d]: 27782edf > HCFMREM [0e]: 00002d7b > HCFMNUM [0f]: 0000c780 > HCLSTHRESH [11]: 00000628 > HCRHDESCA [12]: 19000002 > HCRHDESCB [13]: 00060000 > HCRHSTATUS [14]: 00000000 > HCRHPORT1 [15]: 00000000 > HCRHPORT2 [16]: 00000000 > HCHWCFG [20]: 100f > HCDMACFG [21]: 0000 > HCXFERCTR [22]: 0000 > HCuPINT [24]: 0041 > HCuPINTENB [25]: 0012 > HCCHIPID [27]: 6123 > HCSCRATCH [28]: 0000 > HCITLBUFLEN [2a]: 0000 > HCATLBUFLEN [2b]: 1000 > HCBUFSTAT [2c]: 0000 > HCRDITL0LEN [2d]: 0000 > HCRDITL1LEN [2e]: 0000 > > # cat /proc/interrupts > CPU0 > 4: 0 pxa2xx_udc > 10: 2 LCD > 13: 474 STUART > 16: 6 pxa2xx-mci > 18: 0 DMA > 19: 220088 PXA Timer Tick > 22: 0 isp116x-hcd:usb1 > 26: 0 pxamcicd > 33: 0 CF0 IRQ > 35: 0 CF0 CD > 37: 20014 eth0 > Err: 0 > > > Now plug in a USB keyboard: > > # cat /proc/driver/isp116x > ISP116x Host Controller > isp116x-hcd version 08 Apr 2005 > hc_irq_enable 0012 opr atl > hc_irq_status 0041 clkrdy sof > hc_int_enable 80000050 MIE rhsc ue > hc_int_status 00000024 fno sof > periodic size= 32 > HCREVISION [00]: 00000010 > HCCONTROL [01]: 00000080 > HCCMDSTAT [02]: 00000000 > HCINTSTAT [03]: 00000024 > HCINTENB [04]: 80000050 > HCFMINTVL [0d]: 27782edf > HCFMREM [0e]: 00001bdb > HCFMNUM [0f]: 00000c1a > HCLSTHRESH [11]: 00000628 > HCRHDESCA [12]: 19000002 > HCRHDESCB [13]: 00060000 > HCRHSTATUS [14]: 00000000 > HCRHPORT1 [15]: 00000000 > HCRHPORT2 [16]: 00000000 > HCHWCFG [20]: 100f > HCDMACFG [21]: 0000 > HCXFERCTR [22]: 0000 > HCuPINT [24]: 0041 > HCuPINTENB [25]: 0012 > HCCHIPID [27]: 6123 > HCSCRATCH [28]: 0000 > HCITLBUFLEN [2a]: 0000 > HCATLBUFLEN [2b]: 1000 > HCBUFSTAT [2c]: 0000 > HCRDITL0LEN [2d]: 0000 > HCRDITL1LEN [2e]: 0000 > > > # cat /proc/interrupts > CPU0 > 4: 0 pxa2xx_udc > 10: 2 LCD > 13: 532 STUART > 16: 6 pxa2xx-mci > 18: 0 DMA > 19: 224547 PXA Timer Tick > 22: 0 isp116x-hcd:usb1 > 26: 0 pxamcicd > 33: 0 CF0 IRQ > 35: 0 CF0 CD > 37: 20056 eth0 > Err: 0 > > > Finally, booting with pen drive *and* a keyboard attached > (and, in this case, with IRQ_GPIO in the resources > definition): > > # cat /proc/driver/isp116x > ISP116x Host Controller > isp116x-hcd version 08 Apr 2005 > hc_irq_enable 0012 opr atl > hc_irq_status 0041 clkrdy sof > hc_int_enable 80000050 MIE rhsc ue > hc_int_status 00000024 fno sof > periodic size= 32 > HCREVISION [00]: 00000010 > HCCONTROL [01]: 00000080 > HCCMDSTAT [02]: 00000000 > HCINTSTAT [03]: 00000024 > HCINTENB [04]: 80000050 > HCFMINTVL [0d]: 27782edf > HCFMREM [0e]: 00000b94 > HCFMNUM [0f]: 00008867 > HCLSTHRESH [11]: 00000628 > HCRHDESCA [12]: 19000002 > HCRHDESCB [13]: 00060000 > HCRHSTATUS [14]: 00000000 > HCRHPORT1 [15]: 00000000 > HCRHPORT2 [16]: 00000000 One strange thing is that these two registers remain 0 regardless of whether anything is plugged in or not. For comparison, if I have a low-speed device (mouse) plugged in, I see the following: 116x: HCRHPORT1 [15]: 00000100 116x: HCRHPORT2 [16]: 00110301 This should be independent of the interrupt settings. The strange thing is why your regs 15,16 report that ports are not powered; bit 8 should read 1 if the chip is initialized successfully. > HCHWCFG [20]: 100f > HCDMACFG [21]: 0000 > HCXFERCTR [22]: 0000 > HCuPINT [24]: 0041 > HCuPINTENB [25]: 0012 > HCCHIPID [27]: 6123 > HCSCRATCH [28]: 0000 > HCITLBUFLEN [2a]: 0000 > HCATLBUFLEN [2b]: 1000 > HCBUFSTAT [2c]: 0000 > HCRDITL0LEN [2d]: 0000 > HCRDITL1LEN [2e]: 0000 > > # cat /proc/interrupts > CPU0 > 4: 0 pxa2xx_udc > 10: 1 LCD > 13: 316 STUART > 16: 6 pxa2xx-mci > 18: 0 DMA > 19: 11250 PXA Timer Tick > 26: 0 pxamcicd > 33: 0 CF0 IRQ > 35: 0 CF0 CD > 37: 19830 eth0 > 45: 0 isp116x-hcd:usb1 ^^ Note that now the hcd is at int45. > Err: 0 > > > Regarding your comment on power connections, that was bad > grammar on my part. What I see is that the VCC pin has 5V, > and without any devices attached the other pins are all 0V. > With the keyboard attached, one of the data pins goes to > 3.3V. With the pen drive attached, the *other* data pin > goes to about 2.9V. Sounds OK. I see the power line at 4.9V and when plugging a mouse, one of the data pins goes from 0 to 2.9V. One thing: both Ian and me have no_power_switching = 1 in our configurations, while you don't. Try this. It may well be that there's a bug in driver. For comparison, below are the messages at insmod-ing if a mouse is plugged in. In the driver, both DEBUG and VERBOSE are defined. # insmod isp116x-hcd.ko 116x: driver isp116x-hcd, 08 Apr 2005 isp116x-hcd isp116x-hcd.0: ISP116x Host Controller isp116x-hcd isp116x-hcd.0: new USB bus registered, assigned bus number 1 isp116x-hcd isp116x-hcd.0: irq 5, io base 0x10000002 isp116x-hcd isp116x-hcd.0: supports USB remote wakeup usb usb1: default language 0x0409 usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: ISP116x Host Controller usb usb1: Manufacturer: Linux 2.6.12-rc3 isp116x-hcd usb usb1: SerialNumber: isp116x-hcd.0 usb usb1: adding 1-0:1.0 (config #1, interface 0) hub 1-0:1.0: usb_probe_interface hub 1-0:1.0: usb_probe_interface - got id hub 1-0:1.0: USB hub found 116x: GetHubDescriptor hub 1-0:1.0: 2 ports detected hub 1-0:1.0: standalone hub hub 1-0:1.0: no power switching (usb 1.0) hub 1-0:1.0: global over-current protection hub 1-0:1.0: power on to power good time: 50ms 116x: GetHubStatus hub 1-0:1.0: local power source is good hub 1-0:1.0: no over-current condition exists hub 1-0:1.0: state 5 ports 2 chg 0000 evt 0000 116x: GetPortStatus 116x: GetPortStatus: port[1] 00000000 116x: GetPortStatus 116x: GetPortStatus: port[2] 00000000 116x: HCREVISION [00]: 00000010 116x: HCCONTROL [01]: 00000480 116x: HCCMDSTAT [02]: 00000000 116x: HCINTSTAT [03]: 00000044 116x: HCINTENB [04]: 80000058 116x: HCFMINTVL [0d]: 27782edf 116x: HCFMREM [0e]: 000001c9 116x: HCFMNUM [0f]: 00000015 116x: HCLSTHRESH [11]: 00000628 116x: HCRHDESCA [12]: 19000202 116x: HCRHDESCB [13]: 00060000 116x: HCRHSTATUS [14]: 00008000 116x: HCRHPORT1 [15]: 00000100 116x: HCRHPORT2 [16]: 00110301 116x: HCHWCFG [20]: 1809 116x: HCDMACFG [21]: 0000 116x: HCXFERCTR [22]: 0000 116x: HCuPINT [24]: 0011 116x: HCuPINTENB [25]: 0012 116x: HCCHIPID [27]: 6122 116x: HCSCRATCH [28]: 0000 116x: HCITLBUFLEN [2a]: 0000 116x: HCATLBUFLEN [2b]: 1000 116x: HCBUFSTAT [2c]: 0000 116x: HCRDITL0LEN [2d]: 0000 116x: HCRDITL1LEN [2e]: 0000 # hub 1-0:1.0: state 5 ports 2 chg 0000 evt 0004 116x: GetPortStatus 116x: GetPortStatus: port[2] 00110301 116x: ClearPortFeature: <7>116x: USB_PORT_FEAT_C_CONNECTION hub 1-0:1.0: reset change on port 2 116x: ClearPortFeature: <7>116x: USB_PORT_FEAT_C_RESET hub 1-0:1.0: port 2, status 0301, change 0011, 1.5 Mb/s 116x: GetPortStatus 116x: GetPortStatus: port[2] 00000301 116x: GetPortStatus 116x: GetPortStatus: port[2] 00000301 116x: GetPortStatus 116x: GetPortStatus: port[2] 00000301 116x: GetPortStatus 116x: GetPortStatus: port[2] 00000301 116x: GetPortStatus 116x: GetPortStatus: port[2] 00000301 hub 1-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x301 116x: SetPortFeature: <7>116x: USB_PORT_FEAT_RESET 116x: GetPortStatus 116x: GetPortStatus: port[2] 00100303 116x: ClearPortFeature: <7>116x: USB_PORT_FEAT_C_RESET usb 1-2: new low speed USB device using isp116x-hcd and address 2 116x: Allowed data underrun 116x: SetPortFeature: <7>116x: USB_PORT_FEAT_RESET 116x: GetPortStatus 116x: GetPortStatus: port[2] 00100303 116x: ClearPortFeature: <7>116x: USB_PORT_FEAT_C_RESET usb 1-2: skipped 1 descriptor after interface 116x: Allowed data underrun usb 1-2: default language 0x0409 116x: Allowed data underrun usb 1-2: new device strings: Mfr=1, Product=0, SerialNumber=0 usb 1-2: Manufacturer: Logitech usb 1-2: adding 1-2:1.0 (config #1, interface 0) usbhid 1-2:1.0: usb_probe_interface usbhid 1-2:1.0: usb_probe_interface - got id 116x: Allowed data underrun input: USB HID v1.00 Mouse [Logitech] on usb-isp116x-hcd.0-2 hub 1-0:1.0: state 5 ports 2 chg 0000 evt 0004 116x: GetPortStatus 116x: GetPortStatus: port[2] 00000303 Olav ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel