summaryrefslogtreecommitdiffstats
path: root/sys/dev/nand/nfc_at91.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/nand/nfc_at91.c')
-rw-r--r--sys/dev/nand/nfc_at91.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/sys/dev/nand/nfc_at91.c b/sys/dev/nand/nfc_at91.c
index 7357cdb..74b0901 100644
--- a/sys/dev/nand/nfc_at91.c
+++ b/sys/dev/nand/nfc_at91.c
@@ -32,6 +32,8 @@
* is on the board.
*/
+#include "opt_platform.h"
+
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
@@ -57,6 +59,12 @@ __FBSDID("$FreeBSD$");
#include <dev/nand/nfc_at91.h>
#include <arm/at91/at91_smc.h>
+#ifdef FDT
+#include <dev/fdt/fdt_common.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+#endif
+
/*
* Data cycles are triggered by access to any address within the EBI CS3 region
* that has A21 and A22 clear. Command cycles are any access with bit A21
@@ -108,7 +116,10 @@ dev_write_1(struct at91_nand_softc *sc, bus_size_t offset, u_int8_t value)
static int
at91_nand_probe(device_t dev)
{
-
+#ifdef FDT
+ if (!ofw_bus_is_compatible(dev, "atmel,at91rm9200-nand"))
+ return (ENXIO);
+#endif
device_set_desc(dev, "AT91 Integrated NAND controller");
return (BUS_PROBE_DEFAULT);
}
@@ -274,5 +285,9 @@ static driver_t at91_nand_driver = {
};
static devclass_t at91_nand_devclass;
-DRIVER_MODULE(at91_nand, atmelarm, at91_nand_driver, at91_nand_devclass, 0, 0);
+#ifdef FDT
+DRIVER_MODULE(at91_nand, simplebus, at91_nand_driver, at91_nand_devclass, 0, 0);
+#else
+DRIVER_MODULE(at91_nand, atmelarm, at91_nand_driver, at91_nand_devclass, 0, 0);
+#endif
OpenPOWER on IntegriCloud