Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Sep 2016 16:06:01 +0000 (UTC)
From:      Luiz Otavio O Souza <loos@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r306368 - stable/11/sys/arm/ti/am335x
Message-ID:  <201609271606.u8RG61iP076747@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: loos
Date: Tue Sep 27 16:06:01 2016
New Revision: 306368
URL: https://svnweb.freebsd.org/changeset/base/306368

Log:
  MFC r306050:
  
  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.
  
  Sponsored by:	Rubicon Communications, LLC (Netgate)

Modified:
  stable/11/sys/arm/ti/am335x/am335x_musb.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/arm/ti/am335x/am335x_musb.c
==============================================================================
--- stable/11/sys/arm/ti/am335x/am335x_musb.c	Tue Sep 27 13:46:00 2016	(r306367)
+++ stable/11/sys/arm/ti/am335x/am335x_musb.c	Tue Sep 27 16:06:01 2016	(r306368)
@@ -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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201609271606.u8RG61iP076747>