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.

AM625: Processors forum

Part Number: AM625
Other Parts Discussed in Thread: AM623, , AM620-Q1

Hi, TI community,

We are using AM625 on our custom board and I have a question about the mmc2.

We tried connecting MMC2 to SD card or eMMC, I modified the DTSI settings to align the configuration of MMC2 with that of MMC0 or MMC1.

but both failed, and I printed the error log as below

"mmc2: req failed (CMD5): -110, retrying..."

I checked "AM62x SitaraTm Processors", MMCSD part, seems only MMC0 supports eMMC, is that right?
But I tried to modify sdhci2 as same as sdhci1 still failed.

Is there anything I missed? 


Dtsi setting :

	sdhci1: mmc@fa00000 {
		compatible = "ti,am62-sdhci";
		reg = <0x00 0x0fa00000 0x00 0x1000>, <0x00 0x0fa08000 0x00 0x400>;
		interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
		power-domains = <&k3_pds 58 TI_SCI_PD_EXCLUSIVE>;
		clocks = <&k3_clks 58 5>, <&k3_clks 58 6>;
		clock-names = "clk_ahb", "clk_xin";
		ti,trm-icp = <0x2>;
		ti,otap-del-sel-legacy = <0x8>;
		ti,otap-del-sel-sd-hs = <0x0>;
		ti,otap-del-sel-sdr12 = <0x0>;
		ti,otap-del-sel-sdr25 = <0x0>;
		ti,otap-del-sel-sdr50 = <0x8>;
		ti,otap-del-sel-sdr104 = <0x7>;
		ti,otap-del-sel-ddr50 = <0x4>;
		ti,itap-del-sel-legacy = <0xa>;
		ti,itap-del-sel-sd-hs = <0x1>;
		ti,itap-del-sel-sdr12 = <0xa>;
		ti,itap-del-sel-sdr25 = <0x1>;
		ti,clkbuf-sel = <0x7>;
		bus-width = <4>;
		status = "disabled";
	};

	sdhci2: mmc@fa20000 {
		compatible = "ti,am62-sdhci";
		reg = <0x00 0x0fa20000 0x00 0x1000>, <0x00 0x0fa28000 0x00 0x400>;
		interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
		power-domains = <&k3_pds 184 TI_SCI_PD_EXCLUSIVE>;
		clocks = <&k3_clks 184 5>, <&k3_clks 184 6>;
		clock-names = "clk_ahb", "clk_xin";
		ti,trm-icp = <0x2>;
		ti,otap-del-sel-legacy = <0x8>;
		ti,otap-del-sel-sd-hs = <0x0>;
		ti,otap-del-sel-sdr12 = <0x0>;
		ti,otap-del-sel-sdr25 = <0x0>;
		ti,otap-del-sel-sdr50 = <0x8>;
		ti,otap-del-sel-sdr104 = <0x7>;
		ti,otap-del-sel-ddr50 = <0x4>;
		ti,itap-del-sel-legacy = <0xa>;
		ti,itap-del-sel-sd-hs = <0x1>;
		ti,itap-del-sel-sdr12 = <0xa>;
		ti,itap-del-sel-sdr25 = <0x1>;
		ti,clkbuf-sel = <0x7>;
		bus-width = <4>;
		status = "disabled";
	};

 

 

&sdhci1 {
    /* SD card */
   vmmc-supply = <&vcc_3v3_sys>;
   vqmmc-supply = <&vcc_3v3_sys>;
   pinctrl-names = "default";
   pinctrl-0 = <&main_mmc1_pins_default>;
   ti,driver-strength-ohm = <50>;
   disable-wp;
   sdhci-caps-mask = <0x00000006 0x00000000>; /* Limiting to DDR50 speed mode */
   ti,fails-without-test-cd;
};

&sdhci2 {
	status = "okay";
	bus-width = <4>;
	/* DiskA card */
	vmmc-supply = <&vcc_3v3_sys>;
	vqmmc-supply = <&vcc_3v3_sys>;
	pinctrl-names = "default";
	pinctrl-0 = <&main_mmc2_pins_default>;
	ti,driver-strength-ohm = <50>;
   	disable-wp;
   	sdhci-caps-mask = <0x00000006 0x00000000>; /* Limiting to DDR50 speed mode */
   	ti,fails-without-test-cd;
};


main_mmc1_pins_default: main-mmc1-pins-default {
		pinctrl-single,pins = <
			AM62X_IOPAD(0x23c, PIN_INPUT, 0) /* (A21/C18) MMC1_CMD */
			AM62X_IOPAD(0x234, PIN_INPUT, 0) /* (B22/A20) MMC1_CLK */
			AM62X_IOPAD(0x230, PIN_INPUT, 0) /* (A22/A19) MMC1_DAT0 */
			AM62X_IOPAD(0x22c, PIN_INPUT, 0) /* (B21/B19) MMC1_DAT1 */
			AM62X_IOPAD(0x228, PIN_INPUT, 0) /* (C21/B20) MMC1_DAT2 */
			AM62X_IOPAD(0x224, PIN_INPUT, 0) /* (D22/C19) MMC1_DAT3 */
			AM62X_IOPAD(0x240, PIN_INPUT, 0) /* (D17/C15) MMC1_SDCD */
		>;
	};

main_mmc2_pins_default: main-mmc2-pins-default {
		pinctrl-single,pins = <
			AM62X_IOPAD(0x120, PIN_INPUT, 0) /* (C24) MMC2_CMD */
			AM62X_IOPAD(0x118, PIN_INPUT, 0) /* (D25) MMC2_CLK */
			AM62X_IOPAD(0x114, PIN_INPUT, 0) /* (B24) MMC2_DAT0 */
			AM62X_IOPAD(0x110, PIN_INPUT, 0) /* (C25) MMC2_DAT1 */
			AM62X_IOPAD(0x10c, PIN_INPUT, 0) /* (E23) MMC2_DAT2 */
			AM62X_IOPAD(0x108, PIN_INPUT, 0) /* (D24) MMC2_DAT3 */
			AM62X_IOPAD(0x124, PIN_INPUT, 0) /* (A23) MMC2_SDCD */
		>;
	};



Thanks,
Allen

  • Hi Allen,

    I have assigned your query to our expert. He is currently out of office for holidays. Expect a response post New year when he returns to office.

    Apologies for the delay.

    Best Regards,

    Suren

  • Hi Suren,

    We already fixed it ourselves, and we want to know about MMC2_CLKB.
    After adding below line in dtsi, it works.
    AM62X_IOPAD(0x11c, PIN_INPUT, 0) /* (#N/A) MMC2_CLKB */

    But we checked the document (AM62x SitaraTm Processors, ver: AM625, AM625-Q1, AM623, AM620-Q1 SPRSP58B – JUNE 2022 – REVISED JUNE 2023).
    We couldn't find any information about this pin in this document, so we missed it.

    Could you tell us about this pin? and is it necessary?

    Thanks,
    Allen

  • Allen,

    After adding below line in dtsi, it works.
    AM62X_IOPAD(0x11c, PIN_INPUT, 0) /* (#N/A) MMC2_CLKB */

    This MMC2_CLKB is for the clock loopback, the pin doesn't physically exist, but this pinmux setting is still required.

    I checked "AM62x Sitara Processors", MMCSD part, seems only MMC0 supports eMMC, is that right?

    Correct, eMMC is only supported on MMC0 interface. You might get eMMC work on MMC2, but the eMMC timing closure validation has not been done on MMC2 interface.

  • Thanks for your help.