drivers/i2c/da7219: Allow GPIO based interrupt
Allow specifying the DA7219 interrupt pin as either an Interrupt or
GpioInt.
BUG=b:72121803
TEST=(with whole patch series) Grunt Kernel discovers DA7219 on i2c0
Change-Id: I2d26731bf4c0ad590dad2c5d26c252371f415f9a
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Reviewed-on: https://review.coreboot.org/23657
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-by: Justin TerAvest <teravest@chromium.org>
diff --git a/src/drivers/i2c/da7219/chip.h b/src/drivers/i2c/da7219/chip.h
index 823b940..572d727 100644
--- a/src/drivers/i2c/da7219/chip.h
+++ b/src/drivers/i2c/da7219/chip.h
@@ -8,6 +8,9 @@
/* Interrupt configuration */
struct acpi_irq irq;
+ /* Use GPIO based interrupt instead of PIRQ */
+ struct acpi_gpio irq_gpio;
+
/* I2C Bus Frequency in Hertz (default 400kHz) */
unsigned bus_speed;
diff --git a/src/drivers/i2c/da7219/da7219.c b/src/drivers/i2c/da7219/da7219.c
index 4eef00c..c0f152d 100644
--- a/src/drivers/i2c/da7219/da7219.c
+++ b/src/drivers/i2c/da7219/da7219.c
@@ -57,7 +57,11 @@
acpigen_write_name("_CRS");
acpigen_write_resourcetemplate_header();
acpi_device_write_i2c(&i2c);
- acpi_device_write_interrupt(&config->irq);
+ /* Use either Interrupt() or GpioInt() */
+ if (config->irq_gpio.pin_count)
+ acpi_device_write_gpio(&config->irq_gpio);
+ else
+ acpi_device_write_interrupt(&config->irq);
acpigen_write_resourcetemplate_footer();
/* AAD Child Device Properties */