[PATCH] pinctrl: meson: support gpio toggle command

Yang Xiwen forbidden405 at outlook.com
Mon Jun 16 18:58:25 CEST 2025


On 6/17/2025 12:40 AM, Neil Armstrong wrote:
> On 16/06/2025 18:23, Yang Xiwen via B4 Relay wrote:
>> From: Yang Xiwen <forbidden405 at outlook.com>
>>
>> meson_gpio_get() always assumes gpio is configured to input mode. This
>> is incorrect and breaks `gpio toggle` command:
>>
>> gpio: pin aobus-banks2 (gpio 2) value is 0
>>     Warning: value of pin is still 1
>>
>> Fix it by adding the logic to handle both input and output mode.
>>
>> Fixes: 2009a8d03fe5 ("pinctrl: meson: add GPIO support")
>> Signed-off-by: Yang Xiwen <forbidden405 at outlook.com>
>> ---
>>   drivers/pinctrl/meson/pinctrl-meson.c | 21 ++++++++++++++++++++-
>>   1 file changed, 20 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/pinctrl/meson/pinctrl-meson.c 
>> b/drivers/pinctrl/meson/pinctrl-meson.c
>> index babf1bccc969..a1f4afd11f94 100644
>> --- a/drivers/pinctrl/meson/pinctrl-meson.c
>> +++ b/drivers/pinctrl/meson/pinctrl-meson.c
>> @@ -117,8 +117,27 @@ int meson_gpio_get(struct udevice *dev, unsigned 
>> int offset)
>>       struct meson_pinctrl *priv = dev_get_priv(dev->parent);
>>       unsigned int reg, bit;
>>       int ret;
>> +    enum gpio_func_t direction;
>> +    enum meson_reg_type reg_type;
>>   -    ret = meson_gpio_calc_reg_and_bit(dev->parent, offset, REG_IN, 
>> &reg,
>> +    direction = meson_gpio_get_direction(dev, offset);
>> +
>> +    switch (direction) {
>> +    case GPIOF_INPUT:
>> +        reg_type = REG_IN;
>> +        break;
>> +
>> +    case GPIOF_OUTPUT:
>> +        reg_type = REG_OUT;
>> +        break;
>> +
>> +    default:
>> +        reg_type = REG_IN;
>> +        dev_warn(dev, "Failed to get current direction of Pin %u\n", 
>> offset);
>> +        break;
>
> Just return -EINVAL here


Fixed in v2

>
> Thanks,
> Neil
>
>> +    }
>> +
>> +    ret = meson_gpio_calc_reg_and_bit(dev->parent, offset, reg_type, 
>> &reg,
>>                         &bit);
>>       if (ret)
>>           return ret;
>>
>> ---
>> base-commit: c5afa1fef49f55146e78d6157470520391c40eca
>> change-id: 20250617-meson_ppinctrl-5139ca06b828
>>
>> Best regards,
>

-- 
Regards,
Yang Xiwen



More information about the U-Boot mailing list