[PATCH v3 1/1] regmap: Synchronize cache for the page selector
Marek Szyprowski
m.szyprowski at samsung.com
Tue Jan 28 16:08:08 UTC 2025
Hi Andy,
On 21.01.2025 14:29, Andy Shevchenko wrote:
> On Tue, Jan 21, 2025 at 08:33:09AM +0100, Marek Szyprowski wrote:
>> On 17.01.2025 18:28, Andy Shevchenko wrote:
>>> On Fri, Jan 17, 2025 at 05:05:42PM +0100, Marek Szyprowski wrote:
>>>
>>> Does it fail in the same way?
>> Yes, the hw revision is reported as zero in this case: LT9611 revision:
>> 0x00.00.00
> Hmm... This is very interesting! It means that the page selector is a bit
> magical there. Dmitry, can you chime in and perhaps shed some light on this?
>
>>>> Does it mean that there is really a bug in the driver?
>>> Without looking at the datasheet it's hard to say. At least what I found so far
>>> is one page of the I²C traffic dump on Windows as an example how to use their
>>> evaluation board and software, but it doesn't unveil the bigger picture. At
>>> least what I think is going on here is that the programming is not so easy as
>>> just paging. Something is more complicated there.
>>>
>>> But at least (and as Mark said) the most of the regmap based drivers got
>>> the ranges wrong (so, at least there is one bug in the driver).
>> I can do more experiments if this helps. Do you need a dump of all
>> regmap accesses or i2c traffic from this driver?
> It would be helpful! Traces from the failed and non-failed cases
> till the firmware revision and chip ID reading would be enough to
> start with.
I'm sorry for the delay, I was a bit busy with other stuff.
Here are logs (all values are in hex):
next-20250128 (probe broken):
root at target:~# dmesg | grep regmap
[ 14.817604] regmap_write reg 80ee <- 1
[ 14.823036] regmap_read reg 8100 -> 0
[ 14.827631] regmap_read reg 8101 -> 0
[ 14.832130] regmap_read reg 8102 -> 0
[ 14.841477] regmap_write reg 80ee <- 0
[ 14.901796] regmap_write reg 80ee <- 1
[ 14.909895] regmap_read reg b021 -> 0
[ 14.927409] regmap_write reg 80ee <- 0
next-20250128 + 1fd60ed1700c reverted (probe okay):
root at target:~# dmesg | grep regmap
[ 13.565920] regmap_write reg 80ee <- 1
[ 13.567509] regmap_read reg 8100 -> 17
[ 13.568219] regmap_read reg 8101 -> 4
[ 13.568909] regmap_read reg 8102 -> 93
[ 13.568927] regmap_write reg 80ee <- 0
[ 13.625844] regmap_write reg 80ee <- 1
[ 13.630963] regmap_read reg b021 -> 40
[ 13.645522] regmap_write reg 80ee <- 0
[ 13.880192] regmap_write reg 80ee <- 1
[ 13.884921] regmap_read reg b023 -> 0
[ 13.892159] regmap_write reg 80ee <- 0
[ 13.954508] regmap_write reg 80ee <- 1
[ 13.959441] regmap_read reg b023 -> 0
[ 13.963269] regmap_write reg 80ee <- 0
[ 14.029818] regmap_write reg 80ee <- 1
[ 14.034644] regmap_read reg b023 -> 0
[ 14.038491] regmap_write reg 80ee <- 0
[ 16.278387] regmap_write reg 80ee <- 1
[ 16.283902] regmap_read reg b023 -> 0
[ 16.287944] regmap_write reg 80ee <- 0
[ 16.347570] regmap_write reg 80ee <- 1
[ 16.355894] regmap_read reg b023 -> 0
[ 16.359748] regmap_write reg 80ee <- 0
[ 16.452472] regmap_write reg 80ee <- 1
[ 16.454387] regmap_write reg d00d <- 4
[ 16.456228] regmap_write reg d00e <- 65
[ 16.462096] regmap_write reg d00f <- 4
[ 16.462971] regmap_write reg d010 <- 38
[ 16.463741] regmap_write reg d011 <- 8
[ 16.464741] regmap_write reg d012 <- 98
[ 16.465250] regmap_write reg d013 <- 7
[ 16.465764] regmap_write reg d014 <- 80
[ 16.466481] regmap_write reg d015 <- 5
[ 16.467156] regmap_update_bits reg d016 <- 0/f
[ 16.467817] regmap_write reg d017 <- 2c
[ 16.468325] regmap_update_bits reg d018 <- 0/f
[ 16.469101] regmap_write reg d019 <- 4
[ 16.469749] regmap_update_bits reg d01a <- 0/f
[ 16.470509] regmap_write reg d01b <- 58
[ 16.471041] regmap_write reg 80ee <- 0
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
More information about the dri-devel
mailing list