src/drivers: Add reset/enable/stop_off_ms variables to ACPI devices
Some touchscreens need to adhere to certain timings during the power off sequence as well as during the power on sequence. Adding reset_off_delay_ms, enable_off_delay_ms, and stop_off_delay_ms to accommodate these devices. BUG=b:78311818 BRANCH=None TEST=./util/abuild/abuild -p none -t google/poppy -x -a Change-Id: Idb4a5dbe56eee4749d2f2b514e92c28fb2c6078f Signed-off-by: Shelley Chen <shchen@google.com> Reviewed-on: https://review.coreboot.org/25882 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
@@ -56,15 +56,21 @@ struct drivers_i2c_generic_config {
|
||||
/* 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;
|
||||
unsigned int reset_delay_ms;
|
||||
/* Delay to be inserted after device is put into reset. */
|
||||
unsigned int reset_off_delay_ms;
|
||||
/* GPIO used to enable device. */
|
||||
struct acpi_gpio enable_gpio;
|
||||
/* Delay to be inserted after device is enabled. */
|
||||
unsigned enable_delay_ms;
|
||||
unsigned int enable_delay_ms;
|
||||
/* Delay to be inserted after device is disabled. */
|
||||
unsigned int enable_off_delay_ms;
|
||||
/* GPIO used to stop operation of device. */
|
||||
struct acpi_gpio stop_gpio;
|
||||
/* Delay to be inserted after disabling stop. */
|
||||
unsigned stop_delay_ms;
|
||||
unsigned int stop_delay_ms;
|
||||
/* Delay to be inserted after enabling stop. */
|
||||
unsigned int stop_off_delay_ms;
|
||||
|
||||
/* Generic properties for exporting device-specific data to the OS */
|
||||
struct acpi_dp property_list[MAX_GENERIC_PROPERTY_LIST];
|
||||
|
@@ -142,11 +142,20 @@ void i2c_generic_fill_ssdt(struct device *dev,
|
||||
}
|
||||
|
||||
/* Power Resource */
|
||||
if (config->has_power_resource)
|
||||
acpi_device_add_power_res(
|
||||
&config->reset_gpio, config->reset_delay_ms,
|
||||
&config->enable_gpio, config->enable_delay_ms,
|
||||
&config->stop_gpio, config->stop_delay_ms);
|
||||
if (config->has_power_resource) {
|
||||
const struct acpi_power_res_params power_res_params = {
|
||||
&config->reset_gpio,
|
||||
config->reset_delay_ms,
|
||||
config->reset_off_delay_ms,
|
||||
&config->enable_gpio,
|
||||
config->enable_delay_ms,
|
||||
config->enable_off_delay_ms,
|
||||
&config->stop_gpio,
|
||||
config->stop_delay_ms,
|
||||
config->stop_off_delay_ms
|
||||
};
|
||||
acpi_device_add_power_res(&power_res_params);
|
||||
}
|
||||
|
||||
/* Callback if any. */
|
||||
if (callback)
|
||||
|
Reference in New Issue
Block a user