diff options
author | Madhurima Paruchuri <mparuchuri@google.com> | 2023-03-15 18:53:13 +0000 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-04-12 12:23:45 +0000 |
commit | 48cde011ac52a82e5c34d8b50a17c1ae63deaa45 (patch) | |
tree | d6fdeefc8bfc2888ac36232abd6a9553d1943bdc /zephyr/shim | |
parent | 41f8e65766df34f701417e4b234bc863c3e1f072 (diff) | |
download | chrome-ec-48cde011ac52a82e5c34d8b50a17c1ae63deaa45.tar.gz |
retimer: Add driver for ANX7452 retimer
BUG=b:267589042
BRANCH=None
TEST=./twister -s drivers/drivers.anx7452 -c --coverage
Change-Id: I99be488d82a58a5d38a2afcef0966b9c3236074d
Signed-off-by: Madhurima Paruchuri <mparuchuri@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4226575
Reviewed-by: Keith Short <keithshort@chromium.org>
Reviewed-by: Fabio Baltieri <fabiobaltieri@google.com>
Diffstat (limited to 'zephyr/shim')
-rw-r--r-- | zephyr/shim/include/config_chip.h | 5 | ||||
-rw-r--r-- | zephyr/shim/include/usbc/anx7452_usb_mux.h | 41 | ||||
-rw-r--r-- | zephyr/shim/include/usbc/usb_muxes.h | 2 | ||||
-rw-r--r-- | zephyr/shim/src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | zephyr/shim/src/anx7452_usb_mux.c | 14 |
5 files changed, 63 insertions, 0 deletions
diff --git a/zephyr/shim/include/config_chip.h b/zephyr/shim/include/config_chip.h index 4b00a952c5..567e42a715 100644 --- a/zephyr/shim/include/config_chip.h +++ b/zephyr/shim/include/config_chip.h @@ -1832,6 +1832,11 @@ extern char mock_jump_data[CONFIG_PLATFORM_EC_PRESERVED_END_OF_RAM_SIZE]; #define CONFIG_USBC_RETIMER_ANX7483 #endif +#undef CONFIG_USBC_RETIMER_ANX7452 +#ifdef CONFIG_PLATFORM_EC_USBC_RETIMER_ANX7452 +#define CONFIG_USBC_RETIMER_ANX7452 +#endif + #undef CONFIG_USBC_RETIMER_PS8811 #ifdef CONFIG_PLATFORM_EC_USBC_RETIMER_PS8811 #define CONFIG_USBC_RETIMER_PS8811 diff --git a/zephyr/shim/include/usbc/anx7452_usb_mux.h b/zephyr/shim/include/usbc/anx7452_usb_mux.h new file mode 100644 index 0000000000..1b3cdbcc8e --- /dev/null +++ b/zephyr/shim/include/usbc/anx7452_usb_mux.h @@ -0,0 +1,41 @@ +/* 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. + */ + +#ifndef __ZEPHYR_SHIM_ANX7452_USB_MUX_H +#define __ZEPHYR_SHIM_ANX7452_USB_MUX_H + +#include "driver/retimer/anx7452_public.h" + +#define ANX7452_USB_MUX_COMPAT analogix_anx7452 + +#define ANX7452_USB_EN_GPIO(mux_id) GPIO_SIGNAL(DT_PHANDLE(mux_id, usb_en_pin)) + +#define ANX7452_DP_EN_GPIO(mux_id) \ + COND_CODE_1(DT_NODE_HAS_PROP(mux_id, dp_en_pin), \ + (GPIO_SIGNAL(DT_PHANDLE(mux_id, dp_en_pin))), \ + (GPIO_UNIMPLEMENTED)) + +#define ANX7452_CONTROLS_CONFIG(mux_id) \ + { \ + .usb_enable_gpio = ANX7452_USB_EN_GPIO(mux_id), \ + .dp_enable_gpio = ANX7452_DP_EN_GPIO(mux_id), \ + } + +#define USB_MUX_ANX7452_CONTROL_ARRAY(mux_id) \ + [USB_MUX_PORT(mux_id)] = ANX7452_CONTROLS_CONFIG(mux_id), + +#define USB_MUX_ANX7452_CONTROLS_ARRAY \ + DT_FOREACH_STATUS_OKAY(ANX7452_USB_MUX_COMPAT, \ + USB_MUX_ANX7452_CONTROL_ARRAY) + +#define USB_MUX_CONFIG_ANX7452(mux_id) \ + { \ + USB_MUX_COMMON_FIELDS(mux_id), \ + .driver = &anx7452_usb_retimer_driver, \ + .i2c_port = I2C_PORT_BY_DEV(mux_id), \ + .i2c_addr_flags = DT_REG_ADDR(mux_id), \ + } + +#endif /* __ZEPHYR_SHIM_ANX7452_USB_MUX_H */ diff --git a/zephyr/shim/include/usbc/usb_muxes.h b/zephyr/shim/include/usbc/usb_muxes.h index f08d897ba3..1aa46249df 100644 --- a/zephyr/shim/include/usbc/usb_muxes.h +++ b/zephyr/shim/include/usbc/usb_muxes.h @@ -9,6 +9,7 @@ #include "usb_mux.h" #include "usbc/amd_fp6_usb_mux.h" #include "usbc/anx7447_usb_mux.h" +#include "usbc/anx7452_usb_mux.h" #include "usbc/anx7483_usb_mux.h" #include "usbc/bb_retimer_usb_mux.h" #include "usbc/it5205_usb_mux.h" @@ -30,6 +31,7 @@ #define USB_MUX_DRIVERS \ (AMD_FP6_USB_MUX_COMPAT, USB_MUX_CONFIG_AMD_FP6), \ (ANX7447_USB_MUX_COMPAT, USB_MUX_CONFIG_ANX7447), \ + (ANX7452_USB_MUX_COMPAT, USB_MUX_CONFIG_ANX7452), \ (ANX7483_USB_MUX_COMPAT, USB_MUX_CONFIG_ANX7483), \ (BB_RETIMER_USB_MUX_COMPAT, USB_MUX_CONFIG_BB_RETIMER), \ (IT5205_USB_MUX_COMPAT, USB_MUX_CONFIG_IT5205), \ diff --git a/zephyr/shim/src/CMakeLists.txt b/zephyr/shim/src/CMakeLists.txt index 5d74b04102..17932540e4 100644 --- a/zephyr/shim/src/CMakeLists.txt +++ b/zephyr/shim/src/CMakeLists.txt @@ -19,6 +19,7 @@ endif() zephyr_library_sources_ifdef(no_libgcc libgcc_${ARCH}.S) +zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_USBC_RETIMER_ANX7452 anx7452_usb_mux.c) zephyr_library_sources_ifdef(CONFIG_NAMED_ADC_CHANNELS adc.c) zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_BATTERY battery.c) diff --git a/zephyr/shim/src/anx7452_usb_mux.c b/zephyr/shim/src/anx7452_usb_mux.c new file mode 100644 index 0000000000..a2ceef5a3a --- /dev/null +++ b/zephyr/shim/src/anx7452_usb_mux.c @@ -0,0 +1,14 @@ +/* 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 "usb_mux.h" +#include "usbc/usb_muxes.h" + +#include <zephyr/devicetree.h> +#include <zephyr/sys/util_macro.h> + +const struct anx7452_control anx7452_controls[] = { + USB_MUX_ANX7452_CONTROLS_ARRAY +}; |