pinctrl: stm32: display bias information for all pins
Display the bias information for input gpios or AF configuration,
and not only for output pin, as described in Reference manual
(Table 81. Port bit configuration table).
Fixes: da7a0bb1f2
("pinctrl: stm32: add information on pin configuration")
Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
This commit is contained in:
parent
9ed6f929a3
commit
b305dbc08b
@ -48,15 +48,15 @@ static const char * const pinmux_mode[PINMUX_MODE_COUNT] = {
|
||||
"alt function",
|
||||
};
|
||||
|
||||
static const char * const pinmux_output[] = {
|
||||
[STM32_GPIO_PUPD_NO] = "bias-disable",
|
||||
[STM32_GPIO_PUPD_UP] = "bias-pull-up",
|
||||
[STM32_GPIO_PUPD_DOWN] = "bias-pull-down",
|
||||
static const char * const pinmux_bias[] = {
|
||||
[STM32_GPIO_PUPD_NO] = "",
|
||||
[STM32_GPIO_PUPD_UP] = "pull-up",
|
||||
[STM32_GPIO_PUPD_DOWN] = "pull-down",
|
||||
};
|
||||
|
||||
static const char * const pinmux_input[] = {
|
||||
[STM32_GPIO_OTYPE_PP] = "drive-push-pull",
|
||||
[STM32_GPIO_OTYPE_OD] = "drive-open-drain",
|
||||
[STM32_GPIO_OTYPE_PP] = "push-pull",
|
||||
[STM32_GPIO_OTYPE_OD] = "open-drain",
|
||||
};
|
||||
|
||||
static int stm32_pinctrl_get_af(struct udevice *dev, unsigned int offset)
|
||||
@ -213,6 +213,7 @@ static int stm32_pinctrl_get_pin_muxing(struct udevice *dev,
|
||||
dev_dbg(dev, "selector = %d gpio_idx = %d mode = %d\n",
|
||||
selector, gpio_idx, mode);
|
||||
priv = dev_get_priv(gpio_dev);
|
||||
pupd = (readl(&priv->regs->pupdr) >> (gpio_idx * 2)) & PUPD_MASK;
|
||||
|
||||
|
||||
switch (mode) {
|
||||
@ -224,20 +225,19 @@ static int stm32_pinctrl_get_pin_muxing(struct udevice *dev,
|
||||
break;
|
||||
case GPIOF_FUNC:
|
||||
af_num = stm32_pinctrl_get_af(gpio_dev, gpio_idx);
|
||||
snprintf(buf, size, "%s %d", pinmux_mode[mode], af_num);
|
||||
snprintf(buf, size, "%s %d %s", pinmux_mode[mode], af_num,
|
||||
pinmux_bias[pupd]);
|
||||
break;
|
||||
case GPIOF_OUTPUT:
|
||||
pupd = (readl(&priv->regs->pupdr) >> (gpio_idx * 2)) &
|
||||
PUPD_MASK;
|
||||
snprintf(buf, size, "%s %s %s",
|
||||
pinmux_mode[mode], pinmux_output[pupd],
|
||||
pinmux_mode[mode], pinmux_bias[pupd],
|
||||
label ? label : "");
|
||||
break;
|
||||
case GPIOF_INPUT:
|
||||
otype = (readl(&priv->regs->otyper) >> gpio_idx) & OTYPE_MSK;
|
||||
snprintf(buf, size, "%s %s %s",
|
||||
snprintf(buf, size, "%s %s %s %s",
|
||||
pinmux_mode[mode], pinmux_input[otype],
|
||||
label ? label : "");
|
||||
pinmux_bias[pupd], label ? label : "");
|
||||
break;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user