* 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