Skip to content

Commit 671ac99

Browse files
committed
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 <jm@ti.com>
1 parent 6aa0e0c commit 671ac99

2 files changed

Lines changed: 180 additions & 94 deletions

File tree

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

Lines changed: 58 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33
MMC/SD
44
######
55

6+
.. ifconfig:: CONFIG_part_family in ('AM62X_family', 'AM62PX_family')
7+
8+
.. warning::
9+
10+
There is important information on MMC support for |__PART_FAMILY_DEVICE_NAMES__| device, go
11+
:ref:`here <mmc-support-linux>` for more information.
12+
613
Introduction
714
************
815

@@ -367,6 +374,57 @@ Driver Configuration
367374
368375
|
369376
377+
.. _mmc-support-linux:
378+
379+
MMC support in Linux
380+
********************
381+
382+
.. ifconfig:: CONFIG_part_family in ('AM62PX_family')
383+
384+
**eMMC HS400 support**
385+
386+
For 11.1 SDK, am62px device does not support eMMC HS400 mode due to errata `i2458 <https://www.ti.com/lit/pdf/sprz574>`__.
387+
If support for HS400 is required, please add the following to k3-am62p-j722s-common-main.dtsi:
388+
389+
.. code-block:: diff
390+
391+
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
392+
index 3e5ca8a3eb86..a05b22a6e5a2 100644
393+
--- a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
394+
+++ b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
395+
@@ -593,12 +593,16 @@ sdhci0: mmc@fa10000 {
396+
bus-width = <8>;
397+
mmc-ddr-1_8v;
398+
mmc-hs200-1_8v;
399+
+ mmc-hs400-1_8v;
400+
ti,clkbuf-sel = <0x7>;
401+
ti,trm-icp = <0x8>;
402+
+ ti,strobe-sel = <0x55>;
403+
ti,otap-del-sel-legacy = <0x1>;
404+
ti,otap-del-sel-mmc-hs = <0x1>;
405+
ti,otap-del-sel-ddr52 = <0x6>;
406+
ti,otap-del-sel-hs200 = <0x8>;
407+
+ ti,otap-del-sel-hs400 = <0x5>; // at 0.85V VDD_CORE
408+
+ //ti,otap-del-sel-hs400 = <0x7>; // at 0.75V VDD_CORE
409+
ti,itap-del-sel-legacy = <0x10>;
410+
ti,itap-del-sel-mmc-hs = <0xa>;
411+
ti,itap-del-sel-ddr52 = <0x3>;
412+
413+
.. ifconfig:: CONFIG_part_family in ('AM62X_family')
414+
415+
**Missing eMMC support**
416+
417+
Support for eMMC is missed for AM62SIP SK in Processor SDK 11.01. Therefore, eMMC boot, reading/writting/accessing
418+
the eMMC will not work on AM62SIP SK. If eMMC support is required, apply the following:
419+
`commit <https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/?h=ti-linux-6.12.y&id=78e6abff3220>`__
420+
in TI-Linux ti-linux-6.12.y branch to enable eMMC support in Linux.
421+
422+
.. ifconfig:: CONFIG_part_family not in ('AM62X_family', 'AM62PX_family')
423+
424+
There is no missing MMC support for |__PART_FAMILY_DEVICE_NAMES__| device.
425+
426+
|
427+
370428
.. ifconfig:: CONFIG_part_family not in ('General_family', 'AM57X_family', 'AM335X_family', 'AM437X_family')
371429

372430
Steps for working around SD card issues in Linux
@@ -483,43 +541,6 @@ Driver Configuration
483541
484542
sdhci2: mmc@fa20000 {
485543
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')
519-
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.
522-
523544
|
524545
525546
.. _mmc-listing-mmc-devices-linux:

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

Lines changed: 122 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
SD, eMMC and USB
22
################
33

4+
.. ifconfig:: CONFIG_part_family in ('AM62X_family', 'AM62PX_family')
5+
6+
.. warning::
7+
8+
There is important information on MMC support for |__PART_FAMILY_DEVICE_NAMES__| device, go
9+
:ref:`here <uboot-mmc-support>` for more information.
10+
411
The following guide shows how to flash and boot from storage media like the
512
embedded multimedia card (eMMC), secure digital (SD) card, and USB storage
613
devices. While this is a step-by-step guide, it is in no way extensive and
@@ -661,6 +668,121 @@ Boot Linux from USB storage
661668
662669
=> run usbboot
663670
671+
|
672+
673+
.. _uboot-mmc-support:
674+
675+
MMC support in u-boot
676+
=====================
677+
678+
.. ifconfig:: CONFIG_part_family in ('AM62PX_family')
679+
680+
**eMMC HS400 support**
681+
682+
For 11.1 SDK, am62px device does not support eMMC HS400 mode due to errata `i2458 <https://www.ti.com/lit/pdf/sprz574>`__.
683+
If support for HS400 is required, please add the following to k3-am62p-j722s-common-main.dtsi:
684+
685+
.. code-block:: diff
686+
687+
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
688+
index 8bfc6539b2a..8a536b081e1 100644
689+
--- a/dts/upstream/src/arm64/ti/k3-am62p-j722s-common-main.dtsi
690+
+++ b/dts/upstream/src/arm64/ti/k3-am62p-j722s-common-main.dtsi
691+
@@ -593,12 +593,16 @@
692+
bus-width = <8>;
693+
mmc-ddr-1_8v;
694+
mmc-hs200-1_8v;
695+
+ mmc-hs400-1_8v;
696+
ti,clkbuf-sel = <0x7>;
697+
+ ti,strobe-sel = <0x55>;
698+
ti,trm-icp = <0x8>;
699+
ti,otap-del-sel-legacy = <0x1>;
700+
ti,otap-del-sel-mmc-hs = <0x1>;
701+
ti,otap-del-sel-ddr52 = <0x6>;
702+
ti,otap-del-sel-hs200 = <0x8>;
703+
+ ti,otap-del-sel-hs400 = <0x5>; // at 0.85V VDD_CORE
704+
+ //ti,otap-del-sel-hs400 = <0x7>; // at 0.75V VDD_CORE
705+
ti,itap-del-sel-legacy = <0x10>;
706+
ti,itap-del-sel-mmc-hs = <0xa>;
707+
ti,itap-del-sel-ddr52 = <0x3>;
708+
709+
and enable the following config options:
710+
711+
.. code-block:: diff
712+
713+
diff --git a/configs/am62px_evm_a53_defconfig b/configs/am62px_evm_a53_defconfig
714+
index 09a91248ce6..f95879f41c9 100644
715+
--- a/configs/am62px_evm_a53_defconfig
716+
+++ b/configs/am62px_evm_a53_defconfig
717+
@@ -114,8 +114,8 @@ CONFIG_MMC_IO_VOLTAGE=y
718+
CONFIG_SPL_MMC_IO_VOLTAGE=y
719+
CONFIG_MMC_UHS_SUPPORT=y
720+
CONFIG_SPL_MMC_UHS_SUPPORT=y
721+
-CONFIG_MMC_HS200_SUPPORT=y
722+
-CONFIG_SPL_MMC_HS200_SUPPORT=y
723+
+CONFIG_MMC_HS400_SUPPORT=y
724+
+CONFIG_SPL_MMC_HS400_SUPPORT=y
725+
CONFIG_MMC_SDHCI=y
726+
CONFIG_MMC_SDHCI_ADMA=y
727+
CONFIG_SPL_MMC_SDHCI_ADMA=y
728+
729+
.. ifconfig:: CONFIG_part_family in ('AM62X_family')
730+
731+
**Missing eMMC support**
732+
733+
Support for eMMC is missed for AM62SIP SK in Processor SDK 11.01. Therefore, eMMC boot, reading/writting/accessing the eMMC
734+
will not work on AM62SIP SK. If eMMC support is required, apply the following diff to k3-am6254xxl-sk.dts:
735+
736+
.. code-block:: diff
737+
738+
diff --git a/dts/upstream/src/arm64/ti/k3-am6254xxl-sk.dts b/dts/upstream/src/arm64/ti/k3-am6254xxl-sk.dts
739+
index 060df318b3f..d2c9f226b73 100644
740+
--- a/dts/upstream/src/arm64/ti/k3-am6254xxl-sk.dts
741+
+++ b/dts/upstream/src/arm64/ti/k3-am6254xxl-sk.dts
742+
@@ -42,6 +42,22 @@
743+
};
744+
745+
&main_pmx0 {
746+
+ main_mmc0_pins_default: main-mmc0-default-pins {
747+
+ bootph-all;
748+
+ pinctrl-single,pins = <
749+
+ AM62X_IOPAD(0x220, PIN_INPUT, 0) /* (Y3) MMC0_CMD */
750+
+ AM62X_IOPAD(0x218, PIN_INPUT, 0) /* (AB1) MMC0_CLK */
751+
+ AM62X_IOPAD(0x214, PIN_INPUT, 0) /* (AA2) MMC0_DAT0 */
752+
+ AM62X_IOPAD(0x210, PIN_INPUT_PULLUP, 0) /* (AA1) MMC0_DAT1 */
753+
+ AM62X_IOPAD(0x20c, PIN_INPUT_PULLUP, 0) /* (AA3) MMC0_DAT2 */
754+
+ AM62X_IOPAD(0x208, PIN_INPUT_PULLUP, 0) /* (Y4) MMC0_DAT3 */
755+
+ AM62X_IOPAD(0x204, PIN_INPUT_PULLUP, 0) /* (AB2) MMC0_DAT4 */
756+
+ AM62X_IOPAD(0x200, PIN_INPUT_PULLUP, 0) /* (AC1) MMC0_DAT5 */
757+
+ AM62X_IOPAD(0x1fc, PIN_INPUT_PULLUP, 0) /* (AD2) MMC0_DAT6 */
758+
+ AM62X_IOPAD(0x1f8, PIN_INPUT_PULLUP, 0) /* (AC2) MMC0_DAT7 */
759+
+ >;
760+
+ };
761+
+
762+
main_rgmii2_pins_default: main-rgmii2-default-pins {
763+
bootph-all;
764+
pinctrl-single,pins = <
765+
@@ -147,6 +163,14 @@
766+
};
767+
};
768+
769+
+&sdhci0 {
770+
+ bootph-all;
771+
+ status = "okay";
772+
+ pinctrl-names = "default";
773+
+ pinctrl-0 = <&main_mmc0_pins_default>;
774+
+};
775+
+
776+
&sdhci1 {
777+
vmmc-supply = <&vdd_mmc1>;
778+
vqmmc-supply = <&vdd_sd_dv>;
779+
780+
.. ifconfig:: CONFIG_part_family not in ('AM62X_family', 'AM62PX_family')
781+
782+
There is no missing MMC support for |__PART_FAMILY_DEVICE_NAMES__| device.
783+
784+
|
785+
664786
Steps for working around SD card issues in u-boot
665787
=================================================
666788

@@ -758,60 +880,3 @@ increasing order of reducing performance.
758880
};
759881
760882
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)