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

From: Ivan Vecera
Date: Mon Apr 14 2025 - 07:52:45 EST




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,
    },
...


Thank you,
Ivan
Sorry,
.window_len = 0x7f /* Exclude selector reg */

I.