From 0ec50298bbd50c044af133ce44cb646be26b7e8f Mon Sep 17 00:00:00 2001 From: Tang Qijun Date: Wed, 26 Apr 2023 20:54:18 +0800 Subject: crystaldrift: enable usb hub power control usb typeA hub power is controlled by gpio45 BRANCH=skyrim BUG=b:260771028 TEST=test usb typeA function is ok Change-Id: I55ecb26a0b5e56407618df305a588055d48ba55e Signed-off-by: Tang Qijun Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4478813 Reviewed-by: Chao Gui Commit-Queue: Chao Gui --- zephyr/program/skyrim/crystaldrift/CMakeLists.txt | 1 + zephyr/program/skyrim/crystaldrift/project.overlay | 3 +++ zephyr/program/skyrim/crystaldrift/src/board.c | 24 ++++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 zephyr/program/skyrim/crystaldrift/src/board.c diff --git a/zephyr/program/skyrim/crystaldrift/CMakeLists.txt b/zephyr/program/skyrim/crystaldrift/CMakeLists.txt index 2ba70f5e25..354846a232 100644 --- a/zephyr/program/skyrim/crystaldrift/CMakeLists.txt +++ b/zephyr/program/skyrim/crystaldrift/CMakeLists.txt @@ -8,5 +8,6 @@ zephyr_library_sources( "src/ppc_config.c" "src/form_factor.c" "src/keyboard.c" + "src/board.c" ) zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_FAN "src/fan.c") diff --git a/zephyr/program/skyrim/crystaldrift/project.overlay b/zephyr/program/skyrim/crystaldrift/project.overlay index f03949cfa4..bf4e420367 100644 --- a/zephyr/program/skyrim/crystaldrift/project.overlay +++ b/zephyr/program/skyrim/crystaldrift/project.overlay @@ -37,6 +37,9 @@ gpio_ec_chg_led_b: ec_chg_led_b { gpios = <&gpio8 0 GPIO_OUTPUT_LOW>; }; + gpio_ec_usbhub_en: ec_usbhub_en { + gpios = <&gpio4 5 GPIO_OUTPUT_HIGH>; + }; }; gpio-interrupts { diff --git a/zephyr/program/skyrim/crystaldrift/src/board.c b/zephyr/program/skyrim/crystaldrift/src/board.c new file mode 100644 index 0000000000..a6ce70585a --- /dev/null +++ b/zephyr/program/skyrim/crystaldrift/src/board.c @@ -0,0 +1,24 @@ +/* Copyright 2023 The ChromiumOS Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "chipset.h" +#include "console.h" +#include "cros_board_info.h" +#include "hooks.h" + +#include + +static void check_usbhub_en(void) +{ + if (chipset_in_state(CHIPSET_STATE_ANY_OFF) && + gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(gpio_ec_usbhub_en))) { + gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_ec_usbhub_en), 0); + } else if (!chipset_in_state(CHIPSET_STATE_ANY_OFF) && + !gpio_pin_get_dt( + GPIO_DT_FROM_NODELABEL(gpio_ec_usbhub_en))) { + gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_ec_usbhub_en), 1); + } +} +DECLARE_HOOK(HOOK_SECOND, check_usbhub_en, HOOK_PRIO_DEFAULT); -- cgit v1.2.1