drivers: pinctrl: update rt pinctrl to support GPR register
iMX.RT parts use a GPR register for some pinmux settings. Update pinctrl driver to support this GPR register definition. Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
This commit is contained in:
parent
a0a0f653c7
commit
3a6919e3aa
3 changed files with 65 additions and 22 deletions
|
@ -23,6 +23,17 @@ int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt,
|
|||
uint32_t input_daisy = pins[i].pinmux.input_daisy;
|
||||
uint32_t config_register = pins[i].pinmux.config_register;
|
||||
uint32_t pin_ctrl_flags = pins[i].pin_ctrl_flags;
|
||||
volatile uint32_t *gpr_register =
|
||||
(volatile uint32_t *)pins[i].pinmux.gpr_register;
|
||||
if (gpr_register) {
|
||||
/* Set or clear specified GPR bit for this mux */
|
||||
if (pins[i].pinmux.gpr_val) {
|
||||
*gpr_register |=
|
||||
(pins[i].pinmux.gpr_val << pins[i].pinmux.gpr_shift);
|
||||
} else {
|
||||
*gpr_register &= ~(0x1 << pins[i].pinmux.gpr_shift);
|
||||
}
|
||||
}
|
||||
|
||||
IOMUXC_SetPinMux(mux_register, mux_mode, input_register,
|
||||
input_daisy, config_register,
|
||||
|
@ -31,6 +42,8 @@ int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt,
|
|||
IOMUXC_SetPinConfig(mux_register, mux_mode, input_register,
|
||||
input_daisy, config_register,
|
||||
pin_ctrl_flags & (~(0x1 << MCUX_RT_INPUT_ENABLE_SHIFT)));
|
||||
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -41,6 +54,7 @@ static int mcux_pinctrl_init(const struct device *dev)
|
|||
|
||||
CLOCK_EnableClock(kCLOCK_Iomuxc);
|
||||
CLOCK_EnableClock(kCLOCK_IomuxcSnvs);
|
||||
CLOCK_EnableClock(kCLOCK_IomuxcGpr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue