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.

AM3357: Unable to mount THGBMJG6C1LBAU7 emmc flash with the processor.

Part Number: AM3357
Other Parts Discussed in Thread: CSD

Hi,

We am trying to use THGBMJG6C1LBAU7 EMMC with the AM3357 processor on our hardware. The UBOOT is on the SPI flash and from there it is executing the linux kernel's zImage which fetches the rootfs onto the emmc flash. But it cannot do it because THGBMJG6C1LBAU7 (manufactured by Kioxia prev. Toshiba) is not mounting due to some unrecognizable error.

We tried the same flashing and booting process with the MTFC2GMVEA-0M-WT-Micron EMMC and it is working without any hassle. One thing that is different between the two EMMCs is that one that is working (MTFC2GMVEA-0M-WT-Micron EMMC) has it mentioned in the datasheet that it's backwards compatible with the previous EMMC versions while the one that is not working does not mention this in the datasheet, however some backward-compatibility mode is mentioned, quoting the two points below:

Note 1: The e-MMC must always start with the backward-compatible interface timing. The timing mode can be switched to
high-speed interface timing by the host sending the SWITCH command (CMD6) with the argument for high-speed
interface select.
Note 3: For compatibility with e-MMCs that support the v4.2 standard or earlier, host should not use >26MHz before switching tohigh-speed interface timing.

Please suggest a solution on what can be done in the emmc driver or the device tree to make the emmc available for the kernel use. 

Version of Linux Kernel: 4.19.94

Not-working EMMC Flash part No: THGBMJG6C1LBAU7

Working EMMC Flash part no: MTFC2GMVEA-0M-WT-Micron.

Attached is the device tree file of our board. Thanks.

my_dts.txt
/*
 * Copyright (C) 2022 Calixto Systems Pvt Ltd - http://www.calixto.com/
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/*
 * AM335x IEC61850 MODULE
 * http:// http://www.calixto.co.in/
 * Modified from am335x-evmsk
 * Modified by Vipin Vijayan <vipin.v@calixto.in>
 */

/dts-v1/;

#include "am33xx.dtsi"
#include <dt-bindings/pwm/pwm.h>
#include <dt-bindings/interrupt-controller/irq.h>

/ {
        model = "AM335X-IEC61850-MODULE";
        compatible = "ti,am335x-evm", "ti,am33xx";

        aliases {
                ethernet0 = &pruss_emac0;
                ethernet1 = &pruss_emac1;
        };

        cpus {
                cpu@0 {
                        cpu0-supply = <&vdd_mpu_supply>;
                };
        };

        memory {
                device_type = "memory";
                reg = <0x80000000 0x10000000>; /* 256MB */
        };

        vmmcsd_fixed: fixedregulator@1 {
                compatible = "regulator-fixed";
                regulator-name = "vmmcsd-regulator";
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
                enable-active-high;
                regulator-always-on;
        };

        vdd_mpu_supply: fixedregulator@2 {
                compatible = "regulator-fixed";
                regulator-name = "vdd-mpu-regulator";
                regulator-min-microvolt = <912500>;
                regulator-max-microvolt = <1351500>;
                regulator-boot-on;
                regulator-always-on;
        };

        leds {
                pinctrl-names = "default", "sleep";
                pinctrl-0 = <&user_leds_default>;
                pinctrl-1 = <&user_leds_sleep>;

                compatible = "gpio-leds";

                led@1 {
                        label = "led1";
                        gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
                led@2 {
                        label = "led2";
                        gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
                led@3 {
                        label = "led3";
                        gpios = <&gpio1 29 GPIO_ACTIVE_HIGH>;
                        linux,default-trigger = "heartbeat";
                        default-state = "on";
                };
                led@4 {
                        label = "led4";
                        gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
                        linux,default-trigger = "heartbeat";
                        default-state = "on";
                };

        };

        gpio_buttons: gpio_buttons@0 {
                compatible = "gpio-keys";
                pinctrl-names = "default";
                pinctrl-0 = <&gpio_keys_s0>;
                #address-cells = <1>;
                #size-cells = <0>;

                switch@1 {
                        label = "button0";
                        linux,code = <0x100>;
                        gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
                };
        };

        aliases {
                ethernet0 = &pruss_emac0;
                ethernet1 = &pruss_emac1;
        };

        /* Dual mac ethernet application node on icss */
        pruss_eth: pruss_eth {
                compatible = "ti,am3359-prueth";
                prus = <&pru0>, <&pru1>;
                firmware-name = "ti-pruss/am335x-pru0-prueth-fw.elf",
                                "ti-pruss/am335x-pru1-prueth-fw.elf";
                sram = <&ocmcram>;
                interrupt-parent = <&pruss_intc>;
                mii-rt = <&pruss_mii_rt>;
                pinctrl-0 = <&pruss_eth_default>;
                pinctrl-names = "default";
                interrupts = <20>, <21>;
                interrupt-names = "rx_red_hp", "rx_red_lp";

                pruss_emac0: ethernet-mii0 {
                        phy-handle = <&pruss_eth0_phy>;
                        phy-mode = "mii";
                        interrupts = <20>, <22>, <23>, <26>;
                        interrupt-names = "rx", "tx", "hsrprp_ptp_tx",
                                          "emac_ptp_tx";
                        /* Filled in by bootloader */
                        local-mac-address = [00 00 00 00 00 00];
                };

                pruss_emac1: ethernet-mii1 {
                        phy-handle = <&pruss_eth1_phy>;
                        phy-mode = "mii";
                        interrupts = <21>, <23>, <24>, <27>;
                        interrupt-names = "rx", "tx", "hsrprp_ptp_tx",
                                          "emac_ptp_tx";
                        /* Filled in by bootloader */
                        local-mac-address = [00 00 00 00 00 00];
                };
        };


};

&am33xx_pinmux {

        user_leds_default: user_leds_default {
                pinctrl-single,pins = <
                        AM33XX_IOPAD(0x800, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* (U7) gpmc_ad0.gpio1[0] */
                        AM33XX_IOPAD(0x814, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* (V8) gpmc_ad5.gpio1[5] */
                        AM33XX_IOPAD(0x87c, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* (V6) gpmc_csn0.gpio1[29] */
                        AM33XX_IOPAD(0x884, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* (V9) gpmc_csn2.gpio1[31] */
                >;
        };

        user_leds_sleep: user_leds_sleep {
                pinctrl-single,pins = <
                        AM33XX_IOPAD(0x800, PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (U7) gpmc_ad0.gpio1[0] */
                        AM33XX_IOPAD(0x814, PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (V8) gpmc_ad5.gpio1[5] */
                        AM33XX_IOPAD(0x87c, PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (V6) gpmc_csn0.gpio1[29] */
                        AM33XX_IOPAD(0x884, PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (V9) gpmc_csn2.gpio1[31] */

                >;
        };

        gpio_keys_s0: gpio_keys_s0 {
                pinctrl-single,pins = <
                        AM33XX_IOPAD(0x964, PIN_INPUT | MUX_MODE7) /* (C18) eCAP0_in_PWM0_out.gpio0[7] */
                >;
        };

        uart0_pins: pinmux_uart0_pins {
                pinctrl-single,pins = <
                        AM33XX_IOPAD(0x970, PIN_INPUT_PULLUP | MUX_MODE0)       /* uart0_rxd.uart0_rxd */
                        AM33XX_IOPAD(0x974, PIN_OUTPUT_PULLDOWN | MUX_MODE0)    /* uart0_txd.uart0_txd */
                >;
        };

        uart1_pins: pinmux_uart1_pins {
               pinctrl-single,pins = <
                        AM33XX_IOPAD(0x980, PIN_INPUT | MUX_MODE0) /* (D16) uart1_rxd.uart1_rxd */
                        AM33XX_IOPAD(0x984, PIN_OUTPUT | MUX_MODE0) /* (D15) uart1_txd.uart1_txd */
               >;
        };

        mmc1_pins_default: pinmux_mmc1_pins {
                pinctrl-single,pins = <
                        AM33XX_IOPAD(0x8F0, PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat3.mmc0_dat3 */
                        AM33XX_IOPAD(0x8F4, PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat2.mmc0_dat2 */
                        AM33XX_IOPAD(0x8F8, PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat1.mmc0_dat1 */
                        AM33XX_IOPAD(0x8FC, PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat0.mmc0_dat0 */
                        AM33XX_IOPAD(0x900, PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_clk.mmc0_clk */
                        AM33XX_IOPAD(0x904, PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_cmd.mmc0_cmd */
                >;
        };

        mmc1_pins_sleep: pinmux_mmc1_pins_sleep {
                pinctrl-single,pins = <
                        AM33XX_IOPAD(0x8F0, PIN_INPUT_PULLDOWN | MUX_MODE7)
                        AM33XX_IOPAD(0x8F4, PIN_INPUT_PULLDOWN | MUX_MODE7)
                        AM33XX_IOPAD(0x8F8, PIN_INPUT_PULLDOWN | MUX_MODE7)
                        AM33XX_IOPAD(0x8FC, PIN_INPUT_PULLDOWN | MUX_MODE7)
                        AM33XX_IOPAD(0x900, PIN_INPUT_PULLDOWN | MUX_MODE7)
                        AM33XX_IOPAD(0x904, PIN_INPUT_PULLDOWN | MUX_MODE7)
                >;
        };

        spi0_pins: pinmux_spi0_pins {
                pinctrl-single,pins = <
                        AM33XX_IOPAD(0x950, PIN_INPUT_PULLUP | MUX_MODE0 ) /* (A17) spi0_sclk.spi0_sclk */
                        AM33XX_IOPAD(0x954, PIN_INPUT_PULLUP | MUX_MODE0 ) /* (B17) spi0_d0.spi0_d0 */
                        AM33XX_IOPAD(0x958, PIN_OUTPUT_PULLUP | MUX_MODE0 ) /* (B16) spi0_d1.spi0_d1 */
                        AM33XX_IOPAD(0x95c, PIN_OUTPUT_PULLUP | MUX_MODE0 ) /* (A16) spi0_cs0.spi0_cs0 */
                >;
        };

        pruss_mdio_default: pruss_mdio_default {
                pinctrl-single,pins = <
                        AM33XX_IOPAD(0x88c, (PIN_OUTPUT | MUX_MODE5))           /* gpmc_clk.pr1_mdio_mdclk */
                        AM33XX_IOPAD(0x888, (PIN_INPUT  | MUX_MODE5))           /* gpmc_csn3.pr1_mdio_data */
                        AM33XX_IOPAD(0x838, PIN_OUTPUT | MUX_MODE7) /* (V13) gpmc_ad14.gpio1[14] */
                >;
        };

        pruss_eth_default: pruss_eth_default {
                pinctrl-single,pins = <
                        AM33XX_IOPAD(0x8a0, (PIN_INPUT  | MUX_MODE2))   /* dss_data0.pr1_mii_mt0_clk */
                        AM33XX_IOPAD(0x8b4, (PIN_OUTPUT | MUX_MODE2))   /* dss_data5.pr1_mii0_txd0 */
                        AM33XX_IOPAD(0x8b0, (PIN_OUTPUT | MUX_MODE2))   /* dss_data4.pr1_mii0_txd1 */
                        AM33XX_IOPAD(0x8ac, (PIN_OUTPUT | MUX_MODE2))   /* dss_data3.pr1_mii0_txd2 */
                        AM33XX_IOPAD(0x8a8, (PIN_OUTPUT | MUX_MODE2))   /* dss_data2.pr1_mii0_txd3 */
                        AM33XX_IOPAD(0x8cc, (PIN_INPUT  | MUX_MODE5))   /* dss_data11.pr1_mii0_rxd0 */
                        AM33XX_IOPAD(0x8c8, (PIN_INPUT  | MUX_MODE5))   /* dss_data10.pr1_mii0_rxd1 */
                        AM33XX_IOPAD(0x8c4, (PIN_INPUT  | MUX_MODE5))   /* dss_data9.pr1_mii0_rxd2 */
                        AM33XX_IOPAD(0x8c0, (PIN_INPUT  | MUX_MODE5))   /* dss_data8.pr1_mii0_rxd3 */
                        AM33XX_IOPAD(0x8a4, (PIN_OUTPUT | MUX_MODE2))   /* dss_data1.pr1_mii0_txen */
                        AM33XX_IOPAD(0x8d8, (PIN_INPUT  | MUX_MODE5))   /* dss_data14.pr1_mii_mr0_clk */
                        AM33XX_IOPAD(0x8dc, (PIN_INPUT  | MUX_MODE5))   /* dss_data15.pr1_mii0_rxdv */
                        AM33XX_IOPAD(0x8d4, (PIN_INPUT  | MUX_MODE5))   /* dss_data13.pr1_mii0_rxer */
                        AM33XX_IOPAD(0x8d0, (PIN_INPUT  | MUX_MODE5))   /* dss_data12.pr1_mii0_rxlink */
                        AM33XX_IOPAD(0x8e8, (PIN_INPUT  | MUX_MODE2))   /* dss_pclk.pr1_mii0_crs */

                        AM33XX_IOPAD(0x840, (PIN_INPUT  | MUX_MODE5))   /* gpmc_a0.pr1_mii_mt1_clk */
                        AM33XX_IOPAD(0x850, (PIN_OUTPUT | MUX_MODE5))   /* gpmc_a4.pr1_mii1_txd0 */
                        AM33XX_IOPAD(0x84c, (PIN_OUTPUT | MUX_MODE5))   /* gpmc_a3.pr1_mii1_txd1 */
                        AM33XX_IOPAD(0x848, (PIN_OUTPUT | MUX_MODE5))   /* gpmc_a2.pr1_mii1_txd2 */
                        AM33XX_IOPAD(0x844, (PIN_OUTPUT | MUX_MODE5))   /* gpmc_a1.pr1_mii1_txd3 */
                        AM33XX_IOPAD(0x860, (PIN_INPUT  | MUX_MODE5))   /* gpmc_a8.pr1_mii1_rxd0 */
                        AM33XX_IOPAD(0x85c, (PIN_INPUT  | MUX_MODE5))   /* gpmc_a7.pr1_mii1_rxd1 */
                        AM33XX_IOPAD(0x858, (PIN_INPUT  | MUX_MODE5))   /* gpmc_a6.pr1_mii1_rxd2 */
                        AM33XX_IOPAD(0x854, (PIN_INPUT  | MUX_MODE5))   /* gpmc_a5.pr1_mii1_rxd3 */
                        AM33XX_IOPAD(0x874, (PIN_OUTPUT | MUX_MODE5))   /* gpmc_wpn.pr1_mii1_txen */
                        AM33XX_IOPAD(0x864, (PIN_INPUT  | MUX_MODE5))   /* gpmc_a9.pr1_mii_mr1_clk */
                        AM33XX_IOPAD(0x868, (PIN_INPUT  | MUX_MODE5))   /* gpmc_a10.pr1_mii1_rxdv */
                        AM33XX_IOPAD(0x86c, (PIN_INPUT  | MUX_MODE5))   /* gpmc_a11.pr1_mii1_rxer */
                        AM33XX_IOPAD(0x878, (PIN_INPUT  | MUX_MODE5))   /* gpmc_ben1.pr1_mii1_rxlink */
                        AM33XX_IOPAD(0x8ec, (PIN_INPUT  | MUX_MODE2))   /* lcd_ac_bias_en.pr1_mii1_crs */
                        AM33XX_IOPAD(0x870, (PIN_INPUT  | MUX_MODE5))   /* gpmc_wait0.pr1_mii1_col */

                >;
        };

};


&pruss_mdio {
        pinctrl-0 = <&pruss_mdio_default>;
        pinctrl-names = "default";
        reset-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
        reset-delay-us = <11>; /* PHY datasheet states 1uS min */
        status = "okay";

        pruss_eth0_phy: ethernet-phy@1 {
                 reg = <1>;
        };

        pruss_eth1_phy: ethernet-phy@3 {
                 reg = <3>;
        };
};

&uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_pins>;
        status = "okay";
};

&uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart1_pins>;
        status = "okay";
};

&mmc1 {
        status = "okay";
        vmmc-supply = <&vmmcsd_fixed>;
        bus-width = <4>;
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&mmc1_pins_default>;
        pinctrl-1 = <&mmc1_pins_sleep>;
};

&rtc {
        system-power-controller;
};


&sgx {
      status = "okay";
};

&usb {
      status = "okay";
};

&usb_ctrl_mod {
      status = "okay";
};

&usb0_phy {
     status = "okay";
};

&usb1_phy {
     status = "okay";
};

&usb0 {
     status = "okay";
     dr_mode = "otg";
};

&usb1 {
     status = "okay";
     dr_mode = "otg";
};

&cppi41dma  {
     status = "okay";
};

/*
 * SPI Flash (1MiB)
 * 0x000000 - 0x01FFFF : SPL (128KiB)
 * 0x020000 - 0x09FFFF : U-Boot (512KiB)
 * 0x0A0000 - 0x0BFFFF : First copy of U-Boot Environment (128KiB)
 * 0x0C0000 - 0x0DFFFF : Second copy of U-Boot Environment (128KiB)
 */
&spi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&spi0_pins>;
        status = "okay";

        flash: s25fl064k@0 {
                 #address-cells = <1>;
                 #size-cells = <1>;
                 compatible = "st,s25fl064k";
                 spi-max-frequency = <25000000>;
                 reg = <0>;


                 partition@0 {
                         label = "u-boot-spl";
                         reg = <0x000000 0x020000>;
                 };


                 partition@1 {
                         label = "u-boot";
                         reg = <0x020000 0x080000>;
                 };

                 partition@2 {
                         label = "env1";
                         reg = <0x0C0000 0x020000>;
                 };

                 partition@3 {
                         label = "env2";
                         reg = <0x0E0000 0x020000>;
                 };

        };
};

&pruss_soc_bus {
        status = "okay";

        pruss: pruss@4a300000 {
                status = "okay";
        };
};

&tscadc {
        status = "okay";
        adc {
                ti,adc-channels = <0 1 2 3>;
        };
};

  • Hi Himanshi,

    You don't need to modify the kernel device tree &mmc1 node for both working and non-working eMMC devices, right?

    Please share the console boot log.

  • Hi,

    From Himanshi's team, no we are not modifying the device tree for working and non-working eMMC.

    Please find the boot log below.

    3252.boot_log.txt
    U-Boot SPL 2019.01-gb5811a0-dirty (Apr 25 2024 - 16:11:35 +0530)
    Trying to boot from SPI
    
    
    U-Boot 2019.01-gb5811a0-dirty (Apr 25 2024 - 16:11:35 +0530)
    
    CPU  : AM335X-GP rev 2.1
    Model: AM335X-IEC61850-MODULE
    DRAM:  256 MiB
    NAND:  0 MiB
    MMC:   OMAP SD/MMC: 0
    Loading Environment from SPI Flash... SF: Detected at25sf641 with page size 256 Bytes, erase size 4 KiB, total 8 MiB
    OK
    Net:   No ethernet found.
    Hit any key to stop autoboot:  0
    => sf probe 0
    SF: Detected at25sf641 with page size 256 Bytes, erase size 4 KiB, total 8 MiB
    => sf erase 0x0 0x1000
    SF: 4096 bytes @ 0x0 Erased: OK
    => reset
    resetting ...
    
    U-Boot SPL 2013.10-g756a473-dirty (Apr 25 2024 - 15:58:15)
    
    calixto > DDR initialized
    calixto > after sd ram init funUsing default environment
    
    usb_ether
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC e0:92:8f:2f:5d:99
    HOST MAC de:ad:be:af:00:00
    RNDIS ready
    musb-hdrc: peripheral reset irq lost!
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    ERROR: The remote end did not respond in time.
    at ether.c:2388/usb_eth_init()
    Problem booting with BOOTP
    ### ERROR ### Please RESET the board ###
    
    U-Boot SPL 2013.10-g756a473-dirty (Apr 25 2024 - 15:58:15)
    
    calixto > DDR initialized
    calixto > after sd ram init funUsing default environment
    
    usb_ether
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC e0:92:8f:2f:5d:99
    HOST MAC de:ad:be:af:00:00
    RNDIS ready
    musb-hdrc: peripheral reset irq lost!
    ERROR: The remote end did not respond in time.
    at ether.c:2388/usb_eth_init()
    Problem booting with BOOTP
    ### ERROR ### Please RESET the board ###
    CCCCCCCC
    U-Boot SPL 2013.10-g756a473-dirty (Apr 25 2024 - 15:58:15)
    
    calixto > DDR initialized
    calixto > after sd ram init funUsing default environment
    
    usb_ether
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC e0:92:8f:2f:5d:99
    HOST MAC de:ad:be:af:00:00
    RNDIS ready
    musb-hdrc: peripheral reset irq lost!
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    USB RNDIS network up!
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    Using usb_ether device
    TFTP from server 192.168.2.1; our IP address is 192.168.2.183
    Filename 'u-boot-restore.img'.
    Load address: 0x807fffc0
    Loading: ##########################
             730.5 KiB/s
    done
    Bytes transferred = 367292 (59abc hex)
    
    
    U-Boot 2013.10-g756a473-dirty (Apr 25 2024 - 15:58:15)
    
    I2C:   ready
    DRAM:  256 MiB
    NAND:  0 MiB
    MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1, OMAP SD/MMC: 2
    SF: Detected at25sf641 with page size 256 Bytes, erase size 4 KiB, total 8 MiB
    *** Warning - bad CRC, using default environment
    
    Net:   <ethaddr> not set. Validating first E-fuse MAC
    Could not get PHY for cpsw: addr 0
    cpsw, usb_ether
    Hit any key to stop autoboot:  0
    Booting for flashing ...
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC e0:92:8f:2f:5d:9b
    HOST MAC de:ad:be:af:00:00
    RNDIS ready
    musb-hdrc: peripheral reset irq lost!
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    USB RNDIS network up!
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    DHCP client bound to address 192.168.2.184
    SF: Detected at25sf641 with page size 256 Bytes, erase size 4 KiB, total 8 MiB
    SF: 786432 bytes @ 0x0 Erased: OK
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC e0:92:8f:2f:5d:9b
    HOST MAC de:ad:be:af:00:00
    RNDIS ready
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    USB RNDIS network up!
    Using usb_ether device
    TFTP from server 192.168.2.1; our IP address is 192.168.2.184
    Filename 'MLO.byteswap'.
    Load address: 0x80200000
    Loading: T ########
             20.5 KiB/s
    done
    Bytes transferred = 106252 (19f0c hex)
    SF: 106252 bytes @ 0x0 Written: OK
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC e0:92:8f:2f:5d:9b
    HOST MAC de:ad:be:af:00:00
    RNDIS ready
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    USB RNDIS network up!
    Using usb_ether device
    TFTP from server 192.168.2.1; our IP address is 192.168.2.184
    Filename 'u-boot.img'.
    Load address: 0x80200000
    Loading: T #####################################
             99.6 KiB/s
    done
    Bytes transferred = 528748 (8116c hex)
    SF: 528748 bytes @ 0x20000 Written: OK
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC e0:92:8f:2f:5d:9b
    HOST MAC de:ad:be:af:00:00
    RNDIS ready
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    USB RNDIS network up!
    Using usb_ether device
    TFTP from server 192.168.2.1; our IP address is 192.168.2.184
    Filename 'zImage'.
    Load address: 0x80200000
    Loading: T #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             ##################################
             1.3 MiB/s
    done
    Bytes transferred = 10994176 (a7c200 hex)
    using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
    MAC e0:92:8f:2f:5d:9b
    HOST MAC de:ad:be:af:00:00
    RNDIS ready
    high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
    USB RNDIS network up!
    Using usb_ether device
    TFTP from server 192.168.2.1; our IP address is 192.168.2.184
    Filename 'am335x-iec61850-module_flashing.dtb'.
    Load address: 0x80f80000
    Loading: T ###
             5.9 KiB/s
    done
    Bytes transferred = 34227 (85b3 hex)
    Kernel image @ 0x80200000 [ 0x000000 - 0xa7c200 ]
    ## Flattened Device Tree blob at 80f80000
       Booting using the fdt blob at 0x80f80000
       Loading Device Tree to 8fb36000, end 8fb415b2 ... OK
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 4.19.94-gdfb7d7b06-dirty (vipin@vipin-HP-15-Notebook-PC) (gcc version 9.3.0 (GCC)) #23 PREEMPT Fri Dec 30 12:49:36 IST 2022
    [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [    0.000000] OF: fdt: Machine model: AM335X-IEC61850-MODULE
    [    0.000000] Memory policy: Data cache writeback
    [    0.000000] efi: Getting EFI parameters from FDT:
    [    0.000000] efi: UEFI not found.
    [    0.000000] cma: Reserved 48 MiB at 0x8c800000
    [    0.000000] CPU: All CPU(s) started in SVC mode.
    [    0.000000] AM335X ES2.1 (neon)
    [    0.000000] random: get_random_bytes called from start_kernel+0xa8/0x440 with crng_init=0
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 64960
    [    0.000000] Kernel command line: console=ttyO0,115200n8 ip=dhcp rw
    [    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
    [    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
    [    0.000000] Memory: 190168K/262144K available (9216K kernel code, 311K rwdata, 2784K rodata, 7168K init, 252K bss, 22824K reserved, 49152K cma-reserved, 0K highmem)
    [    0.000000] Virtual kernel memory layout:
    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    [    0.000000]     vmalloc : 0xd0800000 - 0xff800000   ( 752 MB)
    [    0.000000]     lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
    [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
    [    0.000000]       .text : 0x(ptrval) - 0x(ptrval)   (10208 kB)
    [    0.000000]       .init : 0x(ptrval) - 0x(ptrval)   (7168 kB)
    [    0.000000]       .data : 0x(ptrval) - 0x(ptrval)   ( 312 kB)
    [    0.000000]        .bss : 0x(ptrval) - 0x(ptrval)   ( 253 kB)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000]  Tasks RCU enabled.
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] IRQ: Found an INTC at 0x(ptrval) (revision 5.0) with 128 interrupts
    [    0.000000] OMAP clockevent source: timer2 at 24000000 Hz
    [    0.000018] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    [    0.000043] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
    [    0.000056] OMAP clocksource: timer1 at 24000000 Hz
    [    0.000247] timer_probe: no matching timers found
    [    0.000475] Console: colour dummy device 80x30
    [    0.000508] WARNING: Your 'console=ttyO0' has been replaced by 'ttyS0'
    [    0.000516] This ensures that you still see kernel messages. Please
    [    0.000523] update your kernel commandline.
    [    0.000592] Calibrating delay loop... 718.02 BogoMIPS (lpj=3590144)
    [    0.119015] pid_max: default: 32768 minimum: 301
    [    0.119259] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.119278] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.120303] CPU: Testing write buffer coherency: ok
    [    0.120384] CPU0: Spectre v2: using BPIALL workaround
    [    0.121444] Setting up static identity map for 0x80100000 - 0x80100060
    [    0.121622] rcu: Hierarchical SRCU implementation.
    [    0.122032] EFI services will not be available.
    [    0.123624] devtmpfs: initialized
    [    0.132798] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [    0.133276] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.133305] futex hash table entries: 256 (order: -1, 3072 bytes)
    [    0.137661] pinctrl core: initialized pinctrl subsystem
    [    0.138613] DMI not present or invalid.
    [    0.139349] NET: Registered protocol family 16
    [    0.142152] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.168439] l4_wkup_cm:clk:0010:0: failed to disable
    [    0.222654] cpuidle: using governor ladder
    [    0.222700] cpuidle: using governor menu
    [    0.228822] OMAP GPIO hardware version 0.1
    [    0.235963] platform 44e3e000.rtc: Cannot lookup hwmod 'rtc'
    [    0.239721] No ATAGs?
    [    0.239736] hw-breakpoint: debug architecture 0x4 unsupported.
    [    0.257420] edma 49000000.edma: TI EDMA DMA engine driver
    [    0.258537] reg-fixed-voltage fixedregulator@2: Fixed regulator specified with variable voltages
    [    0.258582] reg-fixed-voltage: probe of fixedregulator@2 failed with error -22
    [    0.261850] SCSI subsystem initialized
    [    0.262465] media: Linux media interface: v0.10
    [    0.262519] videodev: Linux video capture interface: v2.00
    [    0.262638] pps_core: LinuxPPS API ver. 1 registered
    [    0.262649] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.262679] PTP clock support registered
    [    0.262723] EDAC MC: Ver: 3.0.0
    [    0.264006] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    [    0.264731] Advanced Linux Sound Architecture Driver Initialized.
    [    0.266187] clocksource: Switched to clocksource timer1
    [    0.276631] NET: Registered protocol family 2
    [    0.277640] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes)
    [    0.277688] TCP established hash table entries: 2048 (order: 1, 8192 bytes)
    [    0.277722] TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
    [    0.277753] TCP: Hash tables configured (established 2048 bind 2048)
    [    0.277884] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [    0.277911] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [    0.278103] NET: Registered protocol family 1
    [    0.278794] RPC: Registered named UNIX socket transport module.
    [    0.278812] RPC: Registered udp transport module.
    [    0.278820] RPC: Registered tcp transport module.
    [    0.278828] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.877846] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
    [    0.879556] Initialise system trusted keyrings
    [    0.879948] workingset: timestamp_bits=14 max_order=16 bucket_order=2
    [    0.885773] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.887234] NFS: Registering the id_resolver key type
    [    0.887294] Key type id_resolver registered
    [    0.887303] Key type id_legacy registered
    [    0.887359] ntfs: driver 2.1.32 [Flags: R/O].
    [    0.890158] Key type asymmetric registered
    [    0.890184] Asymmetric key parser 'x509' registered
    [    0.890274] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
    [    0.890293] io scheduler noop registered
    [    0.890303] io scheduler deadline registered
    [    0.890626] io scheduler cfq registered (default)
    [    0.890641] io scheduler mq-deadline registered
    [    0.890651] io scheduler kyber registered
    [    0.892834] pinctrl-single 44e10800.pinmux: 142 pins, size 568
    [    0.954719] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.959725] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 30, base_baud = 3000000) is a 8250
    [    1.591374] console [ttyS0] enabled
    [    1.596432] 48022000.serial: ttyS1 at MMIO 0x48022000 (irq = 31, base_baud = 3000000) is a 8250
    [    1.607670] omap_rng 48310000.rng: Random Number Generator ver. 20
    [    1.616395] random: fast init done
    [    1.620111] random: crng init done
    [    1.637547] brd: module loaded
    [    1.649215] loop: module loaded
    [    1.656523] m25p80 spi0.0: unrecognized JEDEC id bytes: 1f, 32, 17
    [    1.663821] libphy: Fixed MDIO Bus: probed
    [    1.673400] am335x-phy-driver 47401300.usb-phy: 47401300.usb-phy supply vcc not found, using dummy regulator
    [    1.683559] am335x-phy-driver 47401300.usb-phy: Linked as a consumer to regulator.0
    [    1.696317] am335x-phy-driver 47401b00.usb-phy: 47401b00.usb-phy supply vcc not found, using dummy regulator
    [    1.706376] am335x-phy-driver 47401b00.usb-phy: Linked as a consumer to regulator.0
    [    1.723454] using random self ethernet address
    [    1.728052] using random host ethernet address
    [    1.733180] usb0: HOST MAC 36:b8:c9:46:ed:2e
    [    1.737664] usb0: MAC a2:70:2f:bb:95:2d
    [    1.741566] using random self ethernet address
    [    1.746031] using random host ethernet address
    [    1.750629] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
    [    1.757360] g_ether gadget: g_ether ready
    [    1.761850] i2c /dev entries driver
    [    1.768114] cpuidle: enable-method property 'ti,am3352' found operations
    [    1.775373] sdhci: Secure Digital Host Controller Interface driver
    [    1.781739] sdhci: Copyright(c) Pierre Ossman
    [    1.787723] omap_hsmmc 48060000.mmc: Linked as a consumer to regulator.1
    [    1.819457] sdhci-pltfm: SDHCI platform and OF driver helper
    [    1.827851] ledtrig-cpu: registered to indicate activity on CPUs
    [    1.840097] NET: Registered protocol family 10
    [    1.846341] Segment Routing with IPv6
    [    1.850145] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    1.857118] NET: Registered protocol family 17
    [    1.861965] Key type dns_resolver registered
    [    1.866649] omap_voltage_late_init: Voltage driver support not added
    [    1.874156] Loading compiled-in X.509 certificates
    [    1.892228] input: gpio_buttons@0 as /devices/platform/gpio_buttons@0/input/input0
    [    1.901929] IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
    [    2.148651] g_ether gadget: high-speed config #2: RNDIS
    [    2.176235] IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
    [    2.206390] Sending DHCP requests ..., OK
    [   10.210323] IP-Config: Got DHCP answer from 192.168.2.1, my address is 192.168.2.188
    [   10.218158] IP-Config: Complete:
    [   10.221407]      device=usb0, hwaddr=a2:70:2f:bb:95:2d, ipaddr=192.168.2.188, mask=255.255.255.0, gw=192.168.2.1
    [   10.231647]      host=192.168.2.188, domain=, nis-domain=(none)
    [   10.237610]      bootserver=192.168.2.1, rootserver=192.168.2.1, rootpath=
    [   10.237615]      nameserver0=192.168.2.1
    [   10.249056] ALSA device list:
    [   10.252045]   No soundcards found.
    [   10.255562] Warning: unable to open an initial console.
    [   10.273899] Freeing unused kernel memory: 7168K
    [   10.279174] Run /init as init process
    ************************************************************
    Sitara Flash Fetcher Script v3.1 - 05/04/2020
    This version is aligned with PROCESSOR-SDK-LINUX-AM335X v6.3
    ************************************************************
    Getting flasher.sh from server: 192.168.2.1
    
    ********************************************
    Sitara Flash Fetcher is complete. Executing flasher.sh.
    ********************************************
    
    Calling Script=flasher.sh with SERVER_IP=192.168.2.1
    
    [Unmounting all existing partitions on /dev/mmcblk0... ]
    [Creating Partitions on /dev/mmcblk0...]
    fdisk: cannot open /dev/mmcblk0: No such file or directory
    DISK SIZE - bytes
    ./flasher.sh: line 1: bc: not found
    CYLINDERS -
    [Done Partitioning.]
    fdisk: cannot open /dev/mmcblk0: No such file or directory
    [Making filesystems...]
    mkfs.fat 4.1 (2017-01-24)
    mkfs.fat: warning - lowercase labels might not work properly with DOS or Windows
    mkfs.vfat: unable to open /dev/mmcblk0p1: No such file or directory
    mke2fs 1.44.3 (10-July-2018)
    The file /dev/mmcblk0p2 does not exist and no size was specified.
    [Mounting Root Partition..]
    mount: /mnt: special device /dev/mmcblk0p2 does not exist.
    [Fetching Filesystem..]
    tftp: write error
    [Extracting Filesystem..]
    tar: can't open 'rootfs.tar': No such file or directory
    rm: can't remove 'rootfs.tar': No such file or directory
    /
    [Syncing..]
    [Unmounting Root Partition]
    umount: /dev/mmcblk0p2: no mount point specified.
    
    eMMC Setup completed.
    
    ...................
    
    FLASHING COMPLETED
    
    ...................
    
     _____                    _____           _         _
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|
                  |___|                    |___|
    
    Arago Project http://arago-project.org am335x-evm /dev/ttyS0
    
    Arago 2019.11 am335x-evm /dev/ttyS0
    
    am335x-evm login:

  • Hi,

    I am not sure if this will help, but can you please do the following modification to the &mmc1 node in your board DTS file to see if the eMMC can be detected?

    - remove "pinctrl-1" line from &mmc1;

    - add "non-removable;" to &mmc1;

    - add "ti,non-removable;" to &mmc1.

  • Hi, we made these changes in the kernel device tree but it didn't help. Exactly the same bootlog is happening.

  • We found a few forums that might be helpful resolving this issue. The one mentioned below suggests that we connect our v5.1 eMMC to the mmc1 pins on the processor (we are connecting it to mmc0 currently). But the main doubt is that the previous v5.1 eMMC by Micron that was backwards compatible was working fine with this setup.  
      
    And this particular forum on stackexchange (using exactly the same eMMC as we are) links to an NXP article that suggests making changes into the driver to help the newer eMMC fall back to the v4.2 standard but we cannot find the relevant piece of code that it is suggesting. 
    Please suggest something if the two possible solutions mentioned above give a hint. Reply asap as our product is at release stage and your help would be highly appreciated.
  • Hi,

    And this particular forum on stackexchange (using exactly the same eMMC as we are) links to an NXP article that suggests making changes into the driver to help the newer eMMC fall back to the v4.2 standard but we cannot find the relevant piece of code that it is suggesting. 

    I am not sure how to change the code for the standard fallback, but here is the relevant code in the kernel 4.19:

    here is to read the MMC ext_csd register:

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/mmc/core/mmc.c?h=ti2019.06#n659

    and here is the code to read revision from ext_csd:

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/mmc/core/mmc.c?h=ti2019.06#n394

  • Hi Bin,

    I have checked the code, it is gracefully handling all the versions of emmc. 

    Can you please suggest any changes in the code or should we focus our attention on something else? Is there a way to debug this and get more information out of this issue.

    Any comments on the node which we are using for mmc. Can we change it to mmc2 or mmc3?

  • Hi Himanishi,

    I am not sure what code change is needed to handle the eMMC Spec difference, I have never done this. As you said, the driver should handle it gracefully.

    If you can modify your board to move the eMMC device to MMC2 interface, you can give it a try. The BeagleBone Black uses SD card on MMC1 and eMMC on MMC2. Though I don't see any relevant difference between MMC1 and MMC2 interfaces from AM335x TRM and Datasheet.