From: Tony Lindgren <tony@atomide.com>
To: Robert Schuster <theBohemian@gmx.net>
Cc: linux-omap-open-source@linux.omap.com
Subject: Re: Nokia N800 - USB Host mode issues
Date: Wed, 11 Jul 2007 04:14:23 -0700 [thread overview]
Message-ID: <20070711111041.GE19166@atomide.com> (raw)
In-Reply-To: <468B9807.90707@gmx.net>
* Robert Schuster <theBohemian@gmx.net> [070704 05:53]:
> @Tony: Sorry have to send this again. The list does not like signed mails ..
>
> Hi Tony,
> thanks preparing the 2.6.18 backport. I tried those patches and it works
> better generally. Throughput seems to be a bit higher now (tested with a
> USB Ethernet adapter) and device removal/attachment is solid.
>
> Still I have some problems but I probably need to tell you how I have
> modified my N800. The boot process of the N770s detected whether they
> should set the USB chip to host or client via a configuration variable
> and loaded a bunch of drivers (usbnet, usbserial, pl2303, asix, usbhid
> ...). What I basically did is porting this behavior to the N800's
> linuxrc. So pegasus et al gets loaded when USB host mode is requested
> furthermore the musb driver is properly initialized (cat 'host' >
> /sys/.../mode).
>
> All connections as host are made with a Mini-B to A cable at whose end a
> type A gender changer is connected. I use the same cable without the
> gender changer for connections made as client.
OK
> So here comes the problems:
> 1) USB Hostmode is not activated when there was no client-connection
> first. That means I have to power on the N800 with the cable connected
> to a host. When the OS' desktop is visible I disconnect the cable and
> can connect it to the host side of a hub. Everything works fine.
Hmm, I'll take a look at that, but it won't happen until in August.
Could this be if you don't have any driver loaded? I believe
currently the driver needs a gadget or host driver loaded in order
to be active.
> Here is how the contents of 'mode' and 'cable' behave during those
> activities:
>
> - N800 boots, echo "host" > ... happens, cable is connected to a host
> mode: a_wait_bcon
> cable: Mini-B
>
> - cable is unplugged:
> mode: a_wait_bcon
> cable: Mini-A
>
> - cable is plugged to a hub (as host, of course)
> mode: a_host
> cable: Mini-A
>
> (the following is just for testing purposes)
> - cable is unplugged:
> mode: a_wait_bcon
> cable: Mini-A
>
> - cable is connected to a host
> mode: a_wait_bcon
> cable: Mini-A
>
> So cable does not change back to Mini-B. My guess is that there is some
> event missing in the driver's state machine that lets it switch to a
> 'wait for a connection with cable type Mini-A' state.
OK, sounds like there is something wrong with the status detection
still.
> 2) Attaching a USB Keyboard which has two USB 1.1 ports built-in fails.
> First case is that I try to connect it directly (without a hub in
> between). dmesg gives this:
>
> [ 647.438598] usb 1-1: new full speed USB device using musb_hdrc and
> address 8
> [ 647.587036] usb 1-1: ep0 maxpacket = 8
> [ 647.587829] usb 1-1: default language 0x0409
> [ 647.588317] usb 1-1: new device strings: Mfr=1, Product=2, SerialNumber=0
> [ 647.588348] usb 1-1: Product: USB Keyboard + 2P Hub
> [ 647.588592] usb 1-1: uevent
> [ 647.589050] usb 1-1: configuration #1 chosen from 1 choice
> [ 647.589508] usb 1-1: adding 1-1:1.0 (config #1, interface 0)
> [ 647.589660] usb 1-1:1.0: uevent
> [ 647.589813] hub 1-1:1.0: usb_probe_interface
> [ 647.589843] hub 1-1:1.0: usb_probe_interface - got id
> [ 647.589874] hub 1-1:1.0: USB hub found
> [ 647.590118] hub 1-1:1.0: 3 ports detected
> [ 647.590179] hub 1-1:1.0: compound device; port removable status: FRR
> [ 647.590209] hub 1-1:1.0: individual port power switching
> [ 647.590240] hub 1-1:1.0: individual port over-current protection
> [ 647.590270] hub 1-1:1.0: power on to power good time: 44ms
> [ 647.590454] hub 1-1:1.0: hub controller current requirement: 100mA
> [ 647.590484] hub 1-1:1.0: 100mA bus power budget for each child
> [ 647.590637] hub 1-1:1.0: enabling power on all ports
> [ 647.591613] musb_stage0_irq 537: VBUS_ERROR in a_host (91,
> <VBusValid), retry #1, port1 00020103
> [ 647.786224] musb_stage0_irq 598: CONNECT (a_host) devctl 5d
> [ 652.696411] usb 1-1: khubd timed out on ep0in len=0/255
>
> After the timeout the driver tries it over and over again.
>
> If I connect the keyboard through a USB 2.0 hub it shows:
>
> [ 252.340789] usb 1-1.1.1: new full speed USB device using musb_hdrc
> and address 7
> [ 252.426483] usb 1-1.1.1: device descriptor read/64, error -71
> [ 252.621673] usb 1-1.1.1: device descriptor read/64, error -71
> [ 252.817535] usb 1-1.1.1: new full speed USB device using musb_hdrc
> and address 8
> [ 252.903167] usb 1-1.1.1: device descriptor read/64, error -71
> [ 253.098937] usb 1-1.1.1: device descriptor read/64, error -71
> [ 253.294067] usb 1-1.1.1: new full speed USB device using musb_hdrc
> and address 9
> [ 253.715484] usb 1-1.1.1: device not accepting address 9, error -71
> [ 253.801910] usb 1-1.1.1: new full speed USB device using musb_hdrc
> and address 10
> [ 254.223297] usb 1-1.1.1: device not accepting address 10, error -71
> [ 254.223968] hub 1-1.1:1.0: state 7 ports 3 chg 0000 evt 0002
>
> After that:
>
> [ 267.701049] musb_stage0_irq 621: BUS RESET
> [ 267.701110] musb_stage2_irq 695: DISCONNECT (a_peripheral) as
> Peripheral, devctl 19
>
> ... (all devices disconnecting) ...
>
> [ 267.854461] musb_stage0_irq 537: VBUS_ERROR in a_wait_vfall (98,
> VALID), retry #0, port1 00000100
> [ 267.854522] tusb_source_power 544: VBUS b_idle, devctl 98 otg 171
> conf c0000001 prcm 00a80500
>
> After that I cannot get the driver to enter "a_host" again: Switching to
> "peripheral" and connecting as client is ok. But if I try "host" cable
> will show "disconnected" when it is really disconnected but also when it
> is plugged into the hub (mode contains "a_wait_bcon" all the time).
This is because the keyboard and hubs eat up more than the 100mA N800
can provide. I assume it works through a powered hub?
But still there's a problem if after the VBUS_ERROR it is unable to
detect other devices.
> This was a lot of text. I will try to understand the behavior from the
> sources but I hope that someone with better knowledge about the driver
> may get a clue faster.
Thanks for the information, it helps track down remaining issues. BTW,
my response time may be long right now as I'm mostly on vacation :)
Tony
next prev parent reply other threads:[~2007-07-11 11:14 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-29 16:39 Nokia N800 - USB Host mode issues Robert Schuster
2007-07-03 9:26 ` Tony Lindgren
2007-07-04 0:20 ` robert.vogt
2007-07-11 11:03 ` Tony Lindgren
2007-07-04 12:52 ` Robert Schuster
2007-07-11 11:14 ` Tony Lindgren [this message]
2007-07-11 13:45 ` Felipe Balbi
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=20070711111041.GE19166@atomide.com \
--to=tony@atomide.com \
--cc=linux-omap-open-source@linux.omap.com \
--cc=theBohemian@gmx.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox