diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/acpi.c | 3 | ||||
-rw-r--r-- | common/usb_port_power_dumb.c | 9 | ||||
-rw-r--r-- | common/usb_port_power_smart.c | 7 |
3 files changed, 15 insertions, 4 deletions
diff --git a/common/acpi.c b/common/acpi.c index 6717732e06..c234347019 100644 --- a/common/acpi.c +++ b/common/acpi.c @@ -284,7 +284,8 @@ int acpi_ap_to_ec(int is_cmd, uint8_t value, uint8_t *resultptr) */ result = 0; for (i = 0; i < port_count; ++i) { - if (gpio_get_level(usb_port_enable[i]) != 0) + if ((usb_port_enable[i] >= 0) && + (gpio_get_level(usb_port_enable[i]) != 0)) result |= 1 << i; } break; diff --git a/common/usb_port_power_dumb.c b/common/usb_port_power_dumb.c index d298444fb7..ea2d4eb668 100644 --- a/common/usb_port_power_dumb.c +++ b/common/usb_port_power_dumb.c @@ -22,8 +22,13 @@ static uint8_t charge_mode[USB_PORT_COUNT]; static void usb_port_set_enabled(int port_id, int en) { - gpio_or_ioex_set_level(usb_port_enable[port_id], en); - charge_mode[port_id] = en; + /* + * Only enable valid ports. + */ + if (usb_port_enable[port_id] >= 0) { + gpio_or_ioex_set_level(usb_port_enable[port_id], en); + charge_mode[port_id] = en; + } } __maybe_unused static void usb_port_all_ports_on(void) diff --git a/common/usb_port_power_smart.c b/common/usb_port_power_smart.c index 170180cbab..3143bdf400 100644 --- a/common/usb_port_power_smart.c +++ b/common/usb_port_power_smart.c @@ -62,7 +62,12 @@ static void usb_charge_set_control_mode(int port_id, int mode) static void usb_charge_set_enabled(int port_id, int en) { ASSERT(port_id < CONFIG_USB_PORT_POWER_SMART_PORT_COUNT); - gpio_or_ioex_set_level(usb_port_enable[port_id], en); + /* + * Only enable valid ports. + */ + if (usb_port_enable[port_id] >= 0) { + gpio_or_ioex_set_level(usb_port_enable[port_id], en); + } } static void usb_charge_set_ilim(int port_id, int sel) |