svn commit: r261687 - head/sys/arm/at91

Warner Losh imp at FreeBSD.org
Sun Feb 9 21:01:10 UTC 2014


Author: imp
Date: Sun Feb  9 21:01:10 2014
New Revision: 261687
URL: http://svnweb.freebsd.org/changeset/base/261687

Log:
  Add TWI attachment for FDT. We're only matching the SAMG20 device for
  now, others to follow.

Modified:
  head/sys/arm/at91/at91_twi.c

Modified: head/sys/arm/at91/at91_twi.c
==============================================================================
--- head/sys/arm/at91/at91_twi.c	Sun Feb  9 21:00:22 2014	(r261686)
+++ head/sys/arm/at91/at91_twi.c	Sun Feb  9 21:01:10 2014	(r261687)
@@ -23,6 +23,8 @@
  * SUCH DAMAGE.
  */
 
+#include "opt_platform.h"
+
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
@@ -46,6 +48,12 @@ __FBSDID("$FreeBSD$");
 #include <dev/iicbus/iicbus.h>
 #include "iicbus_if.h"
 
+#ifdef FDT
+#include <dev/fdt/fdt_common.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+#endif
+
 #define	TWI_SLOW_CLOCK		 1500
 #define	TWI_FAST_CLOCK		45000
 #define	TWI_FASTEST_CLOCK	90000
@@ -104,7 +112,11 @@ static void at91_twi_deactivate(device_t
 static int
 at91_twi_probe(device_t dev)
 {
-
+#ifdef FDT
+	/* XXXX need a whole list, since there's at least 4 different ones */
+	if (!ofw_bus_is_compatible(dev, "atmel,at91sam9g20-i2c"))
+		return (ENXIO);
+#endif
 	device_set_desc(dev, "TWI");
 	return (0);
 }
@@ -397,7 +409,12 @@ static driver_t at91_twi_driver = {
 	sizeof(struct at91_twi_softc),
 };
 
+#ifdef FDT
+DRIVER_MODULE(at91_twi, simplebus, at91_twi_driver, at91_twi_devclass, NULL,
+    NULL);
+#else
 DRIVER_MODULE(at91_twi, atmelarm, at91_twi_driver, at91_twi_devclass, NULL,
     NULL);
+#endif
 DRIVER_MODULE(iicbus, at91_twi, iicbus_driver, iicbus_devclass, NULL, NULL);
 MODULE_DEPEND(at91_twi, iicbus, 1, 1, 1);


More information about the svn-src-head mailing list