Hi, > Now I implemented your hc811 based stuff into our 2.6.10 tree. > The chip enumerates once a while and breaks doing that...
Could you please be more specific here. > So, may be error on my side when doing platform Setup up or something. > You say your driver does this and that on 2.6.9. So I took vanilla 2.6.9 > and put the hc811 based isp116x stuff into it. Compiles fine, but I get > "irq65: nobody cared" and tried to get it away the whole day now to no > avail. IRQ65 (GPIOA(1)) Is exclusively used by the isp116x. > > 116x: driver isp116x-hcd, Jan 4 2005 > Resetting isp116x > Resetting isp116x > 116x: Found ISP116x Host Controller > 116x: ISP116x Host Controller, irq 65 > isp116x-hcd isp116x-hcd0: new USB bus registered, assigned bus number 1 > usb usb1: Product: ISP116x Host Controller > usb usb1: Manufacturer: Linux 2.6.9-imx1 isp116x-hcd > usb usb1: SerialNumber: isp116x-hcd0 > hub 1-0:1.0: USB hub found > hub 1-0:1.0: 2 ports detected > irq65: nobody cared I think "nobody cared" means two things: either there was no irq handler for that irq installed, or the existing handler returned neither IRQ_HANDLED nor IRQ_NONE. To discriminate between these cases, you can add to the end of the isp116x_irq(), just before the 'return ret;' statement a prink showing the 'ret' value. > static struct resource isp116x_hcd_resources[] = { > { > .name = "mem", > .start = SCB9328_USB_PHYS + 0, > .end = SCB9328_USB_PHYS + 1, > .flags = IORESOURCE_MEM, > }, > { > .name = "mem", > .start = SCB9328_USB_PHYS + 2, > .end = SCB9328_USB_PHYS + 3, > .flags = IORESOURCE_MEM, > }, > { > .name = "irq", > .start = SCB9328_USB_IRQ, > .end = SCB9328_USB_IRQ, > .flags = IORESOURCE_IRQ, > }, > { > .name = "dma", > .start = -1, > .end = -1, > .flags = IORESOURCE_DMA, > }, There is no dma resource parsing in the driver. You can remove this entry. > }; > > static void pltf_isp116x_reset(struct device *dev, int set) > { > printk("Resetting isp116x\n"); > /* unsigned long flags; > > local_irq_save(flags); > if( !set ){ > ISP116x_RESET_PORT |= ISP116x_RESET_BIT; > barrier(); > ISP116x_RESET_DIR_PORT |= ISP116x_RESET_BIT; > }else{ > ISP116x_RESET_PORT &= ~ISP116x_RESET_BIT; > barrier(); > ISP116x_RESET_DIR_PORT |= ISP116x_RESET_BIT; > } > local_irq_restore(flags); */ > } Are you sure this directly copied reset function really works for you too? > static struct isp116x_platform_data pltf_isp116x_platform_data = { > .sel15Kres = 1, > .clknotstop = 1, > .no_power_switching = 1, > .reset = pltf_isp116x_reset, > // .delay = pltf_isp116x_delay, > }; Are these settings correct also for your board. Please check these. Maybe you have to set some other parameters (see usb_isp116x.h). > static struct platform_device isp116x_hcd = { > .name = "isp116x-hcd", > .id = 0, > .num_resources = ARRAY_SIZE(isp116x_hcd_resources), > .resource = isp116x_hcd_resources, > .dev = { > .platform_data = &pltf_isp116x_platform_data, > } > }; Otherwise, the platform conf seems ok. Olav ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel