^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ==============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) ACPI I2C Muxes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) ==============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) Describing an I2C device hierarchy that includes I2C muxes requires an ACPI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) Device () scope per mux channel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) Consider this topology::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) +------+ +------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) | SMB1 |-->| MUX0 |--CH00--> i2c client A (0x50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) | | | 0x70 |--CH01--> i2c client B (0x50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) +------+ +------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) which corresponds to the following ASL::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) Device (SMB1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) Name (_HID, ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) Device (MUX0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) Name (_HID, ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) Name (_CRS, ResourceTemplate () {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) I2cSerialBus (0x70, ControllerInitiated, I2C_SPEED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) AddressingMode7Bit, "^SMB1", 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) ResourceConsumer,,)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) Device (CH00)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) Name (_ADR, 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) Device (CLIA)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) Name (_HID, ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) Name (_CRS, ResourceTemplate () {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) I2cSerialBus (0x50, ControllerInitiated, I2C_SPEED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) AddressingMode7Bit, "^CH00", 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) ResourceConsumer,,)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) Device (CH01)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) Name (_ADR, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) Device (CLIB)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) Name (_HID, ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) Name (_CRS, ResourceTemplate () {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) I2cSerialBus (0x50, ControllerInitiated, I2C_SPEED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) AddressingMode7Bit, "^CH01", 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) ResourceConsumer,,)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) }