summaryrefslogtreecommitdiffstats
path: root/sys/arm/ti
diff options
context:
space:
mode:
authorloos <loos@FreeBSD.org>2016-09-20 19:06:58 +0000
committerLuiz Otavio O Souza <luiz@netgate.com>2016-09-20 23:39:21 -0500
commit536678d14d15768c41b264888f2fec6de1962c47 (patch)
tree445766c6680234ab10d0a1ea2b6b5b25d4839842 /sys/arm/ti
parentda8a8102f6b9000a943d54f45510f0a7bb53da27 (diff)
downloadFreeBSD-src-536678d14d15768c41b264888f2fec6de1962c47.zip
FreeBSD-src-536678d14d15768c41b264888f2fec6de1962c47.tar.gz
If present, honor the USB port mode (host or peripheral) set on DTS, if not,
keep the beaglebone defaults: USB0 -> peripheral/gadget, USB1 -> host. This is only a workaround as in fact fact this hardware is capable of detect the USB port mode based on type of cable and act according with the detected mode. Unfortunately the driver does not handle that at moment. MFC after: 3 days Sponsored by: Rubicon Communications, LLC (Netgate) (cherry picked from commit 4d828af2f5b1ea01fc109c4267cf54c1b5fe8104)
Diffstat (limited to 'sys/arm/ti')
-rw-r--r--sys/arm/ti/am335x/am335x_musb.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/sys/arm/ti/am335x/am335x_musb.c b/sys/arm/ti/am335x/am335x_musb.c
index b92be0d..4dc96c3 100644
--- a/sys/arm/ti/am335x/am335x_musb.c
+++ b/sys/arm/ti/am335x/am335x_musb.c
@@ -237,6 +237,7 @@ static int
musbotg_attach(device_t dev)
{
struct musbotg_super_softc *sc = device_get_softc(dev);
+ char mode[16];
int err;
uint32_t reg;
@@ -308,10 +309,19 @@ musbotg_attach(device_t dev)
}
sc->sc_otg.sc_platform_data = sc;
- if (sc->sc_otg.sc_id == 0)
- sc->sc_otg.sc_mode = MUSB2_DEVICE_MODE;
- else
- sc->sc_otg.sc_mode = MUSB2_HOST_MODE;
+ if (OF_getprop(ofw_bus_get_node(dev), "dr_mode", mode,
+ sizeof(mode)) > 0) {
+ if (strcasecmp(mode, "host") == 0)
+ sc->sc_otg.sc_mode = MUSB2_HOST_MODE;
+ else
+ sc->sc_otg.sc_mode = MUSB2_DEVICE_MODE;
+ } else {
+ /* Beaglebone defaults: USB0 device, USB1 HOST. */
+ if (sc->sc_otg.sc_id == 0)
+ sc->sc_otg.sc_mode = MUSB2_DEVICE_MODE;
+ else
+ sc->sc_otg.sc_mode = MUSB2_HOST_MODE;
+ }
/*
* software-controlled function
OpenPOWER on IntegriCloud