svn commit: r192149 - in stable/7: share/man/man4 sys sys/contrib/pf sys/dev/ath/ath_hal sys/dev/cxgb sys/dev/ichsmb sys/dev/ipmi sys/dev/smbus sys/sys

John Baldwin jhb at FreeBSD.org
Fri May 15 18:50:31 UTC 2009


Author: jhb
Date: Fri May 15 18:50:30 2009
New Revision: 192149
URL: http://svn.freebsd.org/changeset/base/192149

Log:
  MFC: Change ichsmb(4) to follow the format of all the other smbus
  controllers for slave addressing by using left-adjusted slave addresses
  (i.e. xxxxxxx0b).

Modified:
  stable/7/share/man/man4/   (props changed)
  stable/7/share/man/man4/igb.4   (props changed)
  stable/7/share/man/man4/smb.4
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/dev/ichsmb/ichsmb.c
  stable/7/sys/dev/ipmi/ipmi_acpi.c
  stable/7/sys/dev/ipmi/ipmi_smbios.c
  stable/7/sys/dev/smbus/smb.c
  stable/7/sys/sys/param.h

Modified: stable/7/share/man/man4/smb.4
==============================================================================
--- stable/7/share/man/man4/smb.4	Fri May 15 18:25:44 2009	(r192148)
+++ stable/7/share/man/man4/smb.4	Fri May 15 18:50:30 2009	(r192149)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 25, 1998
+.Dd February 6, 2009
 .Dt SMB 4
 .Os
 .Sh NAME
@@ -72,6 +72,9 @@ The
 .Fa slave
 field is always used, and provides the address of the
 SMBus slave device to talk to.
+The slave address is specified in the seven most significant bits
+.Pq i.e. Dq "left-justified" .
+The least significant bit of the slave address must be zero.
 .Pp
 .Bl -column ".Dv SMB_QUICK_WRITE" -compact
 .It Em Ioctl Ta Em Description

Modified: stable/7/sys/dev/ichsmb/ichsmb.c
==============================================================================
--- stable/7/sys/dev/ichsmb/ichsmb.c	Fri May 15 18:25:44 2009	(r192148)
+++ stable/7/sys/dev/ichsmb/ichsmb.c	Fri May 15 18:50:30 2009	(r192149)
@@ -182,7 +182,7 @@ ichsmb_quick(device_t dev, u_char slave,
 		mtx_lock(&sc->mutex);
 		sc->ich_cmd = ICH_HST_CNT_SMB_CMD_QUICK;
 		bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA,
-		    (slave << 1) | (how == SMB_QREAD ?
+		    slave | (how == SMB_QREAD ?
 	    		ICH_XMIT_SLVA_READ : ICH_XMIT_SLVA_WRITE));
 		bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CNT,
 		    ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd);
@@ -208,7 +208,7 @@ ichsmb_sendb(device_t dev, u_char slave,
 	mtx_lock(&sc->mutex);
 	sc->ich_cmd = ICH_HST_CNT_SMB_CMD_BYTE;
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA,
-	    (slave << 1) | ICH_XMIT_SLVA_WRITE);
+	    slave | ICH_XMIT_SLVA_WRITE);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CMD, byte);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CNT,
 	    ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd);
@@ -230,7 +230,7 @@ ichsmb_recvb(device_t dev, u_char slave,
 	mtx_lock(&sc->mutex);
 	sc->ich_cmd = ICH_HST_CNT_SMB_CMD_BYTE;
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA,
-	    (slave << 1) | ICH_XMIT_SLVA_READ);
+	    slave | ICH_XMIT_SLVA_READ);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CNT,
 	    ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd);
 	if ((smb_error = ichsmb_wait(sc)) == SMB_ENOERR)
@@ -253,7 +253,7 @@ ichsmb_writeb(device_t dev, u_char slave
 	mtx_lock(&sc->mutex);
 	sc->ich_cmd = ICH_HST_CNT_SMB_CMD_BYTE_DATA;
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA,
-	    (slave << 1) | ICH_XMIT_SLVA_WRITE);
+	    slave | ICH_XMIT_SLVA_WRITE);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CMD, cmd);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_D0, byte);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CNT,
@@ -277,7 +277,7 @@ ichsmb_writew(device_t dev, u_char slave
 	mtx_lock(&sc->mutex);
 	sc->ich_cmd = ICH_HST_CNT_SMB_CMD_WORD_DATA;
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA,
-	    (slave << 1) | ICH_XMIT_SLVA_WRITE);
+	    slave | ICH_XMIT_SLVA_WRITE);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CMD, cmd);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_D0, word & 0xff);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_D1, word >> 8);
@@ -301,7 +301,7 @@ ichsmb_readb(device_t dev, u_char slave,
 	mtx_lock(&sc->mutex);
 	sc->ich_cmd = ICH_HST_CNT_SMB_CMD_BYTE_DATA;
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA,
-	    (slave << 1) | ICH_XMIT_SLVA_READ);
+	    slave | ICH_XMIT_SLVA_READ);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CMD, cmd);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CNT,
 	    ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd);
@@ -324,7 +324,7 @@ ichsmb_readw(device_t dev, u_char slave,
 	mtx_lock(&sc->mutex);
 	sc->ich_cmd = ICH_HST_CNT_SMB_CMD_WORD_DATA;
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA,
-	    (slave << 1) | ICH_XMIT_SLVA_READ);
+	    slave | ICH_XMIT_SLVA_READ);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CMD, cmd);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CNT,
 	    ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd);
@@ -352,7 +352,7 @@ ichsmb_pcall(device_t dev, u_char slave,
 	mtx_lock(&sc->mutex);
 	sc->ich_cmd = ICH_HST_CNT_SMB_CMD_PROC_CALL;
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA,
-	    (slave << 1) | ICH_XMIT_SLVA_WRITE);
+	    slave | ICH_XMIT_SLVA_WRITE);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CMD, cmd);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_D0, sdata & 0xff);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_D1, sdata >> 8);
@@ -403,7 +403,7 @@ ichsmb_bwrite(device_t dev, u_char slave
 	mtx_lock(&sc->mutex);
 	sc->ich_cmd = ICH_HST_CNT_SMB_CMD_BLOCK;
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA,
-	    (slave << 1) | ICH_XMIT_SLVA_WRITE);
+	    slave | ICH_XMIT_SLVA_WRITE);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CMD, cmd);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_D0, count);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_BLOCK_DB, buf[0]);
@@ -434,7 +434,7 @@ ichsmb_bread(device_t dev, u_char slave,
 	mtx_lock(&sc->mutex);
 	sc->ich_cmd = ICH_HST_CNT_SMB_CMD_BLOCK;
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA,
-	    (slave << 1) | ICH_XMIT_SLVA_READ);
+	    slave | ICH_XMIT_SLVA_READ);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CMD, cmd);
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_D0, *count); /* XXX? */
 	bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CNT,

Modified: stable/7/sys/dev/ipmi/ipmi_acpi.c
==============================================================================
--- stable/7/sys/dev/ipmi/ipmi_acpi.c	Fri May 15 18:25:44 2009	(r192148)
+++ stable/7/sys/dev/ipmi/ipmi_acpi.c	Fri May 15 18:50:30 2009	(r192149)
@@ -104,7 +104,7 @@ ipmi_acpi_attach(device_t dev)
 	case SSIF_MODE:
 		if (ACPI_FAILURE(acpi_GetInteger(devh, "_ADR", &flags)))
 			return (ENXIO);
-		info.address = flags >> 1;
+		info.address = flags;
 		device_printf(dev, "SSIF interface not supported on ACPI\n");
 		return (0);
 	default:

Modified: stable/7/sys/dev/ipmi/ipmi_smbios.c
==============================================================================
--- stable/7/sys/dev/ipmi/ipmi_smbios.c	Fri May 15 18:25:44 2009	(r192148)
+++ stable/7/sys/dev/ipmi/ipmi_smbios.c	Fri May 15 18:50:30 2009	(r192149)
@@ -154,10 +154,10 @@ smbios_t38_proc_info(uint8_t *p, char **
 	case SSIF_MODE:
 		if ((s->base_address & 0xffffffffffffff00) != 0) {
 			printf("SMBIOS: Invalid SSIF SMBus address, using BMC I2C slave address instead\n");
-			info->address = s->i2c_slave_address >> 1;
+			info->address = s->i2c_slave_address;
 			break;
 		}
-		info->address = IPMI_BAR_ADDR(s->base_address) >> 1;
+		info->address = IPMI_BAR_ADDR(s->base_address);
 		break;
 	default:
 		return;

Modified: stable/7/sys/dev/smbus/smb.c
==============================================================================
--- stable/7/sys/dev/smbus/smb.c	Fri May 15 18:25:44 2009	(r192148)
+++ stable/7/sys/dev/smbus/smb.c	Fri May 15 18:50:30 2009	(r192149)
@@ -195,6 +195,10 @@ smbioctl(struct cdev *dev, u_long cmd, c
 
 	parent = device_get_parent(smbdev);
 
+	/* Make sure that LSB bit is cleared. */
+	if (s->slave & 0x1)
+		return (EINVAL);
+
 	/* Allocate the bus. */
 	if ((error = smbus_request_bus(parent, smbdev,
 			(flags & O_NONBLOCK) ? SMB_DONTWAIT : (SMB_WAIT | SMB_INTR))))

Modified: stable/7/sys/sys/param.h
==============================================================================
--- stable/7/sys/sys/param.h	Fri May 15 18:25:44 2009	(r192148)
+++ stable/7/sys/sys/param.h	Fri May 15 18:50:30 2009	(r192149)
@@ -57,7 +57,7 @@
  *		is created, otherwise 1.
  */
 #undef __FreeBSD_version
-#define __FreeBSD_version 702100	/* Master, propagated to newvers */
+#define __FreeBSD_version 702101	/* Master, propagated to newvers */
 
 #ifndef LOCORE
 #include <sys/types.h>


More information about the svn-src-stable-7 mailing list