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

Reply via email to