]> www.infradead.org Git - users/jedix/linux-maple.git/commit
i3c: mipi-i3c-hci: Fix number of DAT/DCT entries for HCI versions < 1.1
authorJarkko Nikula <jarkko.nikula@linux.intel.com>
Fri, 14 Jun 2024 14:02:08 +0000 (17:02 +0300)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Fri, 26 Jul 2024 12:21:29 +0000 (14:21 +0200)
commitbe90ae1ba14a83962b33c4d4c854ef081186b0e4
tree7fa4c4c6f54e7ea6f366f5dec8022f226d09f755
parent9bc7501b0b90f4d0c34b97c14ff1f708ce7ad8f3
i3c: mipi-i3c-hci: Fix number of DAT/DCT entries for HCI versions < 1.1

I was wrong about the TABLE_SIZE field description in the
commit 0676bfebf576 ("i3c: mipi-i3c-hci: Fix DAT/DCT entry sizes").

For the MIPI I3C HCI versions 1.0 and earlier the TABLE_SIZE field in
the registers DAT_SECTION_OFFSET and DCT_SECTION_OFFSET is indeed defined
in DWORDs and not number of entries like it is defined in later versions.

Where above fix allowed driver initialization to continue the wrongly
interpreted TABLE_SIZE field leads variables DAT_entries being twice and
DCT_entries four times as big as they really are.

That in turn leads clearing the DAT table over the boundary in the
dat_v1.c: hci_dat_v1_init().

So interprete the TABLE_SIZE field in DWORDs for HCI versions < 1.1 and
fix number of DAT/DCT entries accordingly.

Fixes: 0676bfebf576 ("i3c: mipi-i3c-hci: Fix DAT/DCT entry sizes")
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/i3c/master/mipi-i3c-hci/core.c