@@ -31,38 +31,45 @@ implement all the common SMBus protocol semantics or messages.
31
31
Terminology
32
32
===========
33
33
34
- The I2C bus connects one or more *controller * chips and one or more *target *
35
- chips.
36
-
34
+ The I2C bus connects one or more controller chips and one or more target chips.
37
35
38
36
.. kernel-figure :: i2c_bus.svg
39
37
:alt: Simple I2C bus with one controller and 3 targets
40
38
41
39
Simple I2C bus
42
40
43
41
A **controller ** chip is a node that starts communications with targets. In the
44
- Linux kernel implementation it is called an ** adapter ** or bus. Adapter
45
- drivers are in the ``drivers/i2c/busses/ `` subdirectory.
42
+ Linux kernel implementation it is also called an " adapter" or " bus". Controller
43
+ drivers are usually in the ``drivers/i2c/busses/ `` subdirectory.
46
44
47
- An **algorithm ** contains general code that can be used to implement a
48
- whole class of I2C adapters . Each specific adapter driver either depends on
49
- an algorithm driver in the ``drivers/i2c/algos/ `` subdirectory, or includes
50
- its own implementation.
45
+ An **algorithm ** contains general code that can be used to implement a whole
46
+ class of I2C controllers . Each specific controller driver either depends on an
47
+ algorithm driver in the ``drivers/i2c/algos/ `` subdirectory, or includes its
48
+ own implementation.
51
49
52
50
A **target ** chip is a node that responds to communications when addressed by a
53
- controller. In the Linux kernel implementation it is called a ** client **. While
54
- targets are usually separate external chips, Linux can also act as a target
55
- (needs hardware support) and respond to another controller on the bus. This is
56
- then called a **local target **. In contrast, an external chip is called a
57
- **remote target **.
51
+ controller. In the Linux kernel implementation it is also called a " client".
52
+ While targets are usually separate external chips, Linux can also act as a
53
+ target (needs hardware support) and respond to another controller on the bus.
54
+ This is then called a **local target **. In contrast, an external chip is called
55
+ a **remote target **.
58
56
59
57
Target drivers are kept in a directory specific to the feature they provide,
60
58
for example ``drivers/gpio/ `` for GPIO expanders and ``drivers/media/i2c/ `` for
61
59
video-related chips.
62
60
63
- For the example configuration in figure, you will need a driver for your
64
- I2C adapter, and drivers for your I2C devices (usually one driver for each
65
- device).
61
+ For the example configuration in the figure above, you will need one driver for
62
+ the I2C controller, and drivers for your I2C targets. Usually one driver for
63
+ each target.
64
+
65
+ Synonyms
66
+ --------
67
+
68
+ As mentioned above, the Linux I2C implementation historically uses the terms
69
+ "adapter" for controller and "client" for target. A number of data structures
70
+ have these synonyms in their name. So, when discussing implementation details,
71
+ you should be aware of these terms as well. The official wording is preferred,
72
+ though.
66
73
67
74
Outdated terminology
68
75
--------------------
0 commit comments