]> git.baikalelectronics.ru Git - uboot.git/commit
board: ti: common: board_detect: Fix EEPROM read quirk for AM6 style data
authorNishanth Menon <nm@ti.com>
Wed, 21 Sep 2022 13:38:42 +0000 (08:38 -0500)
committerTom Rini <trini@konsulko.com>
Thu, 29 Sep 2022 14:10:39 +0000 (10:10 -0400)
commit1752ddb410c92229b26d5b41baeeaf24fec837b5
tree89e9a295e37af1da9066a0d55c517dd93221a120
parentad7332e5f2ca0d328cdbe304c2f4f4f9d6242952
board: ti: common: board_detect: Fix EEPROM read quirk for AM6 style data

The situation is similar to commit 90fde2a3094d ("board: ti: common:
board_detect: Fix EEPROM read quirk"). This is seen on a variant of
eeproms seen on some BeagleBone-AI64 which now has a mix of both 1 byte
addressing and 2 byte addressing eeproms.

Unlike the am335x (ti_i2c_eeprom_am_get) and dra7
(ti_i2c_eeprom_dra7_get) which use constant data structure which allows
us to do a complete read of the data, the
am6(ti_i2c_eeprom_am6_get) eeprom parse operation is dynamic.

This removes the option of being able to read the complete eeprom data
in one single shot.

Fortunately, on the I2C bus, we do see the following behavior: In 1
byte mode, if we attempt to read the first header data yet again, the
misbehaving 2 byte addressing device acts in constant addressing mode
which results in the header not matching up and follow on attempt at 2
byte addressing scheme grabs the correct data.

This costs us an extra ~3 milliseconds, which is a minor penalty
compared to the consistent image support we need to have.

Reported-by: Jason Kridner <jkridner@beagleboard.org>
Fixes: 15bf93e1bec6 ("board: ti: common: board_detect: Do 1byte address checks first.")
Signed-off-by: Nishanth Menon <nm@ti.com>
board/ti/common/board_detect.c