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.

DRA750: How to make the same uboot FW to support 2 different ram-sized custom board with the same CPU module

Part Number: DRA750
Other Parts Discussed in Thread: DRA752

Hi TI expert,

I'm working on two custom board with DRA752 ES2.0 with 2 different ram size, but I don't know how to differentiate two different ram-sized custom board at the same uboot FW.

Software (SDK) version :u-boot: U-Boot SPL 2016.05 + Linux kernel: 4.4.45

I check the function emif_get_dmm_regs() below and it seems like saying using board_ti_get_emif_size() can load different dmm_lisa_map_regs for different ram-sized custom board.

But I found board_ti_get_emif_size() always return 0. And I look into board_ti_get_emif_size(), board_ti_get_emif1_size() return 0 at line 304.

My question is why board_ti_get_emif_size() doesn't work and how to make it works? 

void emif_get_dmm_regs(const struct dmm_lisa_map_regs **dmm_lisa_regs)
{
    u64 ram_size;

    ram_size = board_ti_get_emif_size();

    switch (omap_revision()) {
    case DRA752_ES1_0:
    case DRA752_ES1_1:
    case DRA752_ES2_0:
        if (ram_size > CONFIG_MAX_MEM_MAPPED)
            *dmm_lisa_regs = &lisa_map_dra7_2GB;
        else
            *dmm_lisa_regs = &lisa_map_dra7_1536MB;
        break;
...
}

299 u64 __maybe_unused board_ti_get_emif1_size(void)
300 {
301     struct ti_common_eeprom *ep = TI_EEPROM_DATA;
302
303     if (ep->header != DRA7_EEPROM_HEADER_MAGIC)
304         return 0;
305
306     return ep->emif1_size;
307 }

  • Hi, Kevin.

    My opinion .

    1. What's the reference EVB schematic for your customer board?

    2. What's the SDK version? May you let me know which link you downloaded?

    it seems it try to read board(CPU) version in EEPROM, but it return fail.

    Do you mount EEPROM on your customer board?

    Gibbs

  • Update,

    You need to know origin EVB emif 1 or 2 design.

    If you do not follow EVB DDR size, you may reference this document.

    board_detect.h

    /**
     * board_ti_get_emif1_size() - Get size of the DDR on emif1 for TI EVMs
     *
     * Return: NULL if eeprom was'nt read or emif1_size is not available.
     */
    u64 board_ti_get_emif1_size(void);
    
    /**
     * board_ti_get_emif2_size() - Get size of the DDR on emif2 for TI EVMs
     *
     * Return: NULL if eeprom was'nt read or emif2_size is not available.
     */
    u64 board_ti_get_emif2_size(void);

  • Kevin,

    Update,

    Please check EVB sheet for section 2.2 & 3.5.3 Configuration EEPROM.

    https://www.ti.com/lit/pdf/sprui50

    1. If you do not mount EEPROM on your customer board, please "hard code" stuff this structure without EEPROM reading.

    2. If you chage DDR chip, please follow previsusly thread, please use emif tools first

    Thanks

    Gibbs