1 /*
2  * Copyright 2023 NXP
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 #include "hal_config.h"
7 #include "hal_pinctrl.h"
8 #if SM_PINCTRL
9 #include "sm_pinctrl.h"
10 #elif IOMUXC_PINCTRL
11 #include "fsl_iomuxc.h"
12 #endif
13 
14 #if SM_PINCTRL && IOMUXC_PINCTRL
15 #error "Pls not define them as 1 at the same time in hal_config.h!!!"
16 #endif
17 
18 #if SM_PINCTRL
HAL_PinctrlSetPinMux(uint32_t muxRegister,uint32_t muxMode,uint32_t inputRegister,uint32_t inputDaisy,uint32_t configRegister,uint32_t inputOnfield)19 void HAL_PinctrlSetPinMux(uint32_t muxRegister,
20                           uint32_t muxMode,
21                           uint32_t inputRegister,
22                           uint32_t inputDaisy,
23                           uint32_t configRegister,
24                           uint32_t inputOnfield)
25 {
26     sm_pinctrl_t sm_pinctrl = {0};
27 
28     sm_pinctrl.channel         = SM_PLATFORM_A2P;
29     sm_pinctrl.mux_register    = muxRegister;
30     sm_pinctrl.mux_mode        = muxMode;
31     sm_pinctrl.input_register  = inputRegister;
32     sm_pinctrl.input_daisy     = inputDaisy;
33     sm_pinctrl.config_register = configRegister;
34     sm_pinctrl.config_value    = 0U;
35     sm_pinctrl.input_on_field  = inputOnfield;
36 
37     SM_PINCTRL_SetPinMux(&sm_pinctrl);
38 }
39 
HAL_PinctrlSetPinCfg(uint32_t muxRegister,uint32_t muxMode,uint32_t inputRegister,uint32_t inputDaisy,uint32_t configRegister,uint32_t configValue)40 void HAL_PinctrlSetPinCfg(uint32_t muxRegister,
41                           uint32_t muxMode,
42                           uint32_t inputRegister,
43                           uint32_t inputDaisy,
44                           uint32_t configRegister,
45                           uint32_t configValue)
46 {
47     sm_pinctrl_t sm_pinctrl = {0};
48 
49     sm_pinctrl.channel         = SM_PLATFORM_A2P;
50     sm_pinctrl.mux_register    = muxRegister;
51     sm_pinctrl.mux_mode        = muxMode;
52     sm_pinctrl.input_register  = inputRegister;
53     sm_pinctrl.input_daisy     = inputDaisy;
54     sm_pinctrl.config_register = configRegister;
55     sm_pinctrl.config_value    = configValue;
56     sm_pinctrl.input_on_field  = 0U;
57 
58     SM_PINCTRL_SetPinCfg(&sm_pinctrl);
59 }
60 
61 
HAL_PinctrlSetMiscCfg(hal_pinctrl_t * hal_pinctrl)62 void HAL_PinctrlSetMiscCfg(hal_pinctrl_t *hal_pinctrl)
63 {
64 
65 }
66 
67 #elif IOMUXC_PINCTRL
HAL_PinctrlSetPinMux(uint32_t muxRegister,uint32_t muxMode,uint32_t inputRegister,uint32_t inputDaisy,uint32_t configRegister,uint32_t inputOnfield)68 void HAL_PinctrlSetPinMux(uint32_t muxRegister,
69                           uint32_t muxMode,
70                           uint32_t inputRegister,
71                           uint32_t inputDaisy,
72                           uint32_t configRegister,
73                           uint32_t inputOnfield)
74 {
75     IOMUXC_SetPinMux(muxRegister, muxMode, inputRegister, inputDaisy, configRegister, inputOnfield);
76 }
77 
HAL_PinctrlSetPinCfg(uint32_t muxRegister,uint32_t muxMode,uint32_t inputRegister,uint32_t inputDaisy,uint32_t configRegister,uint32_t configValue)78 void HAL_PinctrlSetPinCfg(uint32_t muxRegister,
79                           uint32_t muxMode,
80                           uint32_t inputRegister,
81                           uint32_t inputDaisy,
82                           uint32_t configRegister,
83                           uint32_t configValue)
84 {
85     IOMUXC_SetPinConfig(muxRegister, muxMode, inputRegister, inputDaisy, configRegister, configValue);
86 }
87 
HAL_PinctrlSetMiscCfg(hal_pinctrl_t * hal_pinctrl)88 void HAL_PinctrlSetMiscCfg(hal_pinctrl_t *hal_pinctrl)
89 {
90     if ((hal_pinctrl != NULL) && (hal_pinctrl->set_gpr == true))
91     {
92         IOMUXC_SetGpr(hal_pinctrl->gpr_instance, hal_pinctrl->gpr_val);
93     }
94 }
95 #else
96 #error "Pls define macro SM_PINCTRL or IOMUXC_PINCTRL in hal_config.h.!!!"
97 #endif
98