Module Name:    src
Committed By:   hkenken
Date:           Mon Aug  5 12:21:00 UTC 2019

Modified Files:
        src/sys/arch/arm/imx/fdt: imx6_i2c.c
        src/sys/dev/i2c: motoi2c.c motoi2cvar.h

Log Message:
Add support FDT.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/imx/fdt/imx6_i2c.c
cvs rdiff -u -r1.4 -r1.5 src/sys/dev/i2c/motoi2c.c \
    src/sys/dev/i2c/motoi2cvar.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/imx/fdt/imx6_i2c.c
diff -u src/sys/arch/arm/imx/fdt/imx6_i2c.c:1.1 src/sys/arch/arm/imx/fdt/imx6_i2c.c:1.2
--- src/sys/arch/arm/imx/fdt/imx6_i2c.c:1.1	Tue Jul 30 06:52:57 2019
+++ src/sys/arch/arm/imx/fdt/imx6_i2c.c	Mon Aug  5 12:21:00 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: imx6_i2c.c,v 1.1 2019/07/30 06:52:57 hkenken Exp $	*/
+/*	$NetBSD: imx6_i2c.c,v 1.2 2019/08/05 12:21:00 hkenken Exp $	*/
 /*-
  * Copyright (c) 2019 Genetec Corporation.  All rights reserved.
  * Written by Hashimoto Kenichi for Genetec Corporation.
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: imx6_i2c.c,v 1.1 2019/07/30 06:52:57 hkenken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: imx6_i2c.c,v 1.2 2019/08/05 12:21:00 hkenken Exp $");
 
 #include <sys/bus.h>
 
@@ -75,6 +75,9 @@ imxi2c_attach(device_t parent __unused, 
 	if (error)
 		freq = 100000;
 	imxi2c_set_freq(self, clk_get_rate(sc->sc_clk), freq);
+
+	sc->sc_motoi2c.sc_phandle = phandle;
+
 	imxi2c_attach_common(parent, self, bst, addr, size, -1, 0);
 }
 

Index: src/sys/dev/i2c/motoi2c.c
diff -u src/sys/dev/i2c/motoi2c.c:1.4 src/sys/dev/i2c/motoi2c.c:1.5
--- src/sys/dev/i2c/motoi2c.c:1.4	Sun Apr 17 15:14:59 2011
+++ src/sys/dev/i2c/motoi2c.c	Mon Aug  5 12:21:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: motoi2c.c,v 1.4 2011/04/17 15:14:59 phx Exp $ */
+/* $NetBSD: motoi2c.c,v 1.5 2019/08/05 12:21:00 hkenken Exp $ */
 
 /*-
  * Copyright (c) 2007, 2010 The NetBSD Foundation, Inc.
@@ -30,7 +30,11 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: motoi2c.c,v 1.4 2011/04/17 15:14:59 phx Exp $");
+__KERNEL_RCSID(0, "$NetBSD: motoi2c.c,v 1.5 2019/08/05 12:21:00 hkenken Exp $");
+
+#if defined(__arm__) || defined(__aarch64__)
+#include "opt_fdt.h"
+#endif
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -43,6 +47,10 @@ __KERNEL_RCSID(0, "$NetBSD: motoi2c.c,v 
 #include <dev/i2c/motoi2creg.h>
 #include <dev/i2c/motoi2cvar.h>
 
+#ifdef FDT
+#include <dev/fdt/fdtvar.h>
+#endif
+
 #ifdef DEBUG
 int motoi2c_debug = 0;
 #define	DPRINTF(x)	if (motoi2c_debug) printf x
@@ -50,6 +58,20 @@ int motoi2c_debug = 0;
 #define	DPRINTF(x)
 #endif
 
+#ifdef FDT
+static i2c_tag_t
+motoi2c_get_tag(device_t dev)
+{
+	struct motoi2c_softc * const sc = device_private(dev);
+
+	return &sc->sc_i2c;
+}
+
+static const struct fdtbus_i2c_controller_func motoi2c_funcs = {
+	.get_tag = motoi2c_get_tag,
+};
+#endif
+
 static int  motoi2c_acquire_bus(void *, int);
 static void motoi2c_release_bus(void *, int);
 static int  motoi2c_exec(void *, i2c_op_t, i2c_addr_t, const void *, size_t,
@@ -111,7 +133,14 @@ motoi2c_attach_common(device_t self, str
 	I2C_WRITE(I2CADR, i2c->i2c_adr);	/* our slave address is 0x7f */
 	I2C_WRITE(I2CSR, 0);		/* clear status flags */
 
+#ifdef FDT
+	KASSERT(sc->sc_phandle != 0);
+	fdtbus_register_i2c_controller(self, sc->sc_phandle, &motoi2c_funcs);
+
+	fdtbus_attach_i2cbus(self, sc->sc_phandle, &sc->sc_i2c, iicbus_print);
+#else
 	config_found_ia(self, "i2cbus", &iba, iicbus_print);
+#endif
 }
 
 static int
Index: src/sys/dev/i2c/motoi2cvar.h
diff -u src/sys/dev/i2c/motoi2cvar.h:1.4 src/sys/dev/i2c/motoi2cvar.h:1.5
--- src/sys/dev/i2c/motoi2cvar.h:1.4	Sun Apr 17 15:14:59 2011
+++ src/sys/dev/i2c/motoi2cvar.h	Mon Aug  5 12:21:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: motoi2cvar.h,v 1.4 2011/04/17 15:14:59 phx Exp $ */
+/* $NetBSD: motoi2cvar.h,v 1.5 2019/08/05 12:21:00 hkenken Exp $ */
 
 /*-
  * Copyright (c) 2007, 2010 The NetBSD Foundation, Inc.
@@ -51,6 +51,7 @@ struct motoi2c_softc {
 	kmutex_t		sc_buslock;
 	motoi2c_iord_t		sc_iord;
 	motoi2c_iowr_t		sc_iowr;
+	int			sc_phandle;
 };
 
 #define	MOTOI2C_ADR_DEFAULT	(0x7e << 1)

Reply via email to