Olav:
Was that hardware problem related to pulling the WAKEUP pin? Or anything else?
It looked like it was a dead chip! Another prototype board seems to get
past that point. *shrug*
I'm still not getting the chip to recognize a device when I connect one,
even though I have corrected a number of things that I think were wrong
in my platform code. Any suggestions would be appreciated.
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.]
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
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
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.
Any ideas? I think I'm going to solder a wire to INT1, and see if I can
*force* interrupts. Maybe it's a schematic error, or an open circuit...
b.g.
--
Bill Gatliff
[EMAIL PROTECTED]
Embedded GNU, Linux, and other board support packages.
-------------------------------------------------------
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