Hi Folks, I've been trying to use an ASL to help me add a bunch of I2C devices to my platform; to start with, I'd like to just add an I2C MUX, but have so far been unable to get the kernel to add my I2C device. I suspect this might have something to do with the I2C adapter being under a MFD driver, but am hoping I might be able to get a few pointers from here to help me get this working. I've defined the following ASL: #define I2C_SPEED 100000 #define ACPI_DT_NAMESPACE_HID "PRP0001" DefinitionBlock ("example.aml", "SSDT", 5, "vendor", "board", 1) { External (\_SB.PCI0.SBRG.CPLD, DeviceObj) Scope (\_SB.PCI0.SBRG.CPLD) { Device (MUX0) { Name (_HID, ACPI_DT_NAMESPACE_HID) Name (_DDN, "NXP PCA9546 I2C Mux") Name (_CRS, ResourceTemplate() { I2cSerialBus(0x77, ControllerInitiated, I2C_SPEED , AddressingMode7Bit, "\\_SB.PCI0.SBRG.CPLD", 0x00, ResourceConsumer,,) }) Name (_DSD, Package () { ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), Package () { Package () { "compatible", "nxp,pca9546" }, } }) } } } I'm able to load the corresponding aml by 'cat'ing into /sys/kernel/config/acpi/table/mytable/aml. This loads without any errors, and I can see my new node appear in /sys: root@694b71 [x86]:~# ls /sys/bus/acpi/devices/KEM0001\:00/ PRP0001:00/ modalias physical_node/ physical_node2/ physical_node4/ status uevent hid path physical_node1/ physical_node3/ power/ subsystem/ uid root@694b71 [x86]:~# ls /sys/bus/acpi/devices/KEM0001\:00/PRP0001\:00/ hid modalias path power subsystem uevent Unfortunately, it doesn't add the i2c device and the I2C address (0x77) remains unclaimed: root@694b71 [x86]:~# i2cdetect -y 0 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- 0c -- -- -- 10: -- -- -- -- 14 15 16 -- 18 19 1a 1b -- 1d -- -- 20: 20 -- -- 23 24 -- -- -- -- -- -- -- -- -- -- 2f 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- 44 45 46 -- -- -- 4a 4b -- 4d -- -- 50: 50 51 -- -- -- 55 -- -- -- -- -- -- -- -- -- -- 60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- 77 The I2C adapter is from drivers/i2c/busses/i2c-kempld.c, which is loaded by drivers/mfd/kempld-core.c. I can manually add the device (successfully) by echo'ing the appropriate line into i2c-1/new_device, but this isn't the approach I want to take for adding I2C devices to this platform, particularly as some of them will require a number of configuration elements that are normally set via a device tree (on OF platforms). Any thoughts on what I might be doing wrong here? Or what changes I might need to make to the existing drivers to make this work? Thanks, Chris