summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2016-12-24 14:44:25 +0000
committeravg <avg@FreeBSD.org>2016-12-24 14:44:25 +0000
commitbffa1ca0c4dd974aa3539c58415911c66ea5b49e (patch)
tree771f0d3eda6136045d2b40287601974461c422c2
parentfcc65d966eaac8a8bbdff7cfcf30b47970bd1f17 (diff)
downloadFreeBSD-src-bffa1ca0c4dd974aa3539c58415911c66ea5b49e.zip
FreeBSD-src-bffa1ca0c4dd974aa3539c58415911c66ea5b49e.tar.gz
MFC r308242: smbus: remove smbus_trans / SMB_TRANS
This change reverts most of r281985. The method did not map to anything defined by SMBus protocol and could not be implemented for SMBus controllers. This change is obviously not backwards compatible, but I have good reasons to believe that there have never been any users of SMB_TRANS.
-rw-r--r--share/man/man4/smb.427
-rw-r--r--sys/dev/smbus/smb.c18
-rw-r--r--sys/dev/smbus/smb.h7
-rw-r--r--sys/dev/smbus/smbconf.h19
-rw-r--r--sys/dev/smbus/smbus_if.m17
5 files changed, 2 insertions, 86 deletions
diff --git a/share/man/man4/smb.4 b/share/man/man4/smb.4
index de053f4..82202a4 100644
--- a/share/man/man4/smb.4
+++ b/share/man/man4/smb.4
@@ -162,33 +162,6 @@ to the device, then reads
bytes of data that from the device.
This data is returned in the buffer pointed to by
.Fa rbuf .
-.It Dv SMB_TRANS Ta
-.Em Trans
-sends an SMB roll-up transaction with flags that also allow it to
-be used for (mostly) I2C pass-through and with 10-bit addresses.
-This function can be utilized to roll up all of the above functions.
-It first sends the byte from
-.Fa cmd
-to the device, followed by
-.Fa wcount
-bytes of data that are taken from the buffer pointed to by
-.Fa wbuf ,
-then reads
-.Fa rcount
-bytes of data that from the device.
-This data is returned in the buffer pointed to by
-.Fa rbuf .
-.Pp
-The following flags are allowed in
-.Fa op :
-.Pp
-.Bd -literal -compact
-SMB_TRANS_NOSTOP Do not send STOP at end
-SMB_TRANS_NOCMD Ignore cmd field (do not tx)
-SMB_TRANS_NOCNT Do not tx or rx count field
-SMB_TRANS_7BIT Change address mode to 7-bit
-SMB_TRANS_10BIT Change address mode to 10-bit
-.Ed
.El
.Pp
The
diff --git a/sys/dev/smbus/smb.c b/sys/dev/smbus/smb.c
index 6d9aa8a..5f6eff0 100644
--- a/sys/dev/smbus/smb.c
+++ b/sys/dev/smbus/smb.c
@@ -301,24 +301,6 @@ smbioctl(struct cdev *dev, u_long cmd, caddr_t data, int flags, struct thread *t
error = copyout(buf, s->rbuf, s->rcount);
break;
- case SMB_TRANS:
- if (s->rcount < 0 || s->wcount < 0) {
- error = EINVAL;
- break;
- }
- if (s->rcount > SMB_MAXBLOCKSIZE)
- s->rcount = SMB_MAXBLOCKSIZE;
- if (s->wcount > SMB_MAXBLOCKSIZE)
- s->wcount = SMB_MAXBLOCKSIZE;
- if (s->wcount)
- error = copyin(s->wbuf, buf, s->wcount);
- if (error)
- break;
- error = smbus_error(smbus_trans(parent, s->slave, s->cmd,
- s->op, buf, s->wcount, buf, s->rcount, &s->rcount));
- if (error == 0)
- error = copyout(buf, s->rbuf, s->rcount);
- break;
default:
error = ENOTTY;
}
diff --git a/sys/dev/smbus/smb.h b/sys/dev/smbus/smb.h
index fec2d67..b766a65 100644
--- a/sys/dev/smbus/smb.h
+++ b/sys/dev/smbus/smb.h
@@ -54,11 +54,8 @@ struct smbcmd {
/*
* SMBus spec 2.0 says block transfers may be at most 32 bytes.
- * We use SMBus for i2c as well, make the size limit something more
- * reasonable. Keep in mind that a char buf array is declared on the
- * kernel stack.
*/
-#define SMB_MAXBLOCKSIZE 1024
+#define SMB_MAXBLOCKSIZE 32
#define SMB_QUICK_WRITE _IOW('i', 1, struct smbcmd)
#define SMB_QUICK_READ _IOW('i', 2, struct smbcmd)
@@ -71,6 +68,6 @@ struct smbcmd {
#define SMB_PCALL _IOWR('i', 9, struct smbcmd)
#define SMB_BWRITE _IOW('i', 10, struct smbcmd)
#define SMB_BREAD _IOWR('i', 11, struct smbcmd)
-#define SMB_TRANS _IOWR('i', 12, struct smbcmd)
+#define SMB_OLD_TRANS _IOWR('i', 12, struct smbcmd)
#endif
diff --git a/sys/dev/smbus/smbconf.h b/sys/dev/smbus/smbconf.h
index 2c120c1..ceb80ac 100644
--- a/sys/dev/smbus/smbconf.h
+++ b/sys/dev/smbus/smbconf.h
@@ -72,25 +72,6 @@
#define SMB_QREAD 0x1
/*
- * smbus transction op with pass-thru capabilities
- *
- * This smbus function is capable of doing a smbus command transaction
- * (read or write), and can be flagged to not issue the 'cmd' and/or
- * issue or expect a count field as well as flagged for chaining (no STOP),
- * which gives it an i2c pass-through capability.
- *
- * NOSTOP- Caller chaining transactions, do not issue STOP
- * NOCMD- Do not transmit the command field
- * NOCNT- Do not transmit (wr) or expect (rd) the count field
- */
-#define SMB_TRANS_NOSTOP 0x0001 /* do not send STOP at end */
-#define SMB_TRANS_NOCMD 0x0002 /* ignore cmd field (do not tx) */
-#define SMB_TRANS_NOCNT 0x0004 /* do not tx or rx count field */
-#define SMB_TRANS_7BIT 0x0008 /* change address mode to 7-bit */
-#define SMB_TRANS_10BIT 0x0010 /* change address mode to 10-bit */
-#define SMB_TRANS_NOREPORT 0x0020 /* do not report errors */
-
-/*
* ivars codes
*/
enum smbus_ivars {
diff --git a/sys/dev/smbus/smbus_if.m b/sys/dev/smbus/smbus_if.m
index 6a5acf5..d969e25 100644
--- a/sys/dev/smbus/smbus_if.m
+++ b/sys/dev/smbus/smbus_if.m
@@ -149,20 +149,3 @@ METHOD int bread {
u_char *count;
char *buf;
};
-
-#
-# SMB roll-up transaction with flags that also allow it to be
-# used for (mostly) i2c pass-through and with 10-bit addresses.
-# This function can be used to roll-up all of the above functions.
-#
-METHOD int trans {
- device_t dev;
- int slave;
- char cmd;
- int op;
- char *wbuf;
- int wcount;
- char *rbuf;
- int rcount;
- int *actualp;
-};
OpenPOWER on IntegriCloud