1 /*
2  * Copyright (c) 2021-2025 Gerson Fernando Budke <nandojve@gmail.com>
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <zephyr/kernel.h>
8 #include <zephyr/drivers/pinctrl.h>
9 
10 #include <zephyr/dt-bindings/pinctrl/bflb-common-pinctrl.h>
11 
12 #if defined(CONFIG_SOC_SERIES_BL60X)
13 #include <zephyr/dt-bindings/pinctrl/bl60x-pinctrl.h>
14 #elif defined(CONFIG_SOC_SERIES_BL61X)
15 #include <zephyr/dt-bindings/pinctrl/bl61x-pinctrl.h>
16 #elif defined(CONFIG_SOC_SERIES_BL70X)
17 #include <zephyr/dt-bindings/pinctrl/bl70x-pinctrl.h>
18 #else
19 #error "Unsupported Platform"
20 #endif
21 
22 void pinctrl_bflb_configure_uart(uint8_t pin, uint8_t func);
23 void pinctrl_bflb_init_pin(pinctrl_soc_pin_t pin);
24 
pinctrl_configure_pins(const pinctrl_soc_pin_t * pins,uint8_t pin_cnt,uintptr_t reg)25 int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt, uintptr_t reg)
26 {
27 	uint8_t i;
28 
29 	ARG_UNUSED(reg);
30 
31 	for (i = 0U; i < pin_cnt; i++) {
32 
33 		if ((BFLB_PINMUX_GET_FUN(pins[i]) & BFLB_PINMUX_FUN_MASK)
34 			== BFLB_PINMUX_FUN_INST_uart0) {
35 			pinctrl_bflb_configure_uart(BFLB_PINMUX_GET_PIN(pins[i]),
36 			BFLB_PINMUX_GET_SIGNAL(pins[i]) + 4 * BFLB_PINMUX_GET_INST(pins[i]));
37 		}
38 
39 		/* gpio init*/
40 		pinctrl_bflb_init_pin(pins[i]);
41 	}
42 
43 	return 0;
44 }
45