Module Name:    src
Committed By:   macallan
Date:           Fri Sep 15 21:34:42 UTC 2017

Modified Files:
        src/sys/arch/macppc/dev: ki2c.c ki2cvar.h

Log Message:
bus_space-ify


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/macppc/dev/ki2c.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/macppc/dev/ki2cvar.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/macppc/dev/ki2c.c
diff -u src/sys/arch/macppc/dev/ki2c.c:1.20 src/sys/arch/macppc/dev/ki2c.c:1.21
--- src/sys/arch/macppc/dev/ki2c.c:1.20	Tue Sep  5 17:21:09 2017
+++ src/sys/arch/macppc/dev/ki2c.c	Fri Sep 15 21:34:42 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: ki2c.c,v 1.20 2017/09/05 17:21:09 macallan Exp $	*/
+/*	$NetBSD: ki2c.c,v 1.21 2017/09/15 21:34:42 macallan Exp $	*/
 /*	Id: ki2c.c,v 1.7 2002/10/05 09:56:05 tsubai Exp	*/
 
 /*-
@@ -45,8 +45,8 @@
 
 int ki2c_match(device_t, cfdata_t, void *);
 void ki2c_attach(device_t, device_t, void *);
-inline u_int ki2c_readreg(struct ki2c_softc *, int);
-inline void ki2c_writereg(struct ki2c_softc *, int, u_int);
+inline uint8_t ki2c_readreg(struct ki2c_softc *, int);
+inline void ki2c_writereg(struct ki2c_softc *, int, uint8_t);
 u_int ki2c_getmode(struct ki2c_softc *);
 void ki2c_setmode(struct ki2c_softc *, u_int);
 u_int ki2c_getspeed(struct ki2c_softc *);
@@ -95,6 +95,7 @@ ki2c_attach(device_t parent, device_t se
 	u_int reg[20];
 
 	sc->sc_dev = self;
+	sc->sc_tag = ca->ca_tag;
 	ca->ca_reg[0] += ca->ca_baseaddr;
 
 	if (OF_getprop(node, "AAPL,i2c-rate", &rate, 4) != 4) {
@@ -105,7 +106,11 @@ ki2c_attach(device_t parent, device_t se
 		aprint_error(": unable to find i2c address\n");
 		return;
 	}
-	sc->sc_reg = mapiodev(addr, PAGE_SIZE, false);
+	if (bus_space_map(sc->sc_tag, addr, PAGE_SIZE, 0, &sc->sc_bh) != 0) {
+		aprint_error_dev(sc->sc_dev, "failed to map registers\n");
+		return;
+	}
+
 	if (OF_getprop(node, "AAPL,address-step", &sc->sc_regstep, 4) != 4) {
 		aprint_error(": unable to find i2c address step\n");
 		return;
@@ -200,21 +205,18 @@ ki2c_print(void *aux, const char *ki2c)
 	return UNCONF;
 }
 
-u_int
+uint8_t
 ki2c_readreg(struct ki2c_softc *sc, int reg)
 {
-	u_char *addr = sc->sc_reg + sc->sc_regstep * reg;
 
-	return *addr;
+	return bus_space_read_1(sc->sc_tag, sc->sc_bh, sc->sc_regstep * reg);
 }
 
 void
-ki2c_writereg(struct ki2c_softc *sc, int reg, u_int val)
+ki2c_writereg(struct ki2c_softc *sc, int reg, uint8_t val)
 {
-	u_char *addr = sc->sc_reg + sc->sc_regstep * reg;
-
-	*addr = val;
-	__asm volatile ("eieio");
+	
+	bus_space_write_1(sc->sc_tag, sc->sc_bh, reg * sc->sc_regstep, val);
 	delay(10);
 }
 

Index: src/sys/arch/macppc/dev/ki2cvar.h
diff -u src/sys/arch/macppc/dev/ki2cvar.h:1.4 src/sys/arch/macppc/dev/ki2cvar.h:1.5
--- src/sys/arch/macppc/dev/ki2cvar.h:1.4	Tue Jul 26 08:36:02 2011
+++ src/sys/arch/macppc/dev/ki2cvar.h	Fri Sep 15 21:34:42 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: ki2cvar.h,v 1.4 2011/07/26 08:36:02 macallan Exp $	*/
+/*	$NetBSD: ki2cvar.h,v 1.5 2017/09/15 21:34:42 macallan Exp $	*/
 /*	Id: ki2c.c,v 1.7 2002/10/05 09:56:05 tsubai Exp	*/
 
 /*-
@@ -33,6 +33,7 @@
 #include <sys/param.h>
 #include <sys/device.h>
 #include <sys/systm.h>
+#include <machine/autoconf.h>
 
 #include <dev/i2c/i2cvar.h>
 
@@ -84,7 +85,8 @@
 
 struct ki2c_softc {
 	device_t sc_dev;
-	u_char *sc_reg;
+	bus_space_tag_t sc_tag;
+	bus_space_handle_t sc_bh;
 	int sc_regstep;
 	
 	struct i2c_controller sc_i2c;

Reply via email to