drivers/i2c/generic: Allow mainboards to export reset and enable GPIOs

Add power management type config option that allows mainboards to
either:
1. Define a power resource that uses the reset and enable gpios to
power on and off the device using _ON and _OFF methods, or
2. Export reset and enable GPIOs in _CRS and _DSD so that the OS can
directly toggle the GPIOs as required.

GPIO type needs to be updated in drivers_i2c_generic_config to use
acpi_gpio type so that it can be used for both the above cases.

BUG=chrome-os-partner:60194
BRANCH=None
TEST=Verified that elan touchscreen works fine on reef using exported
GPIOs.

Change-Id: I4d76f193f615cfc4520869dedc55505c109042f6
Signed-off-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-on: https://review.coreboot.org/17797
Tested-by: build bot (Jenkins)
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
This commit is contained in:
Furquan Shaikh
2016-12-12 09:23:01 -08:00
committed by Martin Roth
parent c804826be9
commit 98915bb7a9
3 changed files with 74 additions and 20 deletions

View File

@ -19,6 +19,11 @@
#include <arch/acpi_device.h>
#include <device/i2c.h>
enum power_mgmt_type {
POWER_RESOURCE = 1,
GPIO_EXPORT = 2,
};
struct drivers_i2c_generic_config {
const char *hid; /* ACPI _HID (required) */
const char *cid; /* ACPI _CID */
@ -42,12 +47,15 @@ struct drivers_i2c_generic_config {
unsigned device_present_gpio;
unsigned device_present_gpio_invert;
/* Power management type. */
enum power_mgmt_type pwr_mgmt_type;
/* GPIO used to take device out of reset or to put it into reset. */
unsigned reset_gpio;
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. */
unsigned enable_gpio;
struct acpi_gpio enable_gpio;
/* Delay to be inserted after device is enabled. */
unsigned enable_delay_ms;
};