* USB on AU1550
@ 2005-09-28 20:52 Jay Monkman
2005-09-29 9:07 ` Matej Kupljen
2005-12-24 11:52 ` Herbert Valerio Riedel
0 siblings, 2 replies; 4+ messages in thread
From: Jay Monkman @ 2005-09-28 20:52 UTC (permalink / raw)
To: linux-mips
I'm trying to get USB working on my AU1550 board, and I'm getting an error I
don't understand. I've searched the web and the mailing list archives, but
haven't found anything relevant.
I'm using 2.6.12, in big-endian mode.
After the kernel comes up, I plug in a USB flash drive and get this on the console:
au1xxx-ohci au1xxx-ohci.0: GetStatus roothub.portstatus [1] = 0x00010101 CSC
PPS CCS
hub 1-0:1.0: port 2, status 0101, change 0001, 12 Mb/s
hub 1-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x101
au1xxx-ohci au1xxx-ohci.0: GetStatus roothub.portstatus [1] = 0x00100103
PRSC PPS PES CCS
usb 1-2: new full speed USB device using au1xxx-ohci and address 2
au1xxx-ohci au1xxx-ohci.0: Unlink after no-IRQ? Controller is probably
using the wrong IRQ.
This is the comment in the code before that printk():
/* IRQ setup can easily be broken so that USB controllers
* never get completion IRQs ... maybe even the ones we need to
* finish unlinking the initial failed usb_set_address()
* or device descriptor fetch.
*/
if (!hcd->saw_irq && hcd->self.root_hub != urb->dev) {
dev_warn (hcd->self.controller, "Unlink after no-IRQ? "
"Controller is probably using the wrong IRQ."
"\n");
hcd->saw_irq = 1;
}
When I get here in the code, hcd->saw_irq is 0, and it looks like this function
(hcd_unlink_urb()) is getting called from run_timer_softirq(), so I guess I'm
not getting the interrupt. However, immediately after returning, usb_hcd_irq()
does get called. As far as I can tell, the interrupt gets serviced as soon as
hcd_unlink_urb returns.
It looks like the timer function causing this is timeout_kill(), initialized in
usb_start_wait_urb() which has this comment:
// Starts urb and waits for completion or timeout
// note that this call is NOT interruptible, while
// many device driver i/o requests should be interruptible
Can anyone point me in the right direction to get this working?
Thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: USB on AU1550 2005-09-28 20:52 USB on AU1550 Jay Monkman @ 2005-09-29 9:07 ` Matej Kupljen 2005-12-24 11:52 ` Herbert Valerio Riedel 1 sibling, 0 replies; 4+ messages in thread From: Matej Kupljen @ 2005-09-29 9:07 UTC (permalink / raw) To: Jay Monkman; +Cc: linux-mips Hi > I'm trying to get USB working on my AU1550 board, and I'm getting an error I > don't understand. I've searched the web and the mailing list archives, but > haven't found anything relevant. Not the answer to you question, but I have some problems with USB on AU1200 board too. I use AirStar2 USB card (this is DVB-T card) and it is recognized by AU1200 and can communicate with it. I can tune to transporder, but the data (transport stream) is not send from the USB card. The card conforms to USB 1.1. I tried it on a PC running Linux and it works fine. AU1200 kernel: 2.6.11, PC kernel: 2.6.13.2. Any thoughts? BR, Matej P.S.: This is the log: ---------------------------------------------------------------------------------- flexcop_usb: running at FULL speed. DVB: registering new adapter (FlexCop Digital TV device). f010 b2c2-flexcop: MAC address = <DELETED> b2c2-flexcop: found the mt352 at i2c address: 0x0f DVB: registering frontend 0 (Zarlink MT352 DVB-T)... b2c2-flexcop: initialization of 'Air2PC/AirStar 2 DVB-T' at the 'USB' bus controlled by a 'FlexCopIII' complete creating 4 iso-urbs with 4 frames each of 1023 bytes size = 16368. initializing and submitting urb no. 0 (buf_offset: 0). urb no: 0, frame: 0, frame_offset: 0 urb no: 0, frame: 1, frame_offset: 1023 urb no: 0, frame: 2, frame_offset: 2046 urb no: 0, frame: 3, frame_offset: 3069 submitted urb no. 0. initializing and submitting urb no. 1 (buf_offset: 4092). urb no: 1, frame: 0, frame_offset: 0 urb no: 1, frame: 1, frame_offset: 1023 urb no: 1, frame: 2, frame_offset: 2046 urb no: 1, frame: 3, frame_offset: 3069 submitted urb no. 1. initializing and submitting urb no. 2 (buf_offset: 8184). urb no: 2, frame: 0, frame_offset: 0 urb no: 2, frame: 1, frame_offset: 1023 urb no: 2, frame: 2, frame_offset: 2046 urb no: 2, frame: 3, frame_offset: 3069 submitted urb no. 2. initializing and submitting urb no. 3 (buf_offset: 12276). urb no: 3, frame: 0, frame_offset: 0 urb no: 3, frame: 1, frame_offset: 1023 urb no: 3, frame: 2, frame_offset: 2046 urb no: 3, frame: 3, frame_offset: 3069 submitted urb no. 3. flexcop_usb: Technisat/B2C2 FlexCop II/IIb/III Digital TV USB Driver successfully initialized and connected. usbcore: registered new driver b2c2_flexcop_usb ---------------------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: USB on AU1550 2005-09-28 20:52 USB on AU1550 Jay Monkman 2005-09-29 9:07 ` Matej Kupljen @ 2005-12-24 11:52 ` Herbert Valerio Riedel 2006-02-10 8:36 ` Sylvain Munaut 1 sibling, 1 reply; 4+ messages in thread From: Herbert Valerio Riedel @ 2005-12-24 11:52 UTC (permalink / raw) To: Jay Monkman; +Cc: linux-mips hello, On Wed, 2005-09-28 at 15:52 -0500, Jay Monkman wrote: > I'm trying to get USB working on my AU1550 board, and I'm getting an error I > don't understand. I've searched the web and the mailing list archives, but > haven't found anything relevant. there was a post of mine, dating back to 22 Nov 2004 which could have been relevant to your cause :-) > > I'm using 2.6.12, in big-endian mode. [..] > Can anyone point me in the right direction to get this working? don't know whether you still require being pointed in to any direction; however, the following patch (against current GIT HEAD, works for me, YMMV :-) might provide a hint: diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig index ed1899d..914b964 100644 --- a/drivers/usb/host/Kconfig +++ b/drivers/usb/host/Kconfig @@ -100,12 +100,14 @@ config USB_OHCI_HCD_PCI config USB_OHCI_BIG_ENDIAN bool depends on USB_OHCI_HCD + default y if SOC_AU1X00 && CPU_BIG_ENDIAN default n config USB_OHCI_LITTLE_ENDIAN bool depends on USB_OHCI_HCD default n if STB03xxx || PPC_MPC52xx + default n if SOC_AU1X00 && CPU_BIG_ENDIAN default y config USB_UHCI_HCD diff --git a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h index caacf14..bf18351 100644 --- a/drivers/usb/host/ohci.h +++ b/drivers/usb/host/ohci.h @@ -462,6 +462,11 @@ static inline struct usb_hcd *ohci_to_hc #define writel_be(val, addr) out_be32((__force unsigned *)addr, val) #endif +#if defined(CONFIG_SOC_AU1X00) +#define readl_be(addr) __raw_readl((__force u32 *)(addr)) +#define writel_be(val, addr) __raw_writel(val, (__force u32 *)(addr)) +#endif + static inline unsigned int ohci_readl (const struct ohci_hcd *ohci, __hc32 __iomem * regs) { greetings, -- Herbert Valerio Riedel <hvr@gnu.org> GnuPG Key Fingerprint: 7BB9 2D6C D485 CE64 4748 5F65 4981 E064 883F 4142 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: USB on AU1550 2005-12-24 11:52 ` Herbert Valerio Riedel @ 2006-02-10 8:36 ` Sylvain Munaut 0 siblings, 0 replies; 4+ messages in thread From: Sylvain Munaut @ 2006-02-10 8:36 UTC (permalink / raw) To: Herbert Valerio Riedel; +Cc: Jay Monkman, linux-mips Maybe it's already in the code but That patch also activates the OHCI_BIG_ENDIAN flag in the struct ohci_hcd. If not big endian mode will be choosed only if USB_OHCI_LITTLE_ENDIAN is not selected as well (both can be selected at once and if they are, it's that plag in the hcd sruct that selects what to use) Sylvain Herbert Valerio Riedel wrote: > hello, > > On Wed, 2005-09-28 at 15:52 -0500, Jay Monkman wrote: > >>I'm trying to get USB working on my AU1550 board, and I'm getting an error I >>don't understand. I've searched the web and the mailing list archives, but >>haven't found anything relevant. > > > there was a post of mine, dating back to 22 Nov 2004 which could have > been relevant to your cause :-) > > >>I'm using 2.6.12, in big-endian mode. > > [..] > >>Can anyone point me in the right direction to get this working? > > > don't know whether you still require being pointed in to any direction; > however, the following patch (against current GIT HEAD, works for me, > YMMV :-) might provide a hint: > > diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig > index ed1899d..914b964 100644 > --- a/drivers/usb/host/Kconfig > +++ b/drivers/usb/host/Kconfig > @@ -100,12 +100,14 @@ config USB_OHCI_HCD_PCI > config USB_OHCI_BIG_ENDIAN > bool > depends on USB_OHCI_HCD > + default y if SOC_AU1X00 && CPU_BIG_ENDIAN > default n > > config USB_OHCI_LITTLE_ENDIAN > bool > depends on USB_OHCI_HCD > default n if STB03xxx || PPC_MPC52xx > + default n if SOC_AU1X00 && CPU_BIG_ENDIAN > default y > > config USB_UHCI_HCD > diff --git a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h > index caacf14..bf18351 100644 > --- a/drivers/usb/host/ohci.h > +++ b/drivers/usb/host/ohci.h > @@ -462,6 +462,11 @@ static inline struct usb_hcd *ohci_to_hc > #define writel_be(val, addr) out_be32((__force unsigned *)addr, val) > #endif > > +#if defined(CONFIG_SOC_AU1X00) > +#define readl_be(addr) __raw_readl((__force u32 *)(addr)) > +#define writel_be(val, addr) __raw_writel(val, (__force u32 *)(addr)) > +#endif > + > static inline unsigned int ohci_readl (const struct ohci_hcd *ohci, > __hc32 __iomem * regs) > { > > > greetings, ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2006-02-10 8:30 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-09-28 20:52 USB on AU1550 Jay Monkman 2005-09-29 9:07 ` Matej Kupljen 2005-12-24 11:52 ` Herbert Valerio Riedel 2006-02-10 8:36 ` Sylvain Munaut
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox