Hello,
I have an issue with GPMC peripheral during boot process of AM6442 chip.
Short description of issue: In certain conditions, the u-boot code is hanging when I try to read a GPMC register (for example reg GPMC_REVISION).
Long description:
My setup is the following: AM6442 chip on a custom board, with boot from NAND (and initial tiboot3.bin boot file either on NAND or on SD card, I am testing both cases).
I am using this TI U-Boot version "ti-u-boot-08.06.00.007".
When fully booting from NAND, I have the following behavior:
- 1st call to U-Boot (running on R5F) --> no issues, boot is happening properly (including all accesses to GPMC registers)
- 2nd call to U-Boot (running on A53) --> the code is hanging after the first access to a GPMC register (in the initial code this is the GPMC_CONFIG7_0 register, and if I modify the code to first access GPMC_REVISION register, I have the same behavior)
When first booting on SD card and then switching to NAND and after initial R5F init, I have the following behavior:
- 1st call to U-Boot (running on R5F) --> no issues, boot is happening properly (including all accesses to GPMC registers)
- 2nd call to U-Boot (running on A53) --> no issues, boot is happening properly (including all accesses to GPMC registers).
- After that I have a 3rd call to U-Boot and finally the kernel is starting.
Can help me figure what is happening and find a way to solve that issue?
- I checked the status of the GPMC peripheral and associated clocks, everything seems to be ON in all cases (looking at ti calls dev_ops->is_on() and clk_ops->is_on()).
- When the code hangs, there is no error message, this doesn't look like a C code crash. A printf added just before a call to readl_relaxed(gpmc_base + xxx) is working properly but any code added after readl_relaxed() is not called.
- I cannot figure what is happening differently in the case I first run from SD... By the time U-Boot runs on A53, U-Boot code is in NAND in both cases.
Best regards,
Stephane