u-boot BOOTCOUNT I2C EEPROM support

Started by thom_nic, July 11, 2022, 09:25:03 pm

Previous topic - Next topic

thom_nic

July 11, 2022, 09:25:03 pm Last Edit: July 12, 2022, 05:35:00 pm by thom_nic
I am trying to enable I2C-EEPROM based bootcount support. I have what I believe are the relevant config flags however I get the following compile error:

arch/arm/mach-sunxi/built-in.o: In function `pmic_bus_read':
/root/etx8-linux/modules/a13-som/u-boot-olimex/arch/arm/mach-sunxi/pmic_bus.c:68: undefined reference to `i2c_read'
arch/arm/mach-sunxi/built-in.o: In function `pmic_bus_write':
/root/etx8-linux/modules/a13-som/u-boot-olimex/arch/arm/mach-sunxi/pmic_bus.c:87: undefined reference to `i2c_write'
Makefile:1703: recipe for target 'u-boot' failed
make: *** [u-boot] Error 1

The only reference I can find to this error is this issue which says to add CONFIG_SPL_I2C_SUPPORT=y (it is already.)

Here is my diff vs A13-OLinuXino_defconfig (mostly reordered lines):
# diff defconfig configs/A13-OLinuXino_defconfig
3d2
< CONFIG_BOOTCOUNT_BOOTLIMIT=100
6,7c5
< CONFIG_TARGET_A13_OLINUXINO=y
< CONFIG_DRAM_ODT_EN=y
---
> CONFIG_DRAM_CLK=360
8a7
> CONFIG_DRAM_ODT_EN=y
19d17
< CONFIG_OF_BOARD_FIXUP=y
21,22d18
< CONFIG_FIT_BEST_MATCH=y
< CONFIG_SPL_BOARD_INIT=y
26,36d21
< CONFIG_OF_LIST="sun5i-a13-olinuxino sun5i-a13-som-256 sun5i-a13-som-512"
< CONFIG_MULTI_DTB_FIT=y
< CONFIG_ENV_OVERWRITE=y
< CONFIG_ENV_IS_IN_EXT4=y
< CONFIG_ENV_FAT_DEVICE_AND_PART=""
< CONFIG_ENV_EXT4_INTERFACE="mmc"
< CONFIG_ENV_EXT4_DEVICE_AND_PART="0:auto"
< CONFIG_ENV_ACCESS_IGNORE_FORCE=y
< CONFIG_BOOTCOUNT_LIMIT=y
< CONFIG_DM_BOOTCOUNT=y
< CONFIG_DM_BOOTCOUNT_I2C_EEPROM=y
39,45d23
< CONFIG_DM_I2C=y
< CONFIG_MISC=y
< CONFIG_I2C_EEPROM=y
< CONFIG_SYS_I2C_EEPROM_ADDR=0x50
< CONFIG_SYS_I2C_EEPROM_BUS=2
< CONFIG_SYS_EEPROM_SIZE=1024
< CONFIG_MMC_BROKEN_CD=y
47a26,32
> CONFIG_TARGET_A13_OLINUXINO=y
> CONFIG_SPL_BOARD_INIT=y
> CONFIG_BOARD_LATE_INIT=y
> CONFIG_OF_BOARD_FIXUP=y
> CONFIG_MMC_BROKEN_CD=y
> CONFIG_MULTI_DTB_FIT=y
> CONFIG_OF_LIST="sun5i-a13-olinuxino sun5i-a13-som-256 sun5i-a13-som-512"
50a36,45
> CONFIG_ENV_FAT_DEVICE_AND_PART=""
>
> CONFIG_ENV_OVERWRITE=y
> CONFIG_ENV_IS_IN_EXT4=y
> CONFIG_ENV_EXT4_INTERFACE="mmc"
> CONFIG_ENV_EXT4_DEVICE_AND_PART="0:auto"
> CONFIG_ENV_EXT4_FILE="/uboot.env"
> CONFIG_FIT_BEST_MATCH=y
>
> CONFIG_ENV_ACCESS_IGNORE_FORCE=y

By process of elimination, it appears to be the CONFIG_I2C_EEPROM option that is causing the compiler errors to occur.

More info: The issue appears in mainline u-boot 2021.04, and appears to have been fixed (at least, it compiles without error) between release 2021.10 and 2022.01.