From: Guenter Roeck <linux@roeck-us.net>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
qemu-devel@nongnu.org, "Beniamino Galvani" <b.galvani@gmail.com>,
qemu-arm@nongnu.org, "Icenowy Zheng" <icenowy@aosc.xyz>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: Re: [Qemu-arm] [PATCH 3/3] arm: allwinner: Enable USB EHCI
Date: Wed, 7 Nov 2018 10:38:19 -0800 [thread overview]
Message-ID: <20181107183819.GA5468@roeck-us.net> (raw)
In-Reply-To: <20181105081656.3u5vankppvabxmlg@sirius.home.kraxel.org>
On Mon, Nov 05, 2018 at 09:16:56AM +0100, Gerd Hoffmann wrote:
> > > > @@ -116,6 +116,8 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
> > > > if (machine_usb(current_machine)) {
> > > > sysbus_create_simple("sysbus-ohci", 0x01c14400, s->irq[64]);
> > > > sysbus_create_simple("sysbus-ohci", 0x01c1c400, s->irq[65]);
> > > > + sysbus_create_simple(TYPE_AW_A10_EHCI, 0x01c14000, s->irq[39]);
> > > > + sysbus_create_simple(TYPE_AW_A10_EHCI, 0x01c1c000, s->irq[40]);
> > >
> > > Hmm, is this a companion controller setup? If so, then this is a bit
> > > more complicated (see ehci_create_ich9_with_companions()).
> >
> > I don't have enough USB knowledge. Can we have companion setup without PCI?
> >
> > Per the datashit [1] p. 215 "21. USB Host Controller", each controller share
> > the same PHY. There is no mention of companion setup:
> >
> > The USB host controller includes the following features:
> > ..
> > - Complies with EHCI Specification, Version 1.0,
> > - and the OHCI Specification, Version 1.0a.
> > ..
> > - Support only 1 USB Root Port shared between EHCI and OHCI.
>
> Looks like a companion setup. Short introduction:
>
> The port is shared, and ehci controls whenever the port is assigned to
> ehci or the companion (ohci in this case). Typically the ehci driver
> sets the bit depending on usb device speed, i.e. usb2 devices are
> handled by ehci and usb1 devices are handled by ohci.
>
> By default ohci owns the devices, so in case the OS has no ehci driver
> ohci can be used to handle usb2 devices in usb1 compat mode. Pretty
> much moot these days.
>
> On the qemu side you basically have to initialize ehci first (so the usb
> bus exists), then set the masterbus property to the ehci usb-bus for the
> ohci controller.
>
I tried that; in theory it looks like it works, or at least both devices
instantiate. I took the implementation from hw/ppc/sam460ex.c as guideline.
In practice, however, it doesn't work (nor does my current code). EHCI
fails to instantiate with error -110, and OHCI fails to instantiate with
error -75.
Weird, I know I tested this when I implemented it. Nevertheless,
it doesn't work. Given that, I think the series should be dropped
for now, at least until I find the time to track down the problem.
Guenter
WARNING: multiple messages have this Message-ID (diff)
From: Guenter Roeck <linux@roeck-us.net>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Icenowy Zheng" <icenowy@aosc.xyz>,
qemu-devel@nongnu.org, qemu-arm@nongnu.org,
"Beniamino Galvani" <b.galvani@gmail.com>
Subject: Re: [Qemu-devel] [PATCH 3/3] arm: allwinner: Enable USB EHCI
Date: Wed, 7 Nov 2018 10:38:19 -0800 [thread overview]
Message-ID: <20181107183819.GA5468@roeck-us.net> (raw)
In-Reply-To: <20181105081656.3u5vankppvabxmlg@sirius.home.kraxel.org>
On Mon, Nov 05, 2018 at 09:16:56AM +0100, Gerd Hoffmann wrote:
> > > > @@ -116,6 +116,8 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
> > > > if (machine_usb(current_machine)) {
> > > > sysbus_create_simple("sysbus-ohci", 0x01c14400, s->irq[64]);
> > > > sysbus_create_simple("sysbus-ohci", 0x01c1c400, s->irq[65]);
> > > > + sysbus_create_simple(TYPE_AW_A10_EHCI, 0x01c14000, s->irq[39]);
> > > > + sysbus_create_simple(TYPE_AW_A10_EHCI, 0x01c1c000, s->irq[40]);
> > >
> > > Hmm, is this a companion controller setup? If so, then this is a bit
> > > more complicated (see ehci_create_ich9_with_companions()).
> >
> > I don't have enough USB knowledge. Can we have companion setup without PCI?
> >
> > Per the datashit [1] p. 215 "21. USB Host Controller", each controller share
> > the same PHY. There is no mention of companion setup:
> >
> > The USB host controller includes the following features:
> > ..
> > - Complies with EHCI Specification, Version 1.0,
> > - and the OHCI Specification, Version 1.0a.
> > ..
> > - Support only 1 USB Root Port shared between EHCI and OHCI.
>
> Looks like a companion setup. Short introduction:
>
> The port is shared, and ehci controls whenever the port is assigned to
> ehci or the companion (ohci in this case). Typically the ehci driver
> sets the bit depending on usb device speed, i.e. usb2 devices are
> handled by ehci and usb1 devices are handled by ohci.
>
> By default ohci owns the devices, so in case the OS has no ehci driver
> ohci can be used to handle usb2 devices in usb1 compat mode. Pretty
> much moot these days.
>
> On the qemu side you basically have to initialize ehci first (so the usb
> bus exists), then set the masterbus property to the ehci usb-bus for the
> ohci controller.
>
I tried that; in theory it looks like it works, or at least both devices
instantiate. I took the implementation from hw/ppc/sam460ex.c as guideline.
In practice, however, it doesn't work (nor does my current code). EHCI
fails to instantiate with error -110, and OHCI fails to instantiate with
error -75.
Weird, I know I tested this when I implemented it. Nevertheless,
it doesn't work. Given that, I think the series should be dropped
for now, at least until I find the time to track down the problem.
Guenter
next prev parent reply other threads:[~2018-11-07 18:39 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-29 22:32 [Qemu-arm] [PATCH 0/3] hw/arm: Enable USB OHCI/EHCI on Allwinner A10 Philippe Mathieu-Daudé
2018-10-29 22:32 ` [Qemu-devel] " Philippe Mathieu-Daudé
2018-10-29 22:32 ` [Qemu-arm] [PATCH 1/3] arm: allwinner: Enable USB OHCI Philippe Mathieu-Daudé
2018-10-29 22:32 ` [Qemu-devel] " Philippe Mathieu-Daudé
2018-10-29 22:32 ` [Qemu-arm] [PATCH 2/3] usb: ehci: Add support for Allwinner A10 Philippe Mathieu-Daudé
2018-10-29 22:32 ` [Qemu-devel] " Philippe Mathieu-Daudé
2018-10-30 6:37 ` [Qemu-arm] " Gerd Hoffmann
2018-10-30 6:37 ` [Qemu-devel] " Gerd Hoffmann
2018-10-29 22:32 ` [Qemu-devel] [PATCH 3/3] arm: allwinner: Enable USB EHCI Philippe Mathieu-Daudé
2018-10-29 22:32 ` Philippe Mathieu-Daudé
2018-10-30 6:38 ` [Qemu-arm] " Gerd Hoffmann
2018-10-30 6:38 ` [Qemu-devel] " Gerd Hoffmann
2018-10-30 22:39 ` Philippe Mathieu-Daudé
2018-10-30 22:39 ` Philippe Mathieu-Daudé
2018-11-05 8:16 ` [Qemu-arm] " Gerd Hoffmann
2018-11-05 8:16 ` [Qemu-devel] " Gerd Hoffmann
2018-11-07 18:38 ` Guenter Roeck [this message]
2018-11-07 18:38 ` Guenter Roeck
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=20181107183819.GA5468@roeck-us.net \
--to=linux@roeck-us.net \
--cc=b.galvani@gmail.com \
--cc=icenowy@aosc.xyz \
--cc=kraxel@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.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.