This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: How to decrease LPDDR4 frequency of TDA4?

Part Number: TDA4VM


Dear experts:

On our PCB, we use the same RAM chip as EVM board, and with EVM's default DDR config, TDA4 booted well.

But TDA4 may hang at U-Boot SPL stage while jumping from SRAM to DDR RAM, we think there may be some DDR timing issue on our PCB, so we want to decrease LPDDR4 frequency to reproduct this problem.

I followed the instructions in AM752x_DRA82x_TDA4x_DDRSS_RegConfigTool.xlsm, set 'DDR Memory Frequency' to 1200 and left all the other options untouched, then build new tiboot3.bin, TDA4 boot fails.

UART log:

U-Boot SPL 2019.01 (Apr 24 2020 - 12:33:06 +0800)
SYSFW ABI: 2.9 (firmware rev 0x0013 '19.12.1-v2019.12a (Terrific Lla')
Reading on-board EEPROM at 0x50 failed 1
j721e_ddrss_probe(dev=41c87ab8)
j721e_ddrss_ofdata_to_priv(dev=41c87ab8)
j721e_ddrss_power_on(ddrss=41cccb04)
LPDDR4_Probe: PASS
LPDDR4_Init: PASS
--->>> LPDDR4 Initialization is in progress ... <<<---
j721e_lpddr4_ack_freq_upd_req: received freq change req: req type = 1, req no. = 0
wait_for_bit_le32: Timeout (reg=00114080 mask=80 wait_set=1)
Timeout during frequency handshake
### ERROR ### Please RESET the board ###

My 2400MHz config dtsi is attached here

k3-j721e-ddr-evm-lp4-2400.dtsi.zip

Could you please give me some guidance about how to decrease LPDDR4 frequency? And it cannot be better if you share with me a bootable dtsi file that config LPDDR4 at 2400MHz or some other lower frequency.

Thanks.

  • Hi Felix xu,

    The timeout value is very low. Please try this change in u-boot dtsi. Assuming that parameters are all good:

    diff --git a/drivers/ram/k3-j721e/k3-j721e-ddrss.c b/drivers/ram/k3-j721e/k3-j721e-ddrss.c
    index bbd5f7de19..9feb0aa766 100644
    --- a/drivers/ram/k3-j721e/k3-j721e-ddrss.c
    +++ b/drivers/ram/k3-j721e/k3-j721e-ddrss.c
    @@ -72,7 +72,7 @@ static void j721e_lpddr4_ack_freq_upd_req(void)
    for (counter = 0; counter < ddrss->ddr_fhs_cnt; counter++) {
    if (wait_for_bit_le32(ddrss->ddrss_ctrl_mmr +
    CTRLMMR_DDR4_FSP_CLKCHNG_REQ_OFFS, 0x80,
    - true, 10, false)) {
    + true, 10000, false)) {
    printf("Timeout during frequency handshake\n");
    hang();
    }

  • Hi Keerthy:

    Customer confirmed that use you provided patch they can working at 2400MT/s speed.

    Thanks a lot!

    Han Tao