TDA2EG-17: TDA2EGBDQCBDQ1

Part Number: TDA2EG-17
Other Parts Discussed in Thread: DRA722, PCF8575

Hi, ti expert

Since the previous question had not been answered for a long time, I created a new one. Some related questions can be found in the previous question. 

Links are "e2e.ti.com/.../3583390

I am using our costom board to boot from SD card. But it always shows "SRAM: identified size not same as expected size identified: 0 expected: 40000000".

Our costom board use two “MT41K256M16TW-107AATP” DDR. I follow the document "sprac36e.pdf", fill in some parameters in the "EMIF_RegisterConfig.xlsm" and update the value of register.

However, it still failed.

Can these situation cause the problem?

  • I found that the CAS Latency for the parameter "EMIF_REGISTERCONFIG. CONF" is a maximum of 11. But our DDR CAS Latency has a value of 13.
  • I fill nothing is the sheet "Step2-BoardDetails", because i think this is the hardware-related parameter.

The following "8360.EMIF_RegisterConfig.zip" shows the configuration.

Thinks

  • Hi,

    Sorry we missed your previous question, and thanks for the detailed information.

    A DDR3 CAS latency of 13 is typically to operate at much faster frequencies than the TDA2EG-17 can support. As the DRAM will be operated at a slower speed than it supports, a reduced CAS latency can be used. In this case, it appears the DRAM part you have selected can operate at 666 MHz with a CAS latency of 9, and a CWL of 7. Can you update these parameters in the XLS on tab "Step3-DDRTimings"?

    Unfortunately, the XLS cell values in step 2A on tab "Step2-BoardDetails" should have defaulted to an empty value. Ideally, you should enter the trace values from your PCB. However, I would recommend that you clear them out initially to see if it resolves your issue. 

    Thanks,
    Kevin

  • Hi,

    Thank you for your help.

    When i clear the value on tab  "Step2-BoardDetails" , It seems that the previous problem has been solved.

    But the log stopped on "Loading Environment from MMC... *** Warning - bad CRC, using default environment". Could you find some problem from the log information. I will continue to troubleshoot!

    Following is the full log information

    U-Boot SPL 2019.01-00014-gf454ae0ae9-dirty (Feb 01 2021 - 17:17:46 +0800)

    DRA722-GP ES2.1
    Trying to boot from MMC1
    no pinctrl state for default mode
    unable to get I2C bus. ret 1
    tps65903x: could not set LDO1 voltage.
    no pinctrl state for default mode
    Loading Environment from MMC... *** Warning - bad CRC, using default environment

    And I add the log which has the debug information. 

    AddDebugLog.txt

    Thanks!

  • Hi,

    Can you disable UHS for mmc by removing the supplies in the SDHCI device tree node:

    diff --git a/arch/arm/dts/dra72-evm-common.dtsi b/arch/arm/dts/dra72-evm-common.dtsi
    index 2e485a13df..fd4dbacd8c 100644
     
            vmain: fixedregulator-vmain {
    diff --git a/arch/arm/dts/dra72-evm-common.dtsi b/arch/arm/dts/dra72-evm-common.dtsi
    index 2e485a13df..fd4dbacd8c 100644
    --- a/arch/arm/dts/dra72-evm-common.dtsi
    +++ b/arch/arm/dts/dra72-evm-common.dtsi
    @@ -405,7 +405,6 @@
            status = "okay";
            pinctrl-names = "default";
            pinctrl-0 = <&mmc1_pins_default>;
    -       vmmc-supply = <&evm_3v3_sd>;
            bus-width = <4>;
            /*
             * SDCD signal is not being used here - using the fact that GPIO mode
    diff --git a/arch/arm/dts/dra72-evm-revc.dts b/arch/arm/dts/dra72-evm-revc.dts
    index bf588d0072..12b48f14c1 100644
    --- a/arch/arm/dts/dra72-evm-revc.dts
    +++ b/arch/arm/dts/dra72-evm-revc.dts
    @@ -105,7 +105,6 @@
            pinctrl-4 = <&mmc1_pins_sdr50>;
            pinctrl-5 = <&mmc1_pins_ddr50_rev20 &mmc1_iodelay_ddr50_conf>;
            pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev20_conf>;
    -       vqmmc-supply = <&ldo1_reg>;
     };
     
     &mmc2 {
    diff --git a/arch/arm/dts/dra72-evm-tps65917.dtsi b/arch/arm/dts/dra72-evm-tps65917.dtsi
    index 57bfe5caf5..ffd7ad137c 100644
    --- a/arch/arm/dts/dra72-evm-tps65917.dtsi
    +++ b/arch/arm/dts/dra72-evm-tps65917.dtsi
    @@ -146,5 +146,4 @@
     };
     
     &mmc1 {
    -       vqmmc-supply = <&ldo1_reg>;
     };
    diff --git a/arch/arm/dts/dra72-evm.dts b/arch/arm/dts/dra72-evm.dts
    index c572693b16..76665f89db 100644
    --- a/arch/arm/dts/dra72-evm.dts
    +++ b/arch/arm/dts/dra72-evm.dts
    @@ -64,7 +64,6 @@
            pinctrl-4 = <&mmc1_pins_sdr50>;
            pinctrl-5 = <&mmc1_pins_ddr50_rev10>;
            pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev10_conf>;
    -       vqmmc-supply = <&ldo1_reg>;
     };
    


    Can you try above change on your side in the u-boot and see if it helps you proceed further.

    Best Regards,
    Keerthy

  • Hi,

    Thanks for your replying.

    Unfortunately, follow your instructions and nothing seems to have changed!

    The same display:

    U-Boot SPL 2019.01-00014-gf454ae0ae9-dirty (Mar 05 2021 - 17:41:40 +0800)
    DRA722-GP ES2.1
    Trying to boot from MMC1
    no pinctrl state for default mode
    unable to get I2C bus. ret 1
    tps65903x: could not set LDO1 voltage.
    no pinctrl state for default mode
    Loading Environment from MMC... *** Warning - bad CRC, using default environment

    These files whick i have changed!

    File: dra72-evm-common.dtsi

    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&mmc1_pins_default>;
    //vmmc-supply = <&evm_3v3_sd>;
    bus-width = <4>;

    File: dra72-evm-revc.dts

    pinctrl-4 = <&mmc1_pins_sdr50>;
    pinctrl-5 = <&mmc1_pins_ddr50_rev20 &mmc1_iodelay_ddr50_conf>;
    pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev20_conf>;
    //vqmmc-supply = <&ldo1_reg>;

    File: dra72-evm-tps65917.dtsi

    &mmc1 {
    //vqmmc-supply = <&ldo1_reg>;
    };

    File: dra72-evm.dts
    pinctrl-4 = <&mmc1_pins_sdr50>;
    pinctrl-5 = <&mmc1_pins_ddr50_rev10>;
    pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev10_conf>;
    //vqmmc-supply = <&ldo1_reg>;

    So I wonder if I haven't modified some IIC Settings for PMIC?

    Thanks

  • Hi,

    Your logs show:

    "unable to get I2C bus. ret 1
    tps65903x: could not set LDO1 voltage."

    Do you have a different PMIC on your board? if so have you changed the dt entries for that?

    - Keerthy

  • Hi,

    Yes, I used TPS65263Q as the PMIC, And i am a new fish.

    So I'm currently looking for, where to modify the I2C driver and device tree to drive the 1.8V power supply.

    Thanks

  • Hi,

    I could not find a Linux/u-boot driver for TPS65263Q. I believe by default power on it should drive the right voltage
    values. Can you please confirm that your voltages are all correct?

    - Keerthy

  • Hi,

    I could not find a Linux/u-boot driver for TPS65263Q

    -> Yes,i think so. Next step i should wirte driver for TPS65262Q.

    I believe by default power on it should drive the right voltage values, Can you please confirm that your voltages are all correct?

    -> From the datasheet, I should drive the chip through I2C to output 1.8V. And from the log and datasheet, I don't think there's 1.8V.

    Thanks

  • Okay. I will wait for your feedback.

    - Keerthy

  • Hi Keerthy J

    Sorry for reply late. I'm new and learning uboot and Linux, so it's going to be slow.

    Because in our costom board, we use the PMIC TPS65263Q and LP87332DRHDTQ1 instead of TPS65917 and TPS659038. So i have some questions.

    1.The function vcores_init in the board/ti/dra7xx/evm.c, we have this code *omap_vcores = &dra722_volts; 

    int the struct dra722_volts, 

    struct vcores_data dra722_volts = {
    .mpu.value[OPP_NOM] = VDD_MPU_DRA7_NOM,
    .mpu.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_MPU_NOM,
    .mpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,
    .mpu.addr = TPS65917_REG_ADDR_SMPS1,
    .mpu.pmic = &tps659038,
    .mpu.abb_tx_done_mask = OMAP_ABB_MPU_TXDONE_MASK,

    .core.value[OPP_NOM] = VDD_CORE_DRA7_NOM,
    .core.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_CORE_NOM,
    .core.efuse.reg_bits = DRA752_EFUSE_REGBITS,
    .core.addr = TPS65917_REG_ADDR_SMPS2,
    .core.pmic = &tps659038,

    /*
    * The DSPEVE, GPU and IVA rails are usually grouped on DRA72x
    * designs and powered by TPS65917 SMPS3, as on the J6Eco EVM.
    */
    .gpu.value[OPP_NOM] = VDD_GPU_DRA7_NOM,
    .gpu.value[OPP_OD] = VDD_GPU_DRA7_OD,
    .gpu.value[OPP_HIGH] = VDD_GPU_DRA7_HIGH,
    .gpu.value[OPP_PLUS] = VDD_GPU_DRA7_PLUS,
    .gpu.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_GPU_NOM,
    .gpu.efuse.reg[OPP_OD] = STD_FUSE_OPP_VMIN_GPU_OD,
    .gpu.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_GPU_HIGH,
    .gpu.efuse.reg[OPP_PLUS] = STD_FUSE_OPP_VMIN_GPU_PLUS,
    .gpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,
    .gpu.addr = TPS65917_REG_ADDR_SMPS3,
    .gpu.pmic = &tps659038,
    .gpu.abb_tx_done_mask = OMAP_ABB_GPU_TXDONE_MASK,

    .eve.value[OPP_NOM] = VDD_EVE_DRA7_NOM,
    .eve.value[OPP_OD] = VDD_EVE_DRA7_OD,
    .eve.value[OPP_HIGH] = VDD_EVE_DRA7_HIGH,
    .eve.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_DSPEVE_NOM,
    .eve.efuse.reg[OPP_OD] = STD_FUSE_OPP_VMIN_DSPEVE_OD,
    .eve.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_DSPEVE_HIGH,
    .eve.efuse.reg_bits = DRA752_EFUSE_REGBITS,
    .eve.addr = TPS65917_REG_ADDR_SMPS3,
    .eve.pmic = &tps659038,
    .eve.abb_tx_done_mask = OMAP_ABB_EVE_TXDONE_MASK,

    .iva.value[OPP_NOM] = VDD_IVA_DRA7_NOM,
    .iva.value[OPP_OD] = VDD_IVA_DRA7_OD,
    .iva.value[OPP_HIGH] = VDD_IVA_DRA7_HIGH,
    .iva.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_IVA_NOM,
    .iva.efuse.reg[OPP_OD] = STD_FUSE_OPP_VMIN_IVA_OD,
    .iva.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_IVA_HIGH,
    .iva.efuse.reg_bits = DRA752_EFUSE_REGBITS,
    .iva.addr = TPS65917_REG_ADDR_SMPS3,
    .iva.pmic = &tps659038,
    .iva.abb_tx_done_mask = OMAP_ABB_IVA_TXDONE_MASK,
    };

    we can see some code related with TPS65917 and tps659038, 

    • What are their roles and do they need to be modified

    • If all power supply is normal, can we not modify this code

    2. If i want to write driver for TPS65263Q and LP87332, where the code should be put? 

        Can i put the code in the drivers/power/palmas.c/palmas_mmc1_poweron_ldo function?

        Do I need to add their device information to device tree?

        Can I directly enable the LDO output of TPS65263Q and LP87332 through the function palmas_i2c_write_u8

    The current situation is still stuck in the common/spl/spl.c/board_init_r  in the SPL.

    Look forward to your reply!

    Thanks!

    • What are their roles and do they need to be modified

    • If all power supply is normal, can we not modify this code

    They are voltage rails feeding different voltage domains on SoC. They are needed
    for one time voltage setting in u-boot.

    If you trace back the scale_vcores(arch/arm/mach-omap2/clocks-common.c) function makes use of the above populated structures
    to set the voltages. If you believe the voltages at reset are correct you can try commenting out the function call altogether.


    2. If i want to write driver for TPS65263Q and LP87332, where the code should be put? 

        Can i put the code in the drivers/power/palmas.c/palmas_mmc1_poweron_ldo function?

        Do I need to add their device information to device tree?

        Can I directly enable the LDO output of TPS65263Q and LP87332 through the function palmas_i2c_write_u8

    The current situation is still stuck in the common/spl/spl.c/board_init_r  in the SPL.

    You try suggestion i gave for question above & see if you can boot?
    Also Can you point me to the exact line in board_init_r that you are stuck at?

    Best Regards,
    Keerthy

  • Hi Keerthy

    Follow your advice "Can you point me to the exact line in board_init_r that you are stuck at?"

    I add some log in in the board_init_r,then something strange happened.

    Before add debug code the log shows:

    U-Boot SPL 2019.01-00014-gf454ae0ae9-dirty (Apr 09 2021 - 11:21:18 +0800)
    DRA722-GP ES2.1
    Trying to boot from MMC1
    no pinctrl state for default mode
    drivers/power/palmas.c: palmas_mmc1_poweron_ldo: 50 ldo_volt:81 ldo_ctrl:80 volt
    drivers/power/palmas.c: palmas_i2c_write_u8: 184
    Function name is: i2c_get_chip_for_busnum
    drivers/i2c/omap24xx_i2c.c: omap_i2c_probe_chip: 1043
    unable to get I2C bus. ret 1
    tps65903x: could not set LDO1 voltage.
    no pinctrl state for default mode
    Loading Environment from MMC... drivers/block/blk-uclass.c: blk_post_probe: 643
    drivers/block/blk-uclass.c: blk_post_probe: 645
    *** Warning - bad CRC, using default environment
    Function name is: i2c_get_chip_for_busnum
    drivers/i2c/omap24xx_i2c.c: omap_i2c_probe_chip: 1043

    I just add print information between these two functions(spl_enable_clocks_for_vsdk, spl_setup_board_muxes), and only by adding print information between these two functions can the program continue to run.

    spl_enable_clocks_for_vsdk();
    ++printf("%s: %s: %d\n",__FILE__, __func__, __LINE__);
    spl_setup_board_muxes();

    The program can continue to run, the output information is shows:

    U-Boot SPL 2019.01-00014-gf454ae0ae9-dirty (Apr 09 2021 - 11:12:50 +0800)
    DRA722-GP ES2.1
    Trying to boot from MMC1
    no pinctrl state for default mode
    drivers/power/palmas.c: palmas_mmc1_poweron_ldo: 50 ldo_volt:81 ldo_ctrl:80 voltage:49
    drivers/power/palmas.c: palmas_i2c_write_u8: 184
    Function name is: i2c_get_chip_for_busnum
    drivers/i2c/omap24xx_i2c.c: omap_i2c_probe_chip: 1043
    unable to get I2C bus. ret 1
    tps65903x: could not set LDO1 voltage.
    no pinctrl state for default mode
    Loading Environment from MMC... drivers/block/blk-uclass.c: blk_post_probe: 643
    drivers/block/blk-uclass.c: blk_post_probe: 645
    *** Warning - bad CRC, using default environment

    common/spl/spl.c: board_init_r: 652
    Function name is: i2c_get_chip_for_busnum
    drivers/i2c/omap24xx_i2c.c: omap_i2c_probe_chip: 1043
    Function name is: i2c_get_chip_for_busnum
    drivers/i2c/omap24xx_i2c.c: omap_i2c_probe_chip: 1043
    Function name is: i2c_get_chip_for_busnum
    drivers/i2c/omap24xx_i2c.c: omap_i2c_probe_chip: 1043
    Function name is: i2c_get_chip_for_busnum
    Function name is: i2c_get_chip_for_busnum
    Function name is: i2c_get_chip_for_busnum


    U-Boot 2019.01-00014-gf454ae0ae9-dirty (Apr 09 2021 - 11:12:50 +0800)

    CPU : DRA722-GP ES2.1
    Model: TI DRA722
    Board: DRA72x EVM REV
    DRAM: 1 GiB
    NAND: 0 MiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from MMC... drivers/block/blk-uclass.c: blk_post_probe: 643
    drivers/block/blk-uclass.c: blk_post_probe: 645
    *** Warning - bad CRC, using default environment

    Function name is: i2c_get_chip_for_busnum
    drivers/i2c/omap24xx_i2c.c: omap_i2c_ofdata_to_platdata: 1070
    drivers/i2c/omap24xx_i2c.c: omap_i2c_probe: 1052
    drivers/i2c/omap24xx_i2c.c: omap_i2c_set_bus_speed: 1031
    drivers/i2c/omap24xx_i2c.c: omap_i2c_probe_chip: 1043
    Warning: fastboot.board_rev: unknown board revision
    Net: drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    pcf8575_i2c_write_le16 i2c write failed to addr 21
    Could not get PHY for ethernet@48484000: addr 3

    Warning: ethernet@48484000 using MAC address from ROM
    eth0: ethernet@48484000
    Hit any key to stop autoboot: 0
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    pcf8575_i2c_write_le16 i2c write failed to addr 21
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    Card did not respond to voltage select!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    Card did not respond to voltage select!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    Card did not respond to voltage select!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    drivers/i2c/omap24xx_i2c.c: omap_i2c_xfer: 1002
    i2c_write: error waiting for data ACK (status=0x116)
    read error from device: bdf35450 register: 0x51!
    Card did not respond to voltage select!
    Trying to boot Linux from eMMC ...
    switch to partitions #0, OK
    mmc1(part 0) is current device
    SD/MMC found on device 1
    4235840 bytes read in 30 ms (134.7 MiB/s)
    ** File not found /boot/dra72-evm.dtb **

    Starting kernel ...

    no ATAGS support: can't continue

    So I'm very confused. Can you help me to solve this problem.

    Thanks you very much!