Re: [PATCH 01/28] mfd: Add Microchip ZL3073x support

Ivan Vecera
2025-04-14T14:08:30Z

On 14. 04. 25 3:55 odp., Andy Shevchenko wrote:
> On Mon, Apr 14, 2025 at 2:52 PM Ivan Vecera <ivecera@redhat.com> wrote:
>> On 14. 04. 25 1:39 odp., Ivan Vecera wrote:
>>> On 14. 04. 25 8:36 dop., Andy Shevchenko wrote:
>>>>> What is wrong here?
>>>>>
>>>>> I have a device that uses 7-bit addresses and have 16 register pages.
>>>>> Each pages is from 0x00-0x7f and register 0x7f is used as page selector
>>>>> where bits 0-3 select the page.
>>>> The problem is that you overlap virtual page over the real one (the
>>>> main one).
>>>>
>>>> The drivers you mentioned in v2 discussions most likely are also buggy.
>>>> As I implied in the above question the developers hardly get the
>>>> regmap ranges
>>>> right. It took me quite a while to see the issue, so it's not
>>>> particularly your
>>>> fault.
>>> Hi Andy,
>>>
>>> thank you I see the point.
>>>
>>> Do you mean that the selector register should not be part of the range?
>>>
>>> If so, does it mean that I have to specify a range for each page? Like
>>> this:
>>>
>>> {
>>> /* Page 0 */
>>> .range_min = 0x000,
>>> .range_max = 0x07e,
>>> .selector_reg = ZL3073x_PAGE_SEL,
>>> .selector_mask = GENMASK(3, 0),
>>> .selector_shift = 0,
>>> .window_start = 0,
>>> .window_len = 0x7e,
>>> },
>>> {
>>> /* Page 1 */
>>> .range_min = 0x080,
>>> .range_max = 0x0fe,
>>> .selector_reg = ZL3073x_PAGE_SEL,
>>> .selector_mask = GENMASK(3, 0),
>>> .selector_shift = 0,
>>> .window_start = 0,
>>> .window_len = 0x7e,
>>> },
>
> ...
>
>> Sorry,
>> .window_len = 0x7f /* Exclude selector reg */
>
> It actually will make things worse. If selector register is accessible
> to all of the pages, it's better to include it in all pages.

Yes :-) I know this is non-sense.
See my recent reply.

Thanks,
Ivan