Re: Question: regmap_field_write() - why using update?

From: Krzysztof Kozlowski
Date: Thu Jul 14 2022 - 11:13:25 EST


On 14/07/2022 17:07, Mark Brown wrote:
> On Thu, Jul 14, 2022 at 05:01:29PM +0200, Krzysztof Kozlowski wrote:
>
>> I am converting my driver using MMIO to regmap from readl/writel and to
>> my surprise I found that regmap_field_write() does not behave the same
>> as regmap_write(). I would expect that they are the same, except one
>> operates on fields.
>
>> However regmap_field_write() uses an update method [1] which means it
>> reads and performs update. regmap_write() simply writes without a read.
>
>> I find it inconsistent and a bit confusing. Any reasons for such
>> behavior so I won't send a patch which breaks 100 of devices?
>
> How would you propose to write to a field without reading the rest of
> the bits in the register? Otherwise you'd be doing a full register
> write rather than just a write to the specific field.

Indeed, I forgot about bits in a field... So it has to be like this or I
need to use regmap_write(). I find the regmap field API very useful for
devices with different register layouts, but the actual "fields" part is
not really needed in my case.

Best regards,
Krzysztof