/* * Copyright (c) 2020 Linaro Limited * Copyright (c) 2021 ATL Electronics * SPDX-License-Identifier: Apache-2.0 */ #ifndef PINCTRL_CYPRESS_PSOC6_H_ #define PINCTRL_CYPRESS_PSOC6_H_ #include /** * Functions are defined using HSIOM SEL */ #define HSIOM_SEL_gpio 0 #define HSIOM_SEL_gpio_dsi 1 #define HSIOM_SEL_dsi_dsi 2 #define HSIOM_SEL_dsi_gpio 3 #define HSIOM_SEL_amuxa 4 #define HSIOM_SEL_amuxb 5 #define HSIOM_SEL_amuxa_dsi 6 #define HSIOM_SEL_amuxb_dsi 7 #define HSIOM_SEL_act_0 8 #define HSIOM_SEL_act_1 9 #define HSIOM_SEL_act_2 10 #define HSIOM_SEL_act_3 11 #define HSIOM_SEL_ds_0 12 #define HSIOM_SEL_ds_1 13 #define HSIOM_SEL_ds_2 14 #define HSIOM_SEL_ds_3 15 #define HSIOM_SEL_act_4 16 #define HSIOM_SEL_act_5 17 #define HSIOM_SEL_act_6 18 #define HSIOM_SEL_act_7 19 #define HSIOM_SEL_act_8 20 #define HSIOM_SEL_act_9 21 #define HSIOM_SEL_act_10 22 #define HSIOM_SEL_act_11 23 #define HSIOM_SEL_act_12 24 #define HSIOM_SEL_act_13 25 #define HSIOM_SEL_act_14 26 #define HSIOM_SEL_act_15 27 #define HSIOM_SEL_ds_4 28 #define HSIOM_SEL_ds_5 29 #define HSIOM_SEL_ds_6 30 #define HSIOM_SEL_ds_7 31 /* Create a pincfg device tree node: * * The node name and nodelabel will be of the form: * * NODE = p___ * * NODE: NODE { * cypress,pins = < &gpio_prt HSIOM_SEL_ >; * flags_1; * ... * flags_N; * } * * So for example: * * DT_CYPRESS_PIN(uart5, rx, 5, 0, act_6); * * Will become: * * p5_0_uart5_rx: p5_0_uart5_rx { * cypress,pins = <&gpio_prt5 0x0 0x12 >; * } * * Flags are optional and should be pass one by one as arguments: * * DT_CYPRESS_PIN(uart5, rx, 5, 0, act_6, bias-pull-up, input-enable); * * Will become: * * p5_0_uart5_rx: p5_0_uart5_rx { * cypress,pins = <&gpio_prt5 0x0 0x12 >; * bias-pull-up; * input-enable; * } * * For the complete list of flags see cypress,psoc6-pinctrl.yaml * */ #define DT_CYPRESS_HSIOM_FLAG(flag) flag; #define DT_CYPRESS_HSIOM_FLAGS(...) \ MACRO_MAP_CAT(DT_CYPRESS_HSIOM_FLAG __VA_OPT__(,) __VA_ARGS__) #define DT_CYPRESS_HSIOM(inst, signal, port, pin, hsiom, ...) \ p##port##_##pin##_##inst##_##signal: \ p##port##_##pin##_##inst##_##signal { \ cypress,pins = < &gpio_prt##port pin HSIOM_SEL_##hsiom > ; \ DT_CYPRESS_HSIOM_FLAGS(__VA_ARGS__) \ } #endif /* PINCTRL_CYPRESS_PSOC6_H_ */