LS1012A Cannot boot without flash chip select I2C

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

LS1012A Cannot boot without flash chip select I2C

ソリューションへジャンプ
621件の閲覧回数
epoletaev
Contributor III

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 ###

 

ラベル(1)
タグ(3)
0 件の賞賛
返信
1 解決策
594件の閲覧回数
epoletaev
Contributor III

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;
}
/*

 

元の投稿で解決策を見る

0 件の賞賛
返信
1 返信
595件の閲覧回数
epoletaev
Contributor III

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;
}
/*

 

0 件の賞賛
返信