From 21a097aedc2b5a45bd55e1a6fb61a21f0ff43e07 Mon Sep 17 00:00:00 2001 From: Duncan Laurie Date: Wed, 11 May 2016 09:50:59 -0700 Subject: i2c: Add a generic i2c driver This adds a generic I2C driver that can be described in the devicetree and used to generate ACPI objects in the SSDT based on the information provided in the config registers. The I2C bus can be configured and the device can provide an interrupt and wake capability to the OS. A configuration option allows for a GPIO to be provided that will be checked to determine if the device is preset on the board before including it in the generated SSDT. The driver is generic enough to be used for basic I2C devices that do not have special configuration needs such as touchpads, touchscreens, sensors, some audio codec/amplifiers, etc. Sample usage for a touchpad device: device pci 15.1 on chip drivers/i2c/generic register "hid" = ""ELAN0000"" register "desc" = "ELAN Touchpad" register "irq" = "IRQ_EDGE_LOW(GPP_B3_IRQ)" register "wake" = "GPE0_DW0_05" device i2c 15.0 on end end end Will result in the following code in the SSDT: Scope (\_SB.PCI0.I2C1) { Device (D015) { Name (_HID, "ELAN0000") Name (_UID, 0) Name (_S0W, 4) Name (_PRW, Package () { 5, 3 }) Method (_STA) { Return (0x0f) } Name (_CRS, ResourceTemplate () { I2cSerialBus (0x15, ControllerInitiated, 400000, AddressingMode7Bit, "\\_S.PCI0.I2C1", 0, ResourceConsumer) Interrupt (ResourceConsumer, Edge, ActiveLow) { 51 } }) } } Change-Id: Ib32055720835b70e91ede5e4028ecd91894d70d5 Signed-off-by: Duncan Laurie Reviewed-on: https://review.coreboot.org/15016 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- src/drivers/i2c/generic/Kconfig | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 src/drivers/i2c/generic/Kconfig (limited to 'src/drivers/i2c/generic/Kconfig') diff --git a/src/drivers/i2c/generic/Kconfig b/src/drivers/i2c/generic/Kconfig new file mode 100644 index 0000000000..a4c01048aa --- /dev/null +++ b/src/drivers/i2c/generic/Kconfig @@ -0,0 +1,2 @@ +config DRIVERS_I2C_GENERIC + bool -- cgit v1.2.3