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.