svn commit: r268977 - in head/sys: arm/conf arm/freescale/imx boot/fdt/dts/arm

Ruslan Bukin br at FreeBSD.org
Tue Jul 22 04:39:34 UTC 2014


Author: br
Date: Tue Jul 22 04:39:32 2014
New Revision: 268977
URL: http://svnweb.freebsd.org/changeset/base/268977

Log:
  Enable Freescale i.MX I2C driver for i.MX6.

Modified:
  head/sys/arm/conf/IMX6
  head/sys/arm/freescale/imx/files.imx6
  head/sys/arm/freescale/imx/imx_i2c.c
  head/sys/boot/fdt/dts/arm/imx6.dtsi

Modified: head/sys/arm/conf/IMX6
==============================================================================
--- head/sys/arm/conf/IMX6	Tue Jul 22 04:39:16 2014	(r268976)
+++ head/sys/arm/conf/IMX6	Tue Jul 22 04:39:32 2014	(r268977)
@@ -154,8 +154,8 @@ options  	FREEBSD_BOOT_LOADER	# Process 
 
 # SoC-specific devices
 device  	ffec			# Freescale Fast Ethernet Controller
-#device  	fsliic			# Freescale i2c/iic (not ready yet)
-#device  	iic			# iic protocol
-#device  	iicbus			# iic bus
+device  	fsliic			# Freescale i2c/iic
+device  	iic			# iic protocol
+device  	iicbus			# iic bus
 #device  	imxwdt			# Watchdog. WARNING: can't be disabled!!!
 

Modified: head/sys/arm/freescale/imx/files.imx6
==============================================================================
--- head/sys/arm/freescale/imx/files.imx6	Tue Jul 22 04:39:16 2014	(r268976)
+++ head/sys/arm/freescale/imx/files.imx6	Tue Jul 22 04:39:32 2014	(r268977)
@@ -27,6 +27,7 @@ arm/freescale/imx/imx6_pl310.c		standard
 arm/freescale/imx/imx_machdep.c		standard
 arm/freescale/imx/imx_gpt.c		standard
 arm/freescale/imx/imx_gpio.c		optional gpio
+arm/freescale/imx/imx_i2c.c		optional fsliic
 
 #
 # Optional devices.
@@ -52,5 +53,4 @@ arm/freescale/imx/imx6_usbphy.c		optiona
 #
 #arm/freescale/imx/imx51_iomux.c  	optional iomux
 #dev/ata/chipsets/ata-fsl.c  		optional imxata
-#arm/freescale/imx/imx_i2c.c  		optional fsliic
 #arm/freescale/imx/imx51_ipuv3.c  	optional sc

Modified: head/sys/arm/freescale/imx/imx_i2c.c
==============================================================================
--- head/sys/arm/freescale/imx/imx_i2c.c	Tue Jul 22 04:39:16 2014	(r268976)
+++ head/sys/arm/freescale/imx/imx_i2c.c	Tue Jul 22 04:39:32 2014	(r268977)
@@ -86,6 +86,12 @@ __FBSDID("$FreeBSD$");
 #define debugf(fmt, args...)
 #endif
 
+static struct ofw_compat_data compat_data[] = {
+	{"fsl,imx6q-i2c",  1},
+	{"fsl,imx-i2c",	   1},
+	{NULL,             0}
+};
+
 struct i2c_softc {
 	device_t		dev;
 	device_t		iicbus;
@@ -227,7 +233,7 @@ i2c_probe(device_t dev)
 	if (!ofw_bus_status_okay(dev))
 		return (ENXIO);
 
-	if (!ofw_bus_is_compatible(dev, "fsl,imx-i2c"))
+	if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0)
 		return (ENXIO);
 
 	sc = device_get_softc(dev);
@@ -246,7 +252,7 @@ i2c_probe(device_t dev)
 	/* Enable I2C */
 	i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN);
 	bus_release_resource(dev, SYS_RES_MEMORY, sc->rid, sc->res);
-	device_set_desc(dev, "I2C bus controller");
+	device_set_desc(dev, "Freescale i.MX I2C bus controller");
 
 	return (BUS_PROBE_DEFAULT);
 }

Modified: head/sys/boot/fdt/dts/arm/imx6.dtsi
==============================================================================
--- head/sys/boot/fdt/dts/arm/imx6.dtsi	Tue Jul 22 04:39:16 2014	(r268976)
+++ head/sys/boot/fdt/dts/arm/imx6.dtsi	Tue Jul 22 04:39:32 2014	(r268977)
@@ -338,6 +338,27 @@
 			reg = <0x02100000 0x00100000>;
 			ranges;
 
+			i2c1: i2c at 021a0000 {
+				compatible = "fsl,imx6q-i2c";
+				reg = <0x021a0000 0x4000>;
+				interrupts = < 68 >;
+				status = "disabled";
+			};
+
+			i2c2: i2c at 021a4000 {
+				compatible = "fsl,imx6q-i2c";
+				reg = <0x021a4000 0x4000>;
+				interrupts = < 69 >;
+				status = "disabled";
+			};
+
+			i2c3: i2c at 021ac000 {
+				compatible = "fsl,imx6q-i2c";
+				reg = <0x021a8000 0x4000>;
+				interrupts = < 70 >;
+				status = "disabled";
+			};
+
 			fec1: ethernet at 02188000 {
 				compatible = "fsl,imx6q-fec";
 				reg = <0x02188000 0x4000>;


More information about the svn-src-head mailing list