Rockchip RK3328 4-byte addressing problem in SPI
Marcin Woźniak
marcin.wadowice at gmail.com
Thu Dec 22 21:15:53 CET 2022
Hello,
I would like to let you know how i've lost about 2 weeks because of lack
of Rockchip BOOTROM documentation.
I tried to use Mainline Uboot to Boot NanoPI R2S using soldered SPI
Winbond 25Q256 chip.
I had to make some patches in Uboot core files to make it work.
First one adds SPI boot device. File
|arch/arm/mach-rockchip/rk3328/rk3328.c with adding: |
|[BROM_BOOTSOURCE_SPINOR] "/spi at ff190000", |const char * const
boot_devices ||
Second was |arch/arm/mach-rockchip/spl-boot-order.c and last if statement:|
|if (!uclass_get_device_by_of_offset(UCLASS_SPI, node, &parent)) return
BOOT_DEVICE_SPI;|
||
This patch is added because RockChip SPI driver is using UCLASS_SPI
instead of SPI_FLASH so boot device wasn't connecting with right DM
Driver rk_spi.c
Third one fixed SPL and it was added at the end: |drivers/spi/rk_spi.c
|
|DM_DRIVER_ALIAS(rockchip_rk3288_spi, rockchip_rk3328_spi);|
After that board booted successfully. Second bigger problem was a
mistake and lack of RockChip Bootrom documentation.
I've soldered 32Mbyte Flash and didn't know that U-Boot in SPL was
switching it's 3-byte address mode to 4-byte one to gain access to full
32 Mbytes.
The problem was that board booted in cold-start but after issuing
"reset" - it was going to MASKROM mode like no SPI was soldered or empty.
After loosing two weeks i figured that RockChip bootrom talks to SPI
using only 3-byte addressing.
So leaving 4-byte switched by UBoot SPI chip made it unusable to
RockChip Bootrom. I found this by dumping Bootrom and decompiling it.
I don't know if it's enough information to make a patch to MainLine (at
least for SPI boot in RK3328).
Problem with 3-byte addressing is a complete different story.
Sorry for my "unproffesional" mail. I am writing this type of message
for a first time.
Marcin
||
||||||||
||
More information about the U-Boot
mailing list