summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mauderer <christian.mauderer@embedded-brains.de>2018-11-14 10:40:50 +0100
committerChristian Mauderer <christian.mauderer@embedded-brains.de>2020-04-15 16:32:34 +0200
commitc9c4d798980da452a3979dec1444f2c6c626723b (patch)
tree5926f608c9b9b7a0ef6c0e6c6d4ecba1ab9b22b3
parentehci_imx: Import from FreeBSD (diff)
downloadrtems-libbsd-c9c4d798980da452a3979dec1444f2c6c626723b.tar.bz2
ehci_imx: Port to RTEMS
Update #3869.
-rw-r--r--freebsd/sys/arm/freescale/imx/imx6_usbphy.c11
-rw-r--r--freebsd/sys/dev/usb/controller/ehci_imx.c12
2 files changed, 23 insertions, 0 deletions
diff --git a/freebsd/sys/arm/freescale/imx/imx6_usbphy.c b/freebsd/sys/arm/freescale/imx/imx6_usbphy.c
index 8f47507b..ad545601 100644
--- a/freebsd/sys/arm/freescale/imx/imx6_usbphy.c
+++ b/freebsd/sys/arm/freescale/imx/imx6_usbphy.c
@@ -91,6 +91,17 @@ usbphy_detach(device_t dev)
return (0);
}
+#ifdef __rtems__
+#define BUS_SPACE_PHYSADDR(res, offs) \
+ ((u_int)(rman_get_start(res)+(offs)))
+
+void
+imx6_anatop_write_4(bus_size_t offset, uint32_t value)
+{
+
+ bus_space_write_4(0, 0x20c8000, offset, value);
+}
+#endif /* __rtems__ */
static int
usbphy_attach(device_t dev)
{
diff --git a/freebsd/sys/dev/usb/controller/ehci_imx.c b/freebsd/sys/dev/usb/controller/ehci_imx.c
index a872fb62..d158df1d 100644
--- a/freebsd/sys/dev/usb/controller/ehci_imx.c
+++ b/freebsd/sys/dev/usb/controller/ehci_imx.c
@@ -303,6 +303,16 @@ imx_ehci_probe(device_t dev)
return (ENXIO);
if (ofw_bus_search_compatible(dev, compat_data)->ocd_data != 0) {
+#ifdef __rtems__
+ char dr_mode[24];
+
+ if (OF_getprop(ofw_bus_get_node(dev), "dr_mode",
+ &dr_mode, sizeof(dr_mode)) > 0 &&
+ strcasecmp(dr_mode, "host") != 0) {
+ return (ENXIO);
+ }
+#endif /* __rtems__ */
+
device_set_desc(dev, "Freescale i.MX integrated USB controller");
return (BUS_PROBE_DEFAULT);
}
@@ -437,8 +447,10 @@ imx_ehci_attach(device_t dev)
goto out;
}
+#ifndef __rtems__
/* Turn on clocks. */
imx_ccm_usb_enable(dev);
+#endif /* __rtems__ */
/* Disable overcurrent detection, if configured to do so. */
if (OF_hasprop(ofw_bus_get_node(sc->dev), "disable-over-current"))