All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jay Monkman <jtm@smoothsmoothie.com>
To: linux-mips@linux-mips.org
Subject: USB on AU1550
Date: Wed, 28 Sep 2005 15:52:41 -0500	[thread overview]
Message-ID: <433B0299.8080507@smoothsmoothie.com> (raw)

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.

             reply	other threads:[~2005-09-28 20:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-28 20:52 Jay Monkman [this message]
2005-09-29  9:07 ` USB on AU1550 Matej Kupljen
2005-12-24 11:52 ` Herbert Valerio Riedel
2006-02-10  8:36   ` Sylvain Munaut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=433B0299.8080507@smoothsmoothie.com \
    --to=jtm@smoothsmoothie.com \
    --cc=linux-mips@linux-mips.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.