[PATCH] pinctrl: pinctrl_stm32: Add slew rate support for stm32_pinctrl_get_pin_muxing()

Patrice CHOTARD patrice.chotard at foss.st.com
Wed Apr 19 09:51:02 CEST 2023



On 3/30/23 13:29, Patrick DELAUNAY wrote:
> Hi,
> 
> On 3/27/23 09:46, Patrice Chotard wrote:
>> For debug purpose, it should be useful to indicate the slew rate for
>> each pins.
>> Add ospeed register information for pins which are configured in
>> either alternate function or gpio output.
>>
>> Signed-off-by: Patrice Chotard <patrice.chotard at foss.st.com>
>> ---
>>
>>   drivers/pinctrl/pinctrl_stm32.c | 19 +++++++++++++++----
>>   1 file changed, 15 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/pinctrl/pinctrl_stm32.c b/drivers/pinctrl/pinctrl_stm32.c
>> index b755fa42b4f..b06da50b2cd 100644
>> --- a/drivers/pinctrl/pinctrl_stm32.c
>> +++ b/drivers/pinctrl/pinctrl_stm32.c
>> @@ -61,6 +61,13 @@ static const char * const pinmux_otype[] = {
>>       [STM32_GPIO_OTYPE_OD] = "open-drain",
>>   };
>>   +static const char * const pinmux_speed[] = {
>> +    [STM32_GPIO_SPEED_2M] = "Low speed",
>> +    [STM32_GPIO_SPEED_25M] = "Medium speed",
>> +    [STM32_GPIO_SPEED_50M] = "High speed",
>> +    [STM32_GPIO_SPEED_100M] = "Very-high speed",
>> +};
>> +
>>   static int stm32_pinctrl_get_af(struct udevice *dev, unsigned int offset)
>>   {
>>       struct stm32_gpio_priv *priv = dev_get_priv(dev);
>> @@ -201,6 +208,7 @@ static int stm32_pinctrl_get_pin_muxing(struct udevice *dev,
>>       int af_num;
>>       unsigned int gpio_idx;
>>       u32 pupd, otype;
>> +    u8 speed;
>>         /* look up for the bank which owns the requested pin */
>>       gpio_dev = stm32_pinctrl_get_gpio_dev(dev, selector, &gpio_idx);
>> @@ -214,6 +222,7 @@ static int stm32_pinctrl_get_pin_muxing(struct udevice *dev,
>>       priv = dev_get_priv(gpio_dev);
>>       pupd = (readl(&priv->regs->pupdr) >> (gpio_idx * 2)) & PUPD_MASK;
>>       otype = (readl(&priv->regs->otyper) >> gpio_idx) & OTYPE_MSK;
>> +    speed = (readl(&priv->regs->ospeedr) >> gpio_idx * 2) & OSPEED_MASK;
>>         switch (mode) {
>>       case GPIOF_UNKNOWN:
>> @@ -222,13 +231,15 @@ 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 %s %s", pinmux_mode[mode], af_num,
>> -             pinmux_otype[otype], pinmux_bias[pupd]);
>> +        snprintf(buf, size, "%s %d %s %s %s", pinmux_mode[mode], af_num,
>> +             pinmux_otype[otype], pinmux_bias[pupd],
>> +             pinmux_speed[speed]);
>>           break;
>>       case GPIOF_OUTPUT:
>> -        snprintf(buf, size, "%s %s %s %s",
>> +        snprintf(buf, size, "%s %s %s %s %s",
>>                pinmux_mode[mode], pinmux_otype[otype],
>> -             pinmux_bias[pupd], label ? label : "");
>> +             pinmux_bias[pupd], label ? label : "",
>> +             pinmux_speed[speed]);
>>           break;
>>       case GPIOF_INPUT:
>>           snprintf(buf, size, "%s %s %s", pinmux_mode[mode],
> 
> 
> 
> Reviewed-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
> 
> Thanks
> Patrick
> 

Applied on u-boot-stm/master, thanks.

Patrice


More information about the U-Boot mailing list