Commit a1681781 authored by Jean Delvare's avatar Jean Delvare Committed by Jean Delvare

i2c: Mention functionality flags in SMBus protocol documentation

While the mapping between I2C adapter functionality flags and
i2c_smbus_*() helper functions is rather obvious, let's still document
it for clarity.

Also drop the reference to 2 command byte I2C block reads, there is no
support for that in the kernel at the moment.
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
parent 8117e41e
...@@ -23,6 +23,12 @@ don't match these function names. For some of the operations which pass a ...@@ -23,6 +23,12 @@ don't match these function names. For some of the operations which pass a
single data byte, the functions using SMBus protocol operation names execute single data byte, the functions using SMBus protocol operation names execute
a different protocol operation entirely. a different protocol operation entirely.
Each transaction type corresponds to a functionality flag. Before calling a
transaction function, a device driver should always check (just once) for
the corresponding functionality flag to ensure that the underlying I2C
adapter supports the transaction in question. See
<file:Documentation/i2c/functionality> for the details.
Key to symbols Key to symbols
============== ==============
...@@ -49,6 +55,8 @@ This sends a single bit to the device, at the place of the Rd/Wr bit. ...@@ -49,6 +55,8 @@ This sends a single bit to the device, at the place of the Rd/Wr bit.
A Addr Rd/Wr [A] P A Addr Rd/Wr [A] P
Functionality flag: I2C_FUNC_SMBUS_QUICK
SMBus Receive Byte: i2c_smbus_read_byte() SMBus Receive Byte: i2c_smbus_read_byte()
========================================== ==========================================
...@@ -60,6 +68,8 @@ the previous SMBus command. ...@@ -60,6 +68,8 @@ the previous SMBus command.
S Addr Rd [A] [Data] NA P S Addr Rd [A] [Data] NA P
Functionality flag: I2C_FUNC_SMBUS_READ_BYTE
SMBus Send Byte: i2c_smbus_write_byte() SMBus Send Byte: i2c_smbus_write_byte()
======================================== ========================================
...@@ -69,6 +79,8 @@ to a device. See Receive Byte for more information. ...@@ -69,6 +79,8 @@ to a device. See Receive Byte for more information.
S Addr Wr [A] Data [A] P S Addr Wr [A] Data [A] P
Functionality flag: I2C_FUNC_SMBUS_WRITE_BYTE
SMBus Read Byte: i2c_smbus_read_byte_data() SMBus Read Byte: i2c_smbus_read_byte_data()
============================================ ============================================
...@@ -78,6 +90,8 @@ The register is specified through the Comm byte. ...@@ -78,6 +90,8 @@ The register is specified through the Comm byte.
S Addr Wr [A] Comm [A] S Addr Rd [A] [Data] NA P S Addr Wr [A] Comm [A] S Addr Rd [A] [Data] NA P
Functionality flag: I2C_FUNC_SMBUS_READ_BYTE_DATA
SMBus Read Word: i2c_smbus_read_word_data() SMBus Read Word: i2c_smbus_read_word_data()
============================================ ============================================
...@@ -88,6 +102,8 @@ byte. But this time, the data is a complete word (16 bits). ...@@ -88,6 +102,8 @@ byte. But this time, the data is a complete word (16 bits).
S Addr Wr [A] Comm [A] S Addr Rd [A] [DataLow] A [DataHigh] NA P S Addr Wr [A] Comm [A] S Addr Rd [A] [DataLow] A [DataHigh] NA P
Functionality flag: I2C_FUNC_SMBUS_READ_WORD_DATA
Note the convenience function i2c_smbus_read_word_swapped is Note the convenience function i2c_smbus_read_word_swapped is
available for reads where the two data bytes are the other way available for reads where the two data bytes are the other way
around (not SMBus compliant, but very popular.) around (not SMBus compliant, but very popular.)
...@@ -102,6 +118,8 @@ the Read Byte operation. ...@@ -102,6 +118,8 @@ the Read Byte operation.
S Addr Wr [A] Comm [A] Data [A] P S Addr Wr [A] Comm [A] Data [A] P
Functionality flag: I2C_FUNC_SMBUS_WRITE_BYTE_DATA
SMBus Write Word: i2c_smbus_write_word_data() SMBus Write Word: i2c_smbus_write_word_data()
============================================== ==============================================
...@@ -112,6 +130,8 @@ specified through the Comm byte. ...@@ -112,6 +130,8 @@ specified through the Comm byte.
S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] P S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] P
Functionality flag: I2C_FUNC_SMBUS_WRITE_WORD_DATA
Note the convenience function i2c_smbus_write_word_swapped is Note the convenience function i2c_smbus_write_word_swapped is
available for writes where the two data bytes are the other way available for writes where the two data bytes are the other way
around (not SMBus compliant, but very popular.) around (not SMBus compliant, but very popular.)
...@@ -126,6 +146,8 @@ This command selects a device register (through the Comm byte), sends ...@@ -126,6 +146,8 @@ This command selects a device register (through the Comm byte), sends
S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A]
S Addr Rd [A] [DataLow] A [DataHigh] NA P S Addr Rd [A] [DataLow] A [DataHigh] NA P
Functionality flag: I2C_FUNC_SMBUS_PROC_CALL
SMBus Block Read: i2c_smbus_read_block_data() SMBus Block Read: i2c_smbus_read_block_data()
============================================== ==============================================
...@@ -137,6 +159,8 @@ of data is specified by the device in the Count byte. ...@@ -137,6 +159,8 @@ of data is specified by the device in the Count byte.
S Addr Wr [A] Comm [A] S Addr Wr [A] Comm [A]
S Addr Rd [A] [Count] A [Data] A [Data] A ... A [Data] NA P S Addr Rd [A] [Count] A [Data] A [Data] A ... A [Data] NA P
Functionality flag: I2C_FUNC_SMBUS_READ_BLOCK_DATA
SMBus Block Write: i2c_smbus_write_block_data() SMBus Block Write: i2c_smbus_write_block_data()
================================================ ================================================
...@@ -147,6 +171,8 @@ Comm byte. The amount of data is specified in the Count byte. ...@@ -147,6 +171,8 @@ Comm byte. The amount of data is specified in the Count byte.
S Addr Wr [A] Comm [A] Count [A] Data [A] Data [A] ... [A] Data [A] P S Addr Wr [A] Comm [A] Count [A] Data [A] Data [A] ... [A] Data [A] P
Functionality flag: I2C_FUNC_SMBUS_WRITE_BLOCK_DATA
SMBus Block Write - Block Read Process Call SMBus Block Write - Block Read Process Call
=========================================== ===========================================
...@@ -160,6 +186,8 @@ This command selects a device register (through the Comm byte), sends ...@@ -160,6 +186,8 @@ This command selects a device register (through the Comm byte), sends
S Addr Wr [A] Comm [A] Count [A] Data [A] ... S Addr Wr [A] Comm [A] Count [A] Data [A] ...
S Addr Rd [A] [Count] A [Data] ... A P S Addr Rd [A] [Count] A [Data] ... A P
Functionality flag: I2C_FUNC_SMBUS_BLOCK_PROC_CALL
SMBus Host Notify SMBus Host Notify
================= =================
...@@ -229,15 +257,7 @@ designated register that is specified through the Comm byte. ...@@ -229,15 +257,7 @@ designated register that is specified through the Comm byte.
S Addr Wr [A] Comm [A] S Addr Wr [A] Comm [A]
S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P
Functionality flag: I2C_FUNC_SMBUS_READ_I2C_BLOCK
I2C Block Read (2 Comm bytes)
=============================
This command reads a block of bytes from a device, from a
designated register that is specified through the two Comm bytes.
S Addr Wr [A] Comm1 [A] Comm2 [A]
S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P
I2C Block Write: i2c_smbus_write_i2c_block_data() I2C Block Write: i2c_smbus_write_i2c_block_data()
...@@ -249,3 +269,5 @@ Comm byte. Note that command lengths of 0, 2, or more bytes are ...@@ -249,3 +269,5 @@ Comm byte. Note that command lengths of 0, 2, or more bytes are
supported as they are indistinguishable from data. supported as they are indistinguishable from data.
S Addr Wr [A] Comm [A] Data [A] Data [A] ... [A] Data [A] P S Addr Wr [A] Comm [A] Data [A] Data [A] ... [A] Data [A] P
Functionality flag: I2C_FUNC_SMBUS_WRITE_I2C_BLOCK
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment