@@ -661,6 +661,121 @@ Boot Linux from USB storage
661661
662662 => run usbboot
663663
664+ |
665+
666+ .. _uboot-mmc-support :
667+
668+ MMC support in u-boot
669+ =====================
670+
671+ .. ifconfig :: CONFIG_part_family in ('AM62PX_family')
672+
673+ **eMMC HS400 support **
674+
675+ For 11.0 and 11.1 SDK, am62px device does not support eMMC HS400 mode due to errata `i2458 <https://www.ti.com/lit/pdf/sprz574 >`__.
676+ If support for HS400 is required, add the following to k3-am62p-j722s-common-main.dtsi:
677+
678+ .. code-block :: diff
679+
680+ diff --git a/dts/upstream/src/arm64/ti/k3-am62p-j722s-common-main.dtsi b/dts/upstream/src/arm64/ti/k3-am62p-j722s-common-main.dtsi
681+ index 8bfc6539b2a..8a536b081e1 100644
682+ --- a/dts/upstream/src/arm64/ti/k3-am62p-j722s-common-main.dtsi
683+ +++ b/dts/upstream/src/arm64/ti/k3-am62p-j722s-common-main.dtsi
684+ @@ -593,12 +593,16 @@
685+ bus-width = <8>;
686+ mmc-ddr-1_8v;
687+ mmc-hs200-1_8v;
688+ + mmc-hs400-1_8v;
689+ ti,clkbuf-sel = <0x7>;
690+ + ti,strobe-sel = <0x55>;
691+ ti,trm-icp = <0x8>;
692+ ti,otap-del-sel-legacy = <0x1>;
693+ ti,otap-del-sel-mmc-hs = <0x1>;
694+ ti,otap-del-sel-ddr52 = <0x6>;
695+ ti,otap-del-sel-hs200 = <0x8>;
696+ + ti,otap-del-sel-hs400 = <0x5>; // at 0.85V VDD_CORE
697+ + //ti,otap-del-sel-hs400 = <0x7>; // at 0.75V VDD_CORE
698+ ti,itap-del-sel-legacy = <0x10>;
699+ ti,itap-del-sel-mmc-hs = <0xa>;
700+ ti,itap-del-sel-ddr52 = <0x3>;
701+
702+ and enable the following config options:
703+
704+ .. code-block :: diff
705+
706+ diff --git a/configs/am62px_evm_a53_defconfig b/configs/am62px_evm_a53_defconfig
707+ index 09a91248ce6..f95879f41c9 100644
708+ --- a/configs/am62px_evm_a53_defconfig
709+ +++ b/configs/am62px_evm_a53_defconfig
710+ @@ -114,8 +114,8 @@ CONFIG_MMC_IO_VOLTAGE=y
711+ CONFIG_SPL_MMC_IO_VOLTAGE=y
712+ CONFIG_MMC_UHS_SUPPORT=y
713+ CONFIG_SPL_MMC_UHS_SUPPORT=y
714+ -CONFIG_MMC_HS200_SUPPORT=y
715+ -CONFIG_SPL_MMC_HS200_SUPPORT=y
716+ +CONFIG_MMC_HS400_SUPPORT=y
717+ +CONFIG_SPL_MMC_HS400_SUPPORT=y
718+ CONFIG_MMC_SDHCI=y
719+ CONFIG_MMC_SDHCI_ADMA=y
720+ CONFIG_SPL_MMC_SDHCI_ADMA=y
721+
722+ .. ifconfig :: CONFIG_part_family in ('AM62X_family')
723+
724+ **Missing eMMC support **
725+
726+ Support for eMMC is missing for AM62SIP SK in Processor SDK 11.01. Therefore, eMMC boot, reading/writting/accessing the eMMC
727+ will not work on AM62SIP SK. If eMMC support is required, apply the following diff to k3-am6254xxl-sk.dts:
728+
729+ .. code-block :: diff
730+
731+ diff --git a/dts/upstream/src/arm64/ti/k3-am6254xxl-sk.dts b/dts/upstream/src/arm64/ti/k3-am6254xxl-sk.dts
732+ index 060df318b3f..d2c9f226b73 100644
733+ --- a/dts/upstream/src/arm64/ti/k3-am6254xxl-sk.dts
734+ +++ b/dts/upstream/src/arm64/ti/k3-am6254xxl-sk.dts
735+ @@ -42,6 +42,22 @@
736+ };
737+
738+ &main_pmx0 {
739+ + main_mmc0_pins_default: main-mmc0-default-pins {
740+ + bootph-all;
741+ + pinctrl-single,pins = <
742+ + AM62X_IOPAD(0x220, PIN_INPUT, 0) /* (Y3) MMC0_CMD */
743+ + AM62X_IOPAD(0x218, PIN_INPUT, 0) /* (AB1) MMC0_CLK */
744+ + AM62X_IOPAD(0x214, PIN_INPUT, 0) /* (AA2) MMC0_DAT0 */
745+ + AM62X_IOPAD(0x210, PIN_INPUT_PULLUP, 0) /* (AA1) MMC0_DAT1 */
746+ + AM62X_IOPAD(0x20c, PIN_INPUT_PULLUP, 0) /* (AA3) MMC0_DAT2 */
747+ + AM62X_IOPAD(0x208, PIN_INPUT_PULLUP, 0) /* (Y4) MMC0_DAT3 */
748+ + AM62X_IOPAD(0x204, PIN_INPUT_PULLUP, 0) /* (AB2) MMC0_DAT4 */
749+ + AM62X_IOPAD(0x200, PIN_INPUT_PULLUP, 0) /* (AC1) MMC0_DAT5 */
750+ + AM62X_IOPAD(0x1fc, PIN_INPUT_PULLUP, 0) /* (AD2) MMC0_DAT6 */
751+ + AM62X_IOPAD(0x1f8, PIN_INPUT_PULLUP, 0) /* (AC2) MMC0_DAT7 */
752+ + >;
753+ + };
754+ +
755+ main_rgmii2_pins_default: main-rgmii2-default-pins {
756+ bootph-all;
757+ pinctrl-single,pins = <
758+ @@ -147,6 +163,14 @@
759+ };
760+ };
761+
762+ +&sdhci0 {
763+ + bootph-all;
764+ + status = "okay";
765+ + pinctrl-names = "default";
766+ + pinctrl-0 = <&main_mmc0_pins_default>;
767+ +};
768+ +
769+ &sdhci1 {
770+ vmmc-supply = <&vdd_mmc1>;
771+ vqmmc-supply = <&vdd_sd_dv>;
772+
773+ .. ifconfig :: CONFIG_part_family not in ('AM62X_family', 'AM62PX_family')
774+
775+ There is no missing MMC support for |__PART_FAMILY_DEVICE_NAMES__ | device.
776+
777+ |
778+
664779Steps for working around SD card issues in u-boot
665780=================================================
666781
@@ -758,60 +873,3 @@ increasing order of reducing performance.
758873 };
759874
760875 sdhci2: mmc@fa20000 {
761-
762- eMMC HS400 support in u-boot
763- ============================
764-
765- .. ifconfig :: CONFIG_part_family in ('AM62PX_family')
766-
767- For 11.0 SDK, am62px device does not support eMMC HS400 mode due to errata i2458.
768- If support for HS400 is anyways required, please add the following DT attributes to sdhci0 node:
769-
770- .. code-block :: diff
771-
772- diff --git a/dts/upstream/src/arm64/ti/k3-am62p-j722s-common-main.dtsi b/dts/upstream/src/arm64/ti/k3-am62p-j722s-common-main.dtsi
773- index 8bfc6539b2a..8a536b081e1 100644
774- --- a/dts/upstream/src/arm64/ti/k3-am62p-j722s-common-main.dtsi
775- +++ b/dts/upstream/src/arm64/ti/k3-am62p-j722s-common-main.dtsi
776- @@ -593,12 +593,16 @@
777- bus-width = <8>;
778- mmc-ddr-1_8v;
779- mmc-hs200-1_8v;
780- + mmc-hs400-1_8v;
781- ti,clkbuf-sel = <0x7>;
782- + ti,strobe-sel = <0x55>;
783- ti,trm-icp = <0x8>;
784- ti,otap-del-sel-legacy = <0x1>;
785- ti,otap-del-sel-mmc-hs = <0x1>;
786- ti,otap-del-sel-ddr52 = <0x6>;
787- ti,otap-del-sel-hs200 = <0x8>;
788- + ti,otap-del-sel-hs400 = <0x5>; // at 0.85V VDD_CORE
789- + //ti,otap-del-sel-hs400 = <0x7>; // at 0.75V VDD_CORE
790- ti,itap-del-sel-legacy = <0x10>;
791- ti,itap-del-sel-mmc-hs = <0xa>;
792- ti,itap-del-sel-ddr52 = <0x3>;
793-
794- and enable the following config options:
795-
796- .. code-block :: diff
797-
798- diff --git a/configs/am62px_evm_a53_defconfig b/configs/am62px_evm_a53_defconfig
799- index 09a91248ce6..f95879f41c9 100644
800- --- a/configs/am62px_evm_a53_defconfig
801- +++ b/configs/am62px_evm_a53_defconfig
802- @@ -114,8 +114,8 @@ CONFIG_MMC_IO_VOLTAGE=y
803- CONFIG_SPL_MMC_IO_VOLTAGE=y
804- CONFIG_MMC_UHS_SUPPORT=y
805- CONFIG_SPL_MMC_UHS_SUPPORT=y
806- -CONFIG_MMC_HS200_SUPPORT=y
807- -CONFIG_SPL_MMC_HS200_SUPPORT=y
808- +CONFIG_MMC_HS400_SUPPORT=y
809- +CONFIG_SPL_MMC_HS400_SUPPORT=y
810- CONFIG_MMC_SDHCI=y
811- CONFIG_MMC_SDHCI_ADMA=y
812- CONFIG_SPL_MMC_SDHCI_ADMA=y
813-
814- .. ifconfig :: CONFIG_part_family not in ('AM62PX_family')
815-
816- eMMC HS400 is not suppported, refer to :ref: `this <mmc-sd-supported-hs-modes >` table for the list of modes supported in u-boot
817- for |__PART_FAMILY_NAME__ | SoC.
0 commit comments