summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zephyr/program/skyrim/src/usbc_config.c15
-rw-r--r--zephyr/program/skyrim/winterhold/project.conf3
2 files changed, 15 insertions, 3 deletions
diff --git a/zephyr/program/skyrim/src/usbc_config.c b/zephyr/program/skyrim/src/usbc_config.c
index 5319504069..4f2c43ce4c 100644
--- a/zephyr/program/skyrim/src/usbc_config.c
+++ b/zephyr/program/skyrim/src/usbc_config.c
@@ -244,7 +244,10 @@ static void reset_nct38xx_port(int port)
const struct gpio_dt_spec *reset_gpio_l;
const struct device *ioex_port0, *ioex_port1;
- /* TODO(b/225189538): Save and restore ioex signals */
+ /* The maximum pin numbers of the NCT38xx IO expander port is 8 */
+ gpio_flags_t saved_port0_flags[8] = { 0 };
+ gpio_flags_t saved_port1_flags[8] = { 0 };
+
if (port == USBC_PORT_C0) {
reset_gpio_l = GPIO_DT_FROM_NODELABEL(gpio_usb_c0_tcpc_rst_l);
ioex_port0 = DEVICE_DT_GET(DT_NODELABEL(ioex_c0_port0));
@@ -257,6 +260,10 @@ static void reset_nct38xx_port(int port)
/* Invalid port: do nothing */
return;
}
+ gpio_save_port_config(ioex_port0, saved_port0_flags,
+ ARRAY_SIZE(saved_port0_flags));
+ gpio_save_port_config(ioex_port1, saved_port1_flags,
+ ARRAY_SIZE(saved_port1_flags));
gpio_pin_set_dt(reset_gpio_l, 0);
msleep(NCT38XX_RESET_HOLD_DELAY_MS);
@@ -266,8 +273,10 @@ static void reset_nct38xx_port(int port)
msleep(NCT3807_RESET_POST_DELAY_MS);
/* Re-enable the IO expander pins */
- gpio_reset_port(ioex_port0);
- gpio_reset_port(ioex_port1);
+ gpio_restore_port_config(ioex_port0, saved_port0_flags,
+ ARRAY_SIZE(saved_port0_flags));
+ gpio_restore_port_config(ioex_port1, saved_port1_flags,
+ ARRAY_SIZE(saved_port1_flags));
}
void board_reset_pd_mcu(void)
diff --git a/zephyr/program/skyrim/winterhold/project.conf b/zephyr/program/skyrim/winterhold/project.conf
index 5c8087ddd8..4c0aba19ab 100644
--- a/zephyr/program/skyrim/winterhold/project.conf
+++ b/zephyr/program/skyrim/winterhold/project.conf
@@ -48,3 +48,6 @@ CONFIG_PLATFORM_EC_BODY_DETECTION=y
CONFIG_PLATFORM_EC_BODY_DETECTION_ALWAYS_ENABLE_IN_S0=y
CONFIG_PLATFORM_EC_BODY_DETECTION_NOTIFY_MODE_CHANGE=y
CONFIG_PLATFORM_EC_GESTURE_HOST_DETECTION=y
+
+# GPIO configuration
+CONFIG_GPIO_GET_CONFIG=y