svn commit: r313674 - in head/sys: arm/freescale/imx dev/usb/controller

Ian Lepore ian at FreeBSD.org
Sun Feb 12 00:52:24 UTC 2017


Author: ian
Date: Sun Feb 12 00:52:22 2017
New Revision: 313674
URL: https://svnweb.freebsd.org/changeset/base/313674

Log:
  Enable usb low and full speed devices connected to the imx6 root hubs.
  
  This enables the PHY circuitry for UTMI+ level 2 and 3, and sets the
  flag to tell the ehci code that the root hub has a transaction translator
  in it.  For imx6 we can use the standard ehci_get_port_speed_portsc()
  function to find out what speed device is connected to the port.

Modified:
  head/sys/arm/freescale/imx/imx6_usbphy.c
  head/sys/dev/usb/controller/ehci_imx.c

Modified: head/sys/arm/freescale/imx/imx6_usbphy.c
==============================================================================
--- head/sys/arm/freescale/imx/imx6_usbphy.c	Sat Feb 11 23:45:50 2017	(r313673)
+++ head/sys/arm/freescale/imx/imx6_usbphy.c	Sun Feb 12 00:52:22 2017	(r313674)
@@ -143,6 +143,10 @@ usbphy_attach(device_t dev)
 	bus_write_4(sc->mem_res, CTRL_SET_REG, CTRL_SFTRST);
 	bus_write_4(sc->mem_res, CTRL_CLR_REG, CTRL_SFTRST | CTRL_CLKGATE);
 
+	/* Set UTMI+ level 2+3 bits to enable low and full speed devices. */
+	bus_write_4(sc->mem_res, CTRL_SET_REG,
+	    CTRL_ENUTMILEVEL2 | CTRL_ENUTMILEVEL3);
+
 	/* Power up: clear all bits in the powerdown register. */
 	bus_write_4(sc->mem_res, PWD_REG, 0);
 

Modified: head/sys/dev/usb/controller/ehci_imx.c
==============================================================================
--- head/sys/dev/usb/controller/ehci_imx.c	Sat Feb 11 23:45:50 2017	(r313673)
+++ head/sys/dev/usb/controller/ehci_imx.c	Sun Feb 12 00:52:22 2017	(r313674)
@@ -298,8 +298,9 @@ imx_ehci_attach(device_t dev)
 	 * Set flags that affect ehci_init() behavior, and hook our post-reset
 	 * code into the standard controller code.
 	 */
-	esc->sc_flags |= EHCI_SCFLG_NORESTERM;
+	esc->sc_flags |= EHCI_SCFLG_NORESTERM | EHCI_SCFLG_TT;
 	esc->sc_vendor_post_reset = imx_ehci_post_reset;
+	esc->sc_vendor_get_port_speed = ehci_get_port_speed_portsc;
 
 	err = ehci_init(esc);
 	if (err != 0) {


More information about the svn-src-all mailing list