Linux 4.8.3
[linux/fpc-iii.git] / Documentation / acpi / i2c-muxes.txt
blob9fcc4f0b885e15a1f46e76f6bd630c609af71be5
1 ACPI I2C Muxes
2 --------------
4 Describing an I2C device hierarchy that includes I2C muxes requires an ACPI
5 Device () scope per mux channel.
7 Consider this topology:
9 +------+   +------+
10 | SMB1 |-->| MUX0 |--CH00--> i2c client A (0x50)
11 |      |   | 0x70 |--CH01--> i2c client B (0x50)
12 +------+   +------+
14 which corresponds to the following ASL:
16 Device (SMB1)
18     Name (_HID, ...)
19     Device (MUX0)
20     {
21         Name (_HID, ...)
22         Name (_CRS, ResourceTemplate () {
23             I2cSerialBus (0x70, ControllerInitiated, I2C_SPEED,
24                           AddressingMode7Bit, "^SMB1", 0x00,
25                           ResourceConsumer,,)
26         }
28         Device (CH00)
29         {
30             Name (_ADR, 0)
32             Device (CLIA)
33             {
34                 Name (_HID, ...)
35                 Name (_CRS, ResourceTemplate () {
36                     I2cSerialBus (0x50, ControllerInitiated, I2C_SPEED,
37                                   AddressingMode7Bit, "^CH00", 0x00,
38                                   ResourceConsumer,,)
39                 }
40             }
41         }
43         Device (CH01)
44         {
45             Name (_ADR, 1)
47             Device (CLIB)
48             {
49                 Name (_HID, ...)
50                 Name (_CRS, ResourceTemplate () {
51                     I2cSerialBus (0x50, ControllerInitiated, I2C_SPEED,
52                                   AddressingMode7Bit, "^CH01", 0x00,
53                                   ResourceConsumer,,)
54                 }
55             }
56         }
57     }