summaryrefslogtreecommitdiffstats
path: root/rtemsbsd/sys/dev/dw_mmc/dw_mmc.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-02-05 13:57:11 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-02-06 09:55:31 +0100
commitc30fa94277cfdf2c8a7e0a6206d31a506453a491 (patch)
treefb60f2031c114a398485344dca016ff26af4612a /rtemsbsd/sys/dev/dw_mmc/dw_mmc.c
parenttests: Fix configuration dependencies (diff)
downloadrtems-libbsd-c30fa94277cfdf2c8a7e0a6206d31a506453a491.tar.bz2
Add device tree support for Altera/Intel Cyclone V
Close #3290.
Diffstat (limited to 'rtemsbsd/sys/dev/dw_mmc/dw_mmc.c')
-rw-r--r--rtemsbsd/sys/dev/dw_mmc/dw_mmc.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/rtemsbsd/sys/dev/dw_mmc/dw_mmc.c b/rtemsbsd/sys/dev/dw_mmc/dw_mmc.c
index c493dca7..c4e3130b 100644
--- a/rtemsbsd/sys/dev/dw_mmc/dw_mmc.c
+++ b/rtemsbsd/sys/dev/dw_mmc/dw_mmc.c
@@ -51,6 +51,10 @@
#include <machine/cpufunc.h>
#include <machine/resource.h>
+#include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+
#include <dev/dw_mmc/dw_mmcreg.h>
#include <dev/mmc/bridge.h>
@@ -222,10 +226,21 @@ dw_mmc_fini(struct dw_mmc_softc *sc)
WR4(sc, DW_MMC_CTRL, DW_MMC_CTRL_FIFO_RESET | DW_MMC_CTRL_RESET);
}
+static struct ofw_compat_data compat_data[] = {
+ {"altr,socfpga-dw-mshc", 1},
+ {NULL, 0},
+};
+
static int
dw_mmc_probe(device_t dev)
{
+ if (!ofw_bus_status_okay(dev))
+ return (ENXIO);
+
+ if (!ofw_bus_search_compatible(dev, compat_data)->ocd_data)
+ return (ENXIO);
+
device_set_desc(dev, "DesignWare Mobile Storage Host");
return (0);
}
@@ -1102,6 +1117,6 @@ static driver_t dw_mmc_driver = {
static devclass_t dw_mmc_devclass;
-DRIVER_MODULE(dw_mmc, nexus, dw_mmc_driver, dw_mmc_devclass, NULL, NULL);
+DRIVER_MODULE(dw_mmc, simplebus, dw_mmc_driver, dw_mmc_devclass, NULL, NULL);
DRIVER_MODULE(mmc, dw_mmc, mmc_driver, mmc_devclass, NULL, NULL);
MODULE_DEPEND(dw_mmc, mmc, 1, 1, 1);