Module Name: src Committed By: jdc Date: Sun Jan 3 17:32:17 UTC 2016
Modified Files: src/sys/arch/sparc64/dev: pcfiic_ebus.c src/sys/dev/ic: pcf8584.c pcf8584reg.h pcf8584var.h Log Message: Remove duplicate register definitions and merge them all into pcf8584reg.h. No functional change. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/sparc64/dev/pcfiic_ebus.c cvs rdiff -u -r1.12 -r1.13 src/sys/dev/ic/pcf8584.c cvs rdiff -u -r1.1 -r1.2 src/sys/dev/ic/pcf8584reg.h cvs rdiff -u -r1.4 -r1.5 src/sys/dev/ic/pcf8584var.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/sparc64/dev/pcfiic_ebus.c diff -u src/sys/arch/sparc64/dev/pcfiic_ebus.c:1.4 src/sys/arch/sparc64/dev/pcfiic_ebus.c:1.5 --- src/sys/arch/sparc64/dev/pcfiic_ebus.c:1.4 Sun Feb 3 17:46:28 2013 +++ src/sys/arch/sparc64/dev/pcfiic_ebus.c Sun Jan 3 17:32:17 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: pcfiic_ebus.c,v 1.4 2013/02/03 17:46:28 jdc Exp $ */ +/* $NetBSD: pcfiic_ebus.c,v 1.5 2016/01/03 17:32:17 jdc Exp $ */ /* $OpenBSD: pcfiic_ebus.c,v 1.13 2008/06/08 03:07:40 deraadt Exp $ */ /* @@ -18,7 +18,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pcfiic_ebus.c,v 1.4 2013/02/03 17:46:28 jdc Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pcfiic_ebus.c,v 1.5 2016/01/03 17:32:17 jdc Exp $"); /* * Device specific driver for the EBus i2c devices found on some sun4u @@ -42,6 +42,7 @@ __KERNEL_RCSID(0, "$NetBSD: pcfiic_ebus. #include <dev/i2c/i2cvar.h> #include <dev/ic/pcf8584var.h> +#include <dev/ic/pcf8584reg.h> int pcfiic_ebus_match(device_t, struct cfdata *, void *); void pcfiic_ebus_attach(device_t, device_t, void *); @@ -94,7 +95,7 @@ pcfiic_ebus_attach(device_t parent, devi struct ebus_attach_args *ea = aux; char compat[32]; u_int64_t addr; - u_int8_t clock = PCF_CLOCK_12 | PCF_FREQ_90; + u_int8_t clock = PCF8584_CLK_12 | PCF8584_SCL_90; int swapregs = 0; if (ea->ea_nreg < 1 || ea->ea_nreg > 2) { @@ -113,9 +114,9 @@ pcfiic_ebus_attach(device_t parent, devi int clk = prom_getpropint(findroot(), "clock-frequency", 0); if (clk < 105000000) - clock = PCF_CLOCK_3 | PCF_FREQ_90; + clock = PCF8584_CLK_3 | PCF8584_SCL_90; else if (clk < 160000000) - clock = PCF_CLOCK_4_43 | PCF_FREQ_90; + clock = PCF8584_CLK_4_43 | PCF8584_SCL_90; swapregs = 1; } @@ -161,10 +162,10 @@ pcfiic_ebus_attach(device_t parent, devi if (strcmp(ea->ea_name, "SUNW,envctrl") == 0) { envctrl_props(create_dict(self), ea->ea_node); - pcfiic_attach(sc, 0x55, PCF_CLOCK_12 | PCF_FREQ_45, 0); + pcfiic_attach(sc, 0x55, PCF8584_CLK_12 | PCF8584_SCL_45, 0); } else if (strcmp(ea->ea_name, "SUNW,envctrltwo") == 0) { envctrltwo_props(create_dict(self), ea->ea_node); - pcfiic_attach(sc, 0x55, PCF_CLOCK_12 | PCF_FREQ_45, 0); + pcfiic_attach(sc, 0x55, PCF8584_CLK_12 | PCF8584_SCL_45, 0); } else pcfiic_attach(sc, (i2c_addr_t)(addr >> 1), clock, swapregs); } Index: src/sys/dev/ic/pcf8584.c diff -u src/sys/dev/ic/pcf8584.c:1.12 src/sys/dev/ic/pcf8584.c:1.13 --- src/sys/dev/ic/pcf8584.c:1.12 Wed Dec 16 08:04:58 2015 +++ src/sys/dev/ic/pcf8584.c Sun Jan 3 17:32:17 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: pcf8584.c,v 1.12 2015/12/16 08:04:58 jdc Exp $ */ +/* $NetBSD: pcf8584.c,v 1.13 2016/01/03 17:32:17 jdc Exp $ */ /* $OpenBSD: pcf8584.c,v 1.9 2007/10/20 18:46:21 kettenis Exp $ */ /* @@ -29,36 +29,13 @@ #include <dev/i2c/i2cvar.h> #include <dev/ic/pcf8584var.h> +#include <dev/ic/pcf8584reg.h> -#define PCF_S0 0x00 -#define PCF_S1 0x01 -#define PCF_S2 0x02 -#define PCF_S3 0x03 - -#define PCF_CTRL_ACK (1<<0) -#define PCF_CTRL_STO (1<<1) -#define PCF_CTRL_STA (1<<2) -#define PCF_CTRL_ENI (1<<3) -#define PCF_CTRL_ES2 (1<<4) -#define PCF_CTRL_ES1 (1<<5) -#define PCF_CTRL_ESO (1<<6) -#define PCF_CTRL_PIN (1<<7) - -#define PCF_CTRL_START (PCF_CTRL_PIN | PCF_CTRL_ESO | \ - PCF_CTRL_STA | PCF_CTRL_ACK) -#define PCF_CTRL_STOP (PCF_CTRL_PIN | PCF_CTRL_ESO | \ - PCF_CTRL_STO | PCF_CTRL_ACK) -#define PCF_CTRL_REPSTART (PCF_CTRL_ESO | PCF_CTRL_STA | PCF_CTRL_ACK) -#define PCF_CTRL_IDLE (PCF_CTRL_PIN | PCF_CTRL_ESO | PCF_CTRL_ACK) - -#define PCF_STAT_nBB (1<<0) -#define PCF_STAT_LAB (1<<1) -#define PCF_STAT_AAS (1<<2) -#define PCF_STAT_AD0 (1<<3) -#define PCF_STAT_LRB (1<<3) -#define PCF_STAT_BER (1<<4) -#define PCF_STAT_STS (1<<5) -#define PCF_STAT_PIN (1<<7) +/* Internal egisters */ +#define PCF8584_S0 0x00 +#define PCF8584_S1 0x01 +#define PCF8584_S2 0x02 +#define PCF8584_S3 0x03 void pcfiic_init(struct pcfiic_softc *); int pcfiic_i2c_acquire_bus(void *, int); @@ -74,22 +51,22 @@ int pcfiic_recv(struct pcfiic_softc *, u_int8_t pcfiic_read(struct pcfiic_softc *, bus_size_t); void pcfiic_write(struct pcfiic_softc *, bus_size_t, u_int8_t); void pcfiic_choose_bus(struct pcfiic_softc *, u_int8_t); -int pcfiic_wait_nBB(struct pcfiic_softc *); +int pcfiic_wait_BBN(struct pcfiic_softc *); int pcfiic_wait_pin(struct pcfiic_softc *, volatile u_int8_t *); void pcfiic_init(struct pcfiic_softc *sc) { /* init S1 */ - pcfiic_write(sc, PCF_S1, PCF_CTRL_PIN); + pcfiic_write(sc, PCF8584_S1, PCF8584_CTRL_PIN); /* own address */ - pcfiic_write(sc, PCF_S0, sc->sc_addr); + pcfiic_write(sc, PCF8584_S0, sc->sc_addr); /* select clock reg */ - pcfiic_write(sc, PCF_S1, PCF_CTRL_PIN|PCF_CTRL_ES1); - pcfiic_write(sc, PCF_S0, sc->sc_clock); + pcfiic_write(sc, PCF8584_S1, PCF8584_CTRL_PIN | PCF8584_CTRL_ES1); + pcfiic_write(sc, PCF8584_S0, sc->sc_clock); - pcfiic_write(sc, PCF_S1, PCF_CTRL_IDLE); + pcfiic_write(sc, PCF8584_S1, PCF8584_CMD_IDLE); delay(200000); /* Multi-Master mode, wait for longest i2c message */ } @@ -101,11 +78,11 @@ pcfiic_attach(struct pcfiic_softc *sc, i struct i2cbus_attach_args iba; if (swapregs) { - sc->sc_regmap[PCF_S1] = PCF_S0; - sc->sc_regmap[PCF_S0] = PCF_S1; + sc->sc_regmap[PCF8584_S1] = PCF8584_S0; + sc->sc_regmap[PCF8584_S0] = PCF8584_S1; } else { - sc->sc_regmap[PCF_S0] = PCF_S0; - sc->sc_regmap[PCF_S1] = PCF_S1; + sc->sc_regmap[PCF8584_S0] = PCF8584_S0; + sc->sc_regmap[PCF8584_S1] = PCF8584_S1; } sc->sc_clock = clock; sc->sc_addr = addr; @@ -208,27 +185,27 @@ pcfiic_xmit(struct pcfiic_softc *sc, u_i int i, err = 0; volatile u_int8_t r; - if (pcfiic_wait_nBB(sc) != 0) + if (pcfiic_wait_BBN(sc) != 0) return (1); - pcfiic_write(sc, PCF_S0, addr << 1); - pcfiic_write(sc, PCF_S1, PCF_CTRL_START); + pcfiic_write(sc, PCF8584_S0, addr << 1); + pcfiic_write(sc, PCF8584_S1, PCF8584_CMD_START); for (i = 0; i <= len; i++) { if (pcfiic_wait_pin(sc, &r) != 0) { - pcfiic_write(sc, PCF_S1, PCF_CTRL_STOP); + pcfiic_write(sc, PCF8584_S1, PCF8584_CMD_STOP); return (1); } - if (r & PCF_STAT_LRB) { + if (r & PCF8584_STATUS_LRB) { err = 1; break; } if (i < len) - pcfiic_write(sc, PCF_S0, buf[i]); + pcfiic_write(sc, PCF8584_S0, buf[i]); } - pcfiic_write(sc, PCF_S1, PCF_CTRL_STOP); + pcfiic_write(sc, PCF8584_S1, PCF8584_CMD_STOP); return (err); } @@ -238,30 +215,30 @@ pcfiic_recv(struct pcfiic_softc *sc, u_i int i = 0, err = 0; volatile u_int8_t r; - if (pcfiic_wait_nBB(sc) != 0) + if (pcfiic_wait_BBN(sc) != 0) return (1); - pcfiic_write(sc, PCF_S0, (addr << 1) | 0x01); - pcfiic_write(sc, PCF_S1, PCF_CTRL_START); + pcfiic_write(sc, PCF8584_S0, (addr << 1) | 0x01); + pcfiic_write(sc, PCF8584_S1, PCF8584_CMD_START); for (i = 0; i <= len; i++) { if (pcfiic_wait_pin(sc, &r) != 0) { - pcfiic_write(sc, PCF_S1, PCF_CTRL_STOP); + pcfiic_write(sc, PCF8584_S1, PCF8584_CMD_STOP); return (1); } - if ((i != len) && (r & PCF_STAT_LRB)) { - pcfiic_write(sc, PCF_S1, PCF_CTRL_STOP); + if ((i != len) && (r & PCF8584_STATUS_LRB)) { + pcfiic_write(sc, PCF8584_S1, PCF8584_CMD_STOP); return (1); } if (i == len - 1) { - pcfiic_write(sc, PCF_S1, PCF_CTRL_ESO); + pcfiic_write(sc, PCF8584_S1, PCF8584_CMD_NAK); } else if (i == len) { - pcfiic_write(sc, PCF_S1, PCF_CTRL_STOP); + pcfiic_write(sc, PCF8584_S1, PCF8584_CMD_STOP); } - r = pcfiic_read(sc, PCF_S0); + r = pcfiic_read(sc, PCF8584_S0); if (i > 0) buf[i - 1] = r; } @@ -280,7 +257,7 @@ void pcfiic_write(struct pcfiic_softc *sc, bus_size_t r, u_int8_t v) { bus_space_write_1(sc->sc_iot, sc->sc_ioh, sc->sc_regmap[r], v); - (void)bus_space_read_1(sc->sc_iot, sc->sc_ioh, PCF_S1); + (void)bus_space_read_1(sc->sc_iot, sc->sc_ioh, PCF8584_S1); } void @@ -292,12 +269,12 @@ pcfiic_choose_bus(struct pcfiic_softc *s } int -pcfiic_wait_nBB(struct pcfiic_softc *sc) +pcfiic_wait_BBN(struct pcfiic_softc *sc) { int i; for (i = 0; i < 1000; i++) { - if (pcfiic_read(sc, PCF_S1) & PCF_STAT_nBB) + if (pcfiic_read(sc, PCF8584_S1) & PCF8584_STATUS_BBN) return (0); delay(1000); } @@ -310,8 +287,8 @@ pcfiic_wait_pin(struct pcfiic_softc *sc, int i; for (i = 0; i < 1000; i++) { - *r = pcfiic_read(sc, PCF_S1); - if ((*r & PCF_STAT_PIN) == 0) + *r = pcfiic_read(sc, PCF8584_S1); + if ((*r & PCF8584_STATUS_PIN) == 0) return (0); delay(1000); } Index: src/sys/dev/ic/pcf8584reg.h diff -u src/sys/dev/ic/pcf8584reg.h:1.1 src/sys/dev/ic/pcf8584reg.h:1.2 --- src/sys/dev/ic/pcf8584reg.h:1.1 Sat Apr 14 19:33:30 2007 +++ src/sys/dev/ic/pcf8584reg.h Sun Jan 3 17:32:17 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: pcf8584reg.h,v 1.1 2007/04/14 19:33:30 tnn Exp $ */ +/* $NetBSD: pcf8584reg.h,v 1.2 2016/01/03 17:32:17 jdc Exp $ */ /* Written by Tobias Nygren. Released into the public domain. */ @@ -39,8 +39,12 @@ #define PCF8584_REG_S2 PCF8584_CTRL_ES1 /* clock register */ #define PCF8584_REG_S3 PCF8584_CTRL_ES2 /* Interrupt vector */ -#define PCF8584_CMD_START (PCF8584_CTRL_PIN | PCF8584_CTRL_ESO | \ +#define PCF8584_CMD_START (PCF8584_CTRL_PIN | PCF8584_CTRL_ESO | \ PCF8584_CTRL_STA | PCF8584_CTRL_ACK) -#define PCF8584_CMD_STOP (PCF8584_CTRL_PIN | PCF8584_CTRL_ESO | \ +#define PCF8584_CMD_STOP (PCF8584_CTRL_PIN | PCF8584_CTRL_ESO | \ PCF8584_CTRL_STO | PCF8584_CTRL_ACK) +#define PCF8584_CMD_REPSTART (PCF8584_CTRL_ESO | PCF8584_CTRL_STA | \ + PCF8584_CTRL_ACK) +#define PCF8584_CMD_IDLE (PCF8584_CTRL_PIN | PCF8584_CTRL_ESO | \ + PCF8584_CTRL_ACK) #define PCF8584_CMD_NAK (PCF8584_CTRL_ESO) Index: src/sys/dev/ic/pcf8584var.h diff -u src/sys/dev/ic/pcf8584var.h:1.4 src/sys/dev/ic/pcf8584var.h:1.5 --- src/sys/dev/ic/pcf8584var.h:1.4 Sun Feb 28 11:47:28 2010 +++ src/sys/dev/ic/pcf8584var.h Sun Jan 3 17:32:17 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: pcf8584var.h,v 1.4 2010/02/28 11:47:28 martin Exp $ */ +/* $NetBSD: pcf8584var.h,v 1.5 2016/01/03 17:32:17 jdc Exp $ */ /* $OpenBSD: pcf8584var.h,v 1.5 2007/10/20 18:46:21 kettenis Exp $ */ /* @@ -34,18 +34,5 @@ struct pcfiic_softc { krwlock_t sc_lock; }; -/* clock divisor settings */ -#define PCF_CLOCK_3 0x00 /* 3 MHz */ -#define PCF_CLOCK_4_43 0x10 /* 4.43 MHz */ -#define PCF_CLOCK_6 0x14 /* 6 MHz */ -#define PCF_CLOCK_8 0x18 /* 8 MHz */ -#define PCF_CLOCK_12 0x1c /* 12 MHz */ - -/* SCL frequency settings */ -#define PCF_FREQ_90 0x00 /* 90 kHz */ -#define PCF_FREQ_45 0x01 /* 45 kHz */ -#define PCF_FREQ_11 0x02 /* 11 kHz */ -#define PCF_FREQ_1_5 0x03 /* 1.5 kHz */ - void pcfiic_attach(struct pcfiic_softc *, i2c_addr_t, u_int8_t, int); int pcfiic_intr(void *);