aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/usb/acpi/usb_acpi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/usb/acpi/usb_acpi.c')
-rw-r--r--src/drivers/usb/acpi/usb_acpi.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/drivers/usb/acpi/usb_acpi.c b/src/drivers/usb/acpi/usb_acpi.c
index 55ef1d361f..8a597e3e9e 100644
--- a/src/drivers/usb/acpi/usb_acpi.c
+++ b/src/drivers/usb/acpi/usb_acpi.c
@@ -11,9 +11,10 @@
static bool usb_acpi_add_gpios_to_crs(struct drivers_usb_acpi_config *cfg)
{
/*
- * Return false if reset GPIO is not provided.
+ * Return false if reset GPIO is not provided or is provided as part of power
+ * resource.
*/
- if (cfg->reset_gpio.pin_count == 0)
+ if (cfg->has_power_resource || cfg->reset_gpio.pin_count == 0)
return false;
return true;
@@ -61,6 +62,21 @@ static void usb_acpi_fill_ssdt_generator(const struct device *dev)
acpi_dp_write(dsd);
}
+ 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,
+ NULL,
+ 0,
+ 0
+ };
+ acpi_device_add_power_res(&power_res_params);
+ }
+
acpigen_pop_len();
printk(BIOS_INFO, "%s: %s at %s\n", path,