On Thu, Oct 22, 2015 at 12:17:58PM -0500, Ben Gardner wrote: > > The next issue is that the I2C-core isn't matching the device to the > > "at24" driver, which has the alias "24c02". > > Here is what I found. > i2c-core is creating the device with the ACPI name "24C02:00". > The at24 driver uses "24c02" as the alias. > i2c-code is matching devices to drivers using strcmp(). > > Result: no match. ("24c02" != "24C02:00"). > > If I modify acpi_i2c_add_device() to cut off the name at the ':' and > covert to lowercase when populating info.type, it matches and works. > I must be missing something here, because this would have never worked as-is. > I'll ask on the I2C mailing list. You should either use proper _HID/_CID for the device or put "PRP0001" to the _HID and let the match happen with DT .compatible strings. I've attached a hack that I use locally. The corresponding ASL fragment would look like: Device (AT24) { Name (_HID, "PRP0001") Method (_CRS, 0, Serialized) { Name (UBUF, ResourceTemplate () { I2cSerialBus (0x50, ControllerInitiated, 0x00061A80, AddressingMode7Bit, "\\_SB.I2C6", 0x00, ResourceConsumer) }) Return (UBUF) } Name (_DSD, Package () { ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), Package () { Package () {"compatible", "atmel,24c02"}, Package () {"size", 256}, Package () {"pagesize", 32}, Package () {"abs-value", 1}, }, }) Method (_STA, 0, NotSerialized) { Return (0xF) } }