Our custom LS1012A board missing I2C flash select chip.
On older U-Boot it was working fine.
On newer U-Boot it seems has strict check for that chip and refuses to boot.
Is there a way to disable this check in board config?
Boot log:
SoC: LS1012AE Rev2.0 (0x87040020)
Clock Configuration:
CPU0(A53):1000 MHz
Bus: 250 MHz DDR: 1000 MT/s
Reset Configuration Word (RCW):
00000000: 0800000a 00000000 00000000 00000000
00000010: 35080000 c000000c 40000000 00001800
00000020: 00000000 00000000 00000000 00014571
00000030: 00000000 18c2a120 00000096 00000000
DRAM: 958 MiB
Using SERDES1 Protocol: 13576 (0x3508)
Core: 17 devices, 13 uclasses, devicetree: separate
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from SPIFlash... SF: Detected n25q00a with page size 256 Bytes, erase size 64 KiB, total 128 MiB
OK
In: serial
Out: serial
Err: serial
Model: LS1012A RDB Board
Board: LS1012ARDB checkboard: Cannot find udev for a bus 0
initcall sequence 00000000b7bd2140 failed at call 000000008201d678 (err=-6)
### ERROR ### Please RESET the board ###
Solved! Go to Solution.
OK, I edited parts of U-Boot to bypass this error, just by returning zero after error happens.
Looks like that's working, system boots. Not sure about implications.
--- a/board/freescale/ls1012ardb/ls1012ardb.c
+++ b/board/freescale/ls1012ardb/ls1012ardb.c
@@ -52,7 +52,7 @@ int checkboard(void)
if (ret) {
printf("%s: Cannot find udev for a bus %d\n", __func__,
bus_num);
- return -ENXIO;
+ return 0;//-ENXIO;
}
ret = dm_i2c_read(dev, I2C_MUX_IO_1, &in1, 1);
#else /* Non DM I2C support - will be removed */
@@ -203,7 +203,7 @@ int esdhc_status_fixup(void *blob, const char *compat)
if (ret) {
printf("%s: Cannot find udev for a bus %d\n", __func__,
bus_num);
- return -ENXIO;
+ return 0;//-ENXIO;
}
ret = dm_i2c_read(dev, I2C_MUX_IO_1, &io, 1);
#else
@@ -281,7 +281,7 @@ static int switch_to_bank1(void)
if (ret) {
printf("%s: Cannot find udev for a bus %d\n", __func__,
bus_num);
- return -ENXIO;
+ return 0;// -ENXIO;
}
/*
OK, I edited parts of U-Boot to bypass this error, just by returning zero after error happens.
Looks like that's working, system boots. Not sure about implications.
--- a/board/freescale/ls1012ardb/ls1012ardb.c
+++ b/board/freescale/ls1012ardb/ls1012ardb.c
@@ -52,7 +52,7 @@ int checkboard(void)
if (ret) {
printf("%s: Cannot find udev for a bus %d\n", __func__,
bus_num);
- return -ENXIO;
+ return 0;//-ENXIO;
}
ret = dm_i2c_read(dev, I2C_MUX_IO_1, &in1, 1);
#else /* Non DM I2C support - will be removed */
@@ -203,7 +203,7 @@ int esdhc_status_fixup(void *blob, const char *compat)
if (ret) {
printf("%s: Cannot find udev for a bus %d\n", __func__,
bus_num);
- return -ENXIO;
+ return 0;//-ENXIO;
}
ret = dm_i2c_read(dev, I2C_MUX_IO_1, &io, 1);
#else
@@ -281,7 +281,7 @@ static int switch_to_bank1(void)
if (ret) {
printf("%s: Cannot find udev for a bus %d\n", __func__,
bus_num);
- return -ENXIO;
+ return 0;// -ENXIO;
}
/*