diff options
Diffstat (limited to 'zephyr/shim/src/bb_retimer_usb_mux.c')
-rw-r--r-- | zephyr/shim/src/bb_retimer_usb_mux.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/zephyr/shim/src/bb_retimer_usb_mux.c b/zephyr/shim/src/bb_retimer_usb_mux.c new file mode 100644 index 0000000000..c40068211e --- /dev/null +++ b/zephyr/shim/src/bb_retimer_usb_mux.c @@ -0,0 +1,39 @@ +/* Copyright 2022 The ChromiumOS Authors. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include <zephyr/devicetree.h> +#include <zephyr/sys/util_macro.h> +#include "usb_mux.h" +#include "usbc/usb_muxes.h" + +/** + * This prevents creating struct usb_mux bb_controls[] for platforms that didn't + * migrate USB mux configuration to DTS yet. + */ +#if DT_HAS_COMPAT_STATUS_OKAY(cros_ec_usb_mux_chain) + +BB_RETIMER_CHECK_SAME_CONTROLS(BB_RETIMER_INSTANCES_LIST) + +/** + * @brief bb_controls array should be constant only if configuration cannot + * change in runtime + */ +#define BB_CONTROLS_CONST \ + COND_CODE_1(CONFIG_PLATFORM_EC_USBC_RETIMER_INTEL_BB_RUNTIME_CONFIG, \ + (), (const)) + +/** + * Define bb_controls for BB retimers in USB muxes chain e.g. + * [0] = { + * .retimer_rst_gpio = IOEX_USB_C0_BB_RETIMER_RST, + * .usb_ls_en_gpio = IOEX_USB_C0_BB_RETIMER_LS_EN, + * }, + * [1] = { ... }, + */ +BB_CONTROLS_CONST struct bb_usb_control bb_controls[] = { + USB_MUX_BB_RETIMERS_CONTROLS_ARRAY +}; + +#endif /* #if DT_HAS_COMPAT_STATUS_OKAY(cros_ec_usb_mux_chain) */ |