On Fri, Oct 23, 2015 at 3:20 AM, Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> wrote: > 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) > } > } I like this approach, as one change to the driver will support all ACPI devices. I'll give it a try. Thanks, Ben -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html