Index: mcp980x.c
===================================================================
RCS file: /cvsroot/src/sys/dev/i2c/mcp980x.c,v
retrieving revision 1.1
diff -u -r1.1 mcp980x.c
--- mcp980x.c	6 May 2013 22:04:12 -0000	1.1
+++ mcp980x.c	27 May 2013 18:32:35 -0000
@@ -69,8 +69,9 @@
 static int mcp980x_match(device_t, cfdata_t, void *);
 static void mcp980x_attach(device_t, device_t, void *);
 
-/*static uint8_t mcp980x_reg_read_1(struct mcp980x_softc *sc, uint8_t);*/
+static uint8_t mcp980x_reg_read_1(struct mcp980x_softc *sc, uint8_t);
 static uint16_t mcp980x_reg_read_2(struct mcp980x_softc *sc, uint8_t reg);
+static uint8_t mcp980x_reg_write_1(struct mcp980x_softc *sc, uint8_t reg, uint8_t value);
 
 static uint32_t mcp980x_temperature(struct mcp980x_softc *sc);
 
@@ -105,6 +106,10 @@
 
 	mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE);
 
+	aprint_normal_dev(sc->sc_dev, "MCP980X_CONFIG %x\n", mcp980x_reg_read_1(sc, MCP980X_CONFIG));
+	mcp980x_reg_write_1(sc, MCP980X_CONFIG, 96);
+	aprint_normal_dev(sc->sc_dev, "MCP980X_CONFIG %x\n", mcp980x_reg_read_1(sc, MCP980X_CONFIG));
+
 	mcp980x_envsys_register(sc);
 }
 
@@ -132,21 +137,19 @@
 	return be16toh(rv);
 }
 
-/* Will need that later for reading config register. */ 
-/*
 static uint8_t
 mcp980x_reg_read_1(struct mcp980x_softc *sc, uint8_t reg)
 {
-	uint8_t rv, wbuf[2];
+	uint8_t rv, wbuf;
 
 	if (iic_acquire_bus(sc->sc_tag, I2C_F_POLL) != 0) {
 		aprint_error_dev(sc->sc_dev, "cannot acquire bus for read\n");
 		return 0;
 	}
 
-	wbuf[0] = reg;
+	wbuf = reg;
 
-	if (iic_exec(sc->sc_tag, I2C_OP_READ_WITH_STOP, sc->sc_addr, wbuf,
+	if (iic_exec(sc->sc_tag, I2C_OP_READ_WITH_STOP, sc->sc_addr, &wbuf,
 	    1, &rv, 1, I2C_F_POLL)) {
 		aprint_error_dev(sc->sc_dev, "cannot execute operation\n");
 		iic_release_bus(sc->sc_tag, I2C_F_POLL);
@@ -155,7 +158,18 @@
 	iic_release_bus(sc->sc_tag, I2C_F_POLL);
 
 	return rv;
-}*/
+}
+
+static uint8_t
+mcp980x_reg_write_1(struct mcp980x_softc *sc, uint8_t reg, uint8_t value)
+{
+	uint8_t cmdbuf[2];
+	cmdbuf[0] = reg;
+	cmdbuf[1] = value;
+
+	return iic_exec(sc->sc_tag, I2C_OP_WRITE_WITH_STOP,
+	    sc->sc_addr, cmdbuf, 1, &cmdbuf[1], 1, I2C_F_POLL);
+}
 
 /* Get temperature in microKelvins. */
 static uint32_t
