Skip to content

Commit 7231e59

Browse files
jmentiStaticRocket
authored andcommitted
chore: Document important information on MMC support
This documents inportant information on MMC support in MMC-SD for MMC Linux support and UG-Memory-K3 for MMC u-boot support. This includes a refactor of the existing instance that documented errata i2458 for eMMC, and making the instance more generalistic to be able to reuse for all MMC related support updates. Signed-off-by: Judith Mendez <[email protected]>
1 parent 951d8f6 commit 7231e59

File tree

2 files changed

+164
-92
lines changed

2 files changed

+164
-92
lines changed

source/linux/Foundational_Components/Kernel/Kernel_Drivers/Storage/MMC-SD.rst

Lines changed: 49 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,55 @@ Driver Configuration
367367
368368
|
369369
370+
.. _mmc-support-linux:
371+
372+
MMC support in Linux
373+
********************
374+
375+
.. ifconfig:: CONFIG_part_family in ('AM62PX_family')
376+
377+
**eMMC HS400 support**
378+
379+
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>`__.
380+
If support for HS400 is required, please add the following to k3-am62p-j722s-common-main.dtsi:
381+
382+
.. code-block:: diff
383+
384+
diff --git a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
385+
index 3e5ca8a3eb86..a05b22a6e5a2 100644
386+
--- a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
387+
+++ b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
388+
@@ -593,12 +593,16 @@ sdhci0: mmc@fa10000 {
389+
bus-width = <8>;
390+
mmc-ddr-1_8v;
391+
mmc-hs200-1_8v;
392+
+ mmc-hs400-1_8v;
393+
ti,clkbuf-sel = <0x7>;
394+
ti,trm-icp = <0x8>;
395+
+ ti,strobe-sel = <0x55>;
396+
ti,otap-del-sel-legacy = <0x1>;
397+
ti,otap-del-sel-mmc-hs = <0x1>;
398+
ti,otap-del-sel-ddr52 = <0x6>;
399+
ti,otap-del-sel-hs200 = <0x8>;
400+
+ ti,otap-del-sel-hs400 = <0x5>; // at 0.85V VDD_CORE
401+
+ //ti,otap-del-sel-hs400 = <0x7>; // at 0.75V VDD_CORE
402+
ti,itap-del-sel-legacy = <0x10>;
403+
ti,itap-del-sel-mmc-hs = <0xa>;
404+
ti,itap-del-sel-ddr52 = <0x3>;
405+
406+
.. ifconfig:: CONFIG_part_family in ('AM62X_family')
407+
408+
**Missing eMMC support**
409+
410+
Support for eMMC is missing for AM62SIP SK in Processor SDK 11.01. Therefore, eMMC boot, reading/writting/accessing
411+
the eMMC will not work on AM62SIP SK. If eMMC support is required, apply the following:
412+
`commit <https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/?h=ti-linux-6.12.y&id=78e6abff3220>`__
413+
in TI-Linux ti-linux-6.12.y branch to enable eMMC support in Linux.
414+
415+
.. ifconfig:: CONFIG_part_family not in ('AM62X_family', 'AM62PX_family')
416+
417+
There is no missing MMC support for |__PART_FAMILY_DEVICE_NAMES__| device.
418+
370419
.. ifconfig:: CONFIG_part_family not in ('General_family', 'AM57X_family', 'AM335X_family', 'AM437X_family')
371420

372421
Steps for working around SD card issues in Linux
@@ -483,42 +532,7 @@ Driver Configuration
483532
484533
sdhci2: mmc@fa20000 {
485534
486-
eMMC HS400 support in Linux
487-
===========================
488-
489-
.. ifconfig:: CONFIG_part_family in ('AM62PX_family')
490-
491-
For 11.0 SDK, am62px device does not support eMMC HS400 mode due to errata i2458.
492-
If support for HS400 is anyways required, please add the following DT attributes to sdhci0 node:
493-
494-
.. code-block:: diff
495-
496-
diff --git a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
497-
index 3e5ca8a3eb86..a05b22a6e5a2 100644
498-
--- a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
499-
+++ b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
500-
@@ -593,12 +593,16 @@ sdhci0: mmc@fa10000 {
501-
bus-width = <8>;
502-
mmc-ddr-1_8v;
503-
mmc-hs200-1_8v;
504-
+ mmc-hs400-1_8v;
505-
ti,clkbuf-sel = <0x7>;
506-
ti,trm-icp = <0x8>;
507-
+ ti,strobe-sel = <0x55>;
508-
ti,otap-del-sel-legacy = <0x1>;
509-
ti,otap-del-sel-mmc-hs = <0x1>;
510-
ti,otap-del-sel-ddr52 = <0x6>;
511-
ti,otap-del-sel-hs200 = <0x8>;
512-
+ ti,otap-del-sel-hs400 = <0x5>; // at 0.85V VDD_CORE
513-
+ //ti,otap-del-sel-hs400 = <0x7>; // at 0.75V VDD_CORE
514-
ti,itap-del-sel-legacy = <0x10>;
515-
ti,itap-del-sel-mmc-hs = <0xa>;
516-
ti,itap-del-sel-ddr52 = <0x3>;
517-
518-
.. ifconfig:: CONFIG_part_family not in ('AM62PX_family')
519535
520-
eMMC HS400 is not suppported, refer to :ref:`this <mmc-sd-supported-hs-modes>` table for the list of modes supported in Linux
521-
for |__PART_FAMILY_NAME__| SoC.
522536
523537
|
524538

source/linux/Foundational_Components/U-Boot/UG-Memory-K3.rst

Lines changed: 115 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
664779
Steps 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

Comments
 (0)