Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Apr 2016 02:27:02 +0000 (UTC)
From:      Justin Hibbits <jhibbits@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r297572 - head/sys/powerpc/mpc85xx
Message-ID:  <201604050227.u352R2PO011232@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhibbits
Date: Tue Apr  5 02:27:01 2016
New Revision: 297572
URL: https://svnweb.freebsd.org/changeset/base/297572

Log:
  Make i2c device child auto-probe work for MPC85xx and QorIQ SoCs.
  
  OFW i2c probing requires a new method ofw_bus_get_node(), and the bus device is
  assumed iichb.  With these changes, i2c devices attached in fdt are probed and
  attached automagically.

Modified:
  head/sys/powerpc/mpc85xx/i2c.c

Modified: head/sys/powerpc/mpc85xx/i2c.c
==============================================================================
--- head/sys/powerpc/mpc85xx/i2c.c	Tue Apr  5 01:12:56 2016	(r297571)
+++ head/sys/powerpc/mpc85xx/i2c.c	Tue Apr  5 02:27:01 2016	(r297572)
@@ -97,6 +97,7 @@ static int i2c_stop(device_t dev);
 static int i2c_reset(device_t dev, u_char speed, u_char addr, u_char *oldaddr);
 static int i2c_read(device_t dev, char *buf, int len, int *read, int last, int delay);
 static int i2c_write(device_t dev, const char *buf, int len, int *sent, int timeout);
+static phandle_t i2c_get_node(device_t bus, device_t dev);
 
 static device_method_t i2c_methods[] = {
 	DEVMETHOD(device_probe,			i2c_probe),
@@ -110,12 +111,13 @@ static device_method_t i2c_methods[] = {
 	DEVMETHOD(iicbus_read,			i2c_read),
 	DEVMETHOD(iicbus_write,			i2c_write),
 	DEVMETHOD(iicbus_transfer,		iicbus_transfer_gen),
+	DEVMETHOD(ofw_bus_get_node,		i2c_get_node),
 
 	{ 0, 0 }
 };
 
 static driver_t i2c_driver = {
-	"i2c",
+	"iichb",
 	i2c_methods,
 	sizeof(struct i2c_softc),
 };
@@ -425,3 +427,11 @@ i2c_write(device_t dev, const char *buf,
 
 	return (IIC_NOERR);
 }
+
+static phandle_t
+i2c_get_node(device_t bus, device_t dev)
+{
+
+	/* Share controller node with iibus device. */
+	return (ofw_bus_get_node(bus));
+}



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