On Mon, Apr 14, 2025 at 2:52 PM Ivan Vecera <[email protected]> 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. -- With Best Regards, Andy Shevchenko
