[PATCH v7 08/15] gpiolib: regmap: add write_data_after_dir quirk

zl020895 zl020895 at 163.com
Tue Sep 15 21:47:38 PDT 2026


Hi Andy,

OK. v8 will ignore both gpio_regmap_set() returns, same as before.
Only the extra write for the PL061 quirk stays.

Best regards,
Long Zhao

At 2026-09-15 23:07:19, "Andy Shevchenko" <andriy.shevchenko at linux.intel.com> wrote:
>On Tue, Sep 15, 2026 at 07:15:38PM +0800, Long Zhao via B4 Relay wrote:
>
>> Some controllers ignore data-register writes while a line is still an
>> input. Optionally write the output value again after switching the
>> direction, matching the existing PL061 behaviour.
>
>...
>
>> -	gpio_regmap_set(chip, offset, value);
>> +	ret = gpio_regmap_set(chip, offset, value);
>> +	if (ret)
>> +		return ret;
>
>I think that this might lead to regressions when the end driver just leaves
>the output in the previous state in case of errors. In any case, even if this
>is a correct update, it needs to be done separately with the justification
>that shows that all current users won't have regressions or the regression is
>actually a fix of the behaviour.
>
>> +	ret = gpio_regmap_set_direction(chip, offset, true);
>> +	if (ret)
>> +		return ret;
>>  
>> -	return gpio_regmap_set_direction(chip, offset, true);
>> +	/*
>> +	 * gpio value is set again, because pl061 doesn't allow to set value of
>> +	 * a gpio pin before configuring it in OUT mode.
>> +	 */
>> +	if (gpio->write_data_after_dir)
>> +		return gpio_regmap_set(chip, offset, value);
>
>Taking the above into account I'm not sure if we want the inconsistency with
>the above. Perhaps also ignore the returned value for now?
>
>> +	return 0;
>
>-- 
>With Best Regards,
>Andy Shevchenko
>


More information about the linux-arm-kernel mailing list