Messages in this thread | | | From | Vadim Lobanov <> | Subject | Re: amd5536udc interrupts bug | Date | Thu, 8 Jan 2009 18:02:43 -0800 |
| |
On Thursday 08 January 2009 08:40:28 Thomas Dahlmann wrote: > Maybe you want to try this. It should work to place the register init > from udc_probe() > > /* udc csr registers base */ > dev->csr = dev->virt_addr + UDC_CSR_ADDR; > /* dev registers base */ > dev->regs = dev->virt_addr + UDC_DEVCFG_ADDR; > /* ep registers base */spin_lock_init(&dev->lock); > dev->ep_regs = dev->virt_addr + UDC_EPREGS_ADDR; > /* fifo's base */ > dev->rxfifo = (u32 __iomem *)(dev->virt_addr + UDC_RXFIFO_ADDR); > dev->txfifo = (u32 __iomem *)(dev->virt_addr + UDC_TXFIFO_ADDR); > > just before request_irq(...) to allow the interrupt handler to read the > interrupt status > registers.
I did this. Actually, I also yanked the "spin_lock_init(&dev->lock)" bit before the request_irq() as well, since that field was also obviously needed for the irq routine. (I didn't check for any other necessary but less-obvious fields.) With these changes, the module modprobes just fine.
Alas, the hardware doesn't work. When I try plugging in the other end of the USB cable, absolutely nothing happens. Not even an interrupt: /proc/interrupts for the amd5536udc line stays at zero. Any thoughts on possible ways to tackle this / what could be going wrong / etc?
-- Vadim Lobanov
| |