Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Jan 2013 22:36:10 +0000 (UTC)
From:      Aleksandr Rybalko <ray@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r245626 - projects/efika_mx/sys/arm/freescale/imx
Message-ID:  <201301182236.r0IMaAvW069743@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ray
Date: Fri Jan 18 22:36:09 2013
New Revision: 245626
URL: http://svnweb.freebsd.org/changeset/base/245626

Log:
  Allow to attach I2C children based on FDT info.
  
  Sponsored by:	FreeBSD Foundation

Modified:
  projects/efika_mx/sys/arm/freescale/imx/i2c.c

Modified: projects/efika_mx/sys/arm/freescale/imx/i2c.c
==============================================================================
--- projects/efika_mx/sys/arm/freescale/imx/i2c.c	Fri Jan 18 22:33:09 2013	(r245625)
+++ projects/efika_mx/sys/arm/freescale/imx/i2c.c	Fri Jan 18 22:36:09 2013	(r245626)
@@ -49,6 +49,8 @@ __FBSDID("$FreeBSD$");
 #include <dev/iicbus/iicbus.h>
 #include "iicbus_if.h"
 
+#include <dev/fdt/fdt_common.h>
+#include <dev/ofw/openfirm.h>
 #include <dev/ofw/ofw_bus.h>
 #include <dev/ofw/ofw_bus_subr.h>
 
@@ -94,6 +96,7 @@ struct i2c_softc {
 	bus_space_tag_t		bst;
 };
 
+static phandle_t i2c_get_node(device_t, device_t);
 static int i2c_probe(device_t);
 static int i2c_attach(device_t);
 
@@ -108,6 +111,9 @@ static device_method_t i2c_methods[] = {
 	DEVMETHOD(device_probe,			i2c_probe),
 	DEVMETHOD(device_attach,		i2c_attach),
 
+	/* OFW methods */
+	DEVMETHOD(ofw_bus_get_node,		i2c_get_node),
+
 	DEVMETHOD(iicbus_callback,		iicbus_null_callback),
 	DEVMETHOD(iicbus_repeated_start,	i2c_repeated_start),
 	DEVMETHOD(iicbus_start,			i2c_start),
@@ -121,7 +127,7 @@ static device_method_t i2c_methods[] = {
 };
 
 static driver_t i2c_driver = {
-	"i2c",
+	"iichb",
 	i2c_methods,
 	sizeof(struct i2c_softc),
 };
@@ -130,6 +136,15 @@ static devclass_t  i2c_devclass;
 DRIVER_MODULE(i2c, simplebus, i2c_driver, i2c_devclass, 0, 0);
 DRIVER_MODULE(iicbus, i2c, iicbus_driver, iicbus_devclass, 0, 0);
 
+static phandle_t
+i2c_get_node(device_t bus, device_t dev)
+{
+	/*
+	 * Share controller node with iicbus device
+	 */
+	return ofw_bus_get_node(bus);
+}
+
 static __inline void
 i2c_write_reg(struct i2c_softc *sc, bus_size_t off, uint8_t val)
 {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201301182236.r0IMaAvW069743>