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.

DM385 + IPNC RDK3.8 -> 8-bit NAND flash is not detected in uboot?



Hi,

I'm working on custom DM385 board which uses 8-bit nand. Two boards with different NAND chip.(S34ML01G1 & MT29F1G08) but not a single NAND is getting detected. if we use same uboot in x16 bit DM385 board. It is detecting NAND.

When we read maf_id and device_id  i get 0x17 & 0x17 in uboot.

GPMC_CONFIG1 -> 0x00000800

CONTROL_STATUS -> 0x00000317

UBOOT  -> arago-project.org/.../
KERNEL -> arago-project.org/.../

can anybody help to solve these.

Thanks & regards,

Ganesh

  • Ganesh,

    What is your HW pull-up/pull-down for BTMODE[12] (ball R3)?

    http://arago-project.org/git/projects/?p=u-boot-ipnc-rdk-dm81xx.git;a=blobdiff;f=arch/arm/cpu/arm_cortexa8/ti81xx/sys_info.c;h=d8f7d3a7e47824bd9d65382063312c4f2026ec4c;hp=446f0d22673d6d6dfe505ef027447ad9739d2401;hb=f8466a54a20c05484c1f3d179dfe7ed97e280ffd;hpb=d4600377385cb7b35c77ec7d60f1a5edc540687b

            bw = __raw_readl(CONTROL_STATUS) & (SYSBOOT_BW_MASK);
            bw >>= SYSBOOT_BW_POS;

  • Hi Chris,

    BTMODE12 -> pull-down to ground.

    In our case, we call get_sysboot_ipnc_bw(void)

    So we changed  #define SYSBOOT_IPNC_BW_POS    (12) to (16)

    and also these

     bw = __raw_readl(CONTROL_STATUS) & (SYSBOOT_IPNC_BW_MASK);
     bw >>= SYSBOOT_IPNC_BW_POS;
     if (bw == 0)    /* 8-bit nand if BTMODE BW pin on board is OFF */
           return 0;
     else if (bw == 1)/* 16-bit nand if BTMODE BW pin on board is ON */
           return 1;

    regard,

    Ganesh

  • Ganesh,

    Device ID 0x17 is not in the Table 4-14. Supported NAND Devices of TRM.

  • Hi Chris,

    that is the problem,

    device_id & maf_id is 0x17 which is totally wrong.

    i tried to read device_id and maf_id two times

    chip->cmdfunc(mtd, NAND_CMD_RESET, -1, -1);
    /* Send the command for reading device ID */
    chip->cmdfunc(mtd, NAND_CMD_READID, 0x00, -1);

    /* Read manufacturer and device IDs */
    *maf_id = chip->read_byte(mtd);
    dev_id = chip->read_byte(mtd);

    chip->cmdfunc(mtd, NAND_CMD_READID, 0x00, -1);

    /* Read manufacturer and device IDs */
    tmp_manf = chip->read_byte(mtd);
    tmp_id = chip->read_byte(mtd);

    printk(KERN_INFO "%s: second ID read did not match "
    "%02x,%02x,%02x,%02x against %02x,%02x\n", __func__,
    *maf_id, dev_id, third_id, fourth_id, tmp_manf, tmp_id);


    nand_get_flash_type: second ID read did not match 17,17 against 17,17.


    which is wrong. i need to know how to solve these problem.

    But if convert 0x17 in binary format it is more like 10111 -> If see schematic it is actually reading BTMODE[0]-BTMODE[4] value which is SD Boot.

    To confirm what i'm assuming, i removed jumper from BTMODE[2] now it is GND and i'm getting maf_id and dev_id as 0x13 & 0x13 -> 10011[NAND boot value].

    Can you tell me the reason why it is acting like these.




    regards,

    Ganesh