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


Reply via email to