drivers/spi/acpi: Add additional generic ACPI support

Add support for more ACPI features in the generic SPI ACPI
driver so it can be flexible enough to support more devices,
or devices in different configurations.

- add a wake pin
- add support for using IRQ GPIO instead of PIRQ
- add power resource support with enable and reset gpios

BUG=chrome-os-partner:61233
TEST=ensure existing SSDT generation is unchanged,
and test that new features generate expected code

Change-Id: Ibe37cc87e488004baa2c08a369f73c86e6cd6dce
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://review.coreboot.org/18393
Tested-by: build bot (Jenkins)
Reviewed-by: Furquan Shaikh <furquan@google.com>
diff --git a/src/drivers/spi/acpi/chip.h b/src/drivers/spi/acpi/chip.h
index f0cc941..6b541005 100644
--- a/src/drivers/spi/acpi/chip.h
+++ b/src/drivers/spi/acpi/chip.h
@@ -24,9 +24,29 @@
 	const char *name;		/* ACPI Device Name */
 	const char *desc;		/* Device Description */
 	unsigned uid;			/* ACPI _UID */
-	unsigned speed;		/* Bus speed in Hz (default 1MHz) */
+	unsigned speed;			/* Bus speed in Hz (default 1MHz) */
 	const char *compat_string;	/* Compatible string for _HID=PRP0001 */
 	struct acpi_irq irq;		/* Interrupt */
+	unsigned wake;			/* Wake GPE */
+
+	/* Use GPIO based interrupt instead of PIRQ */
+	struct acpi_gpio irq_gpio;
+
+	/* Disable reset and enable GPIO export in _CRS */
+	bool disable_gpio_export_in_crs;
+
+	/* Does the device have a power resource? */
+	bool has_power_resource;
+
+	/* GPIO used to take device out of reset or to put it into reset. */
+	struct acpi_gpio reset_gpio;
+	/* Delay to be inserted after device is taken out of reset. */
+	unsigned reset_delay_ms;
+
+	/* GPIO used to enable device. */
+	struct acpi_gpio enable_gpio;
+	/* Delay to be inserted after device is enabled. */
+	unsigned enable_delay_ms;
 };
 
 #endif /* __SPI_ACPI_CHIP_H__ */