Jetson Nano Enable SDMMC3 for SD card

Hello,

I am looking to enable the SDMMC3 interface of the Jetson nano as described in the Hardware Design Guide on a custom carrier board:

I have connected the pins as shown in the example, however when I boot the system with the extra SD card inserted, there is no external SD card shown.

I believe the issue is due to the device tree not being formatted to allow for an external SD card:

        sdhci@700b0400 { /* SDMMC3 for external SD card */
                status = "disabled";
                /delete-property/ keep-power-in-suspend;
                /delete-property/ non-removable;
                mmc-ddr-1_8v;
                mmc-ocr-mask = <3>;
                uhs-mask = <0x0>;
                max-clk-limit = <400000>;
                tap-delay = <3>;
        };

I haven’t found any information regarding how to implement the SD card for SDMMC3 in the device tree. I am wondering if there is an example device tree which enables the use of an SD card that I can implement for SDMMC3.

1 Like

Hello,

I followed the examples but I am still running into issues. For clarification:

  • We are using the p3449-0000-b00 nano with a custom carrier board
  • The boot drive is a 128gb SD card in the nano microSD holder
  • I am attempting to add a 128gb SD card to the carrier board, connected via SDMMC3 lines
  • I am using jetpack 4.4.1 and R32.4.4
  • We have added drivers for extra i2c devices, and renamed the kernel to 4.9.140-hawkware. Before making the changes to add external SD card support, this kernel works without issue.

I have made the following changes, following the patches as closely as possible since they seem to be for a earlier version of the original files.

diff --git a/nvidia/platform/t210/porg/kernel-dts/porg-plugin-manager/tegra210-porg-plugin-manager.dtsi b/nvidia/platform/t210/porg/kernel-dts/porg-plugin-manager/tegra210-porg-plugin-manager.dtsi
index 83df6bc..57b7ac4 100644
--- a/nvidia/platform/t210/porg/kernel-dts/porg-plugin-manager/tegra210-porg-plugin-manager.dtsi
+++ b/nvidia/platform/t210/porg/kernel-dts/porg-plugin-manager/tegra210-porg-plugin-manager.dtsi
@@ -314,6 +314,7 @@
                        override@1 {
                                target = <&sdhci2>;
                                _overlay_ {
+                                       status = "okay";
                                        vqmmc-supply = <&max77620_ldo6>;
                                        no-sdio;
                                        no-mmc;
diff --git a/nvidia/platform/t210/porg/kernel-dts/tegra210-porg-p3448-common.dtsi b/nvidia/platform/t210/porg/kernel-dts/tegra210-porg-p3448-common.dtsi
index 646329e..5fc7865 100644
--- a/nvidia/platform/t210/porg/kernel-dts/tegra210-porg-p3448-common.dtsi
+++ b/nvidia/platform/t210/porg/kernel-dts/tegra210-porg-p3448-common.dtsi
@@ -290,14 +290,13 @@
                max-clk-limit = <0xbebc200>;
        };
 
-       sdhci@700b0400 {
-               status = "disabled";
+       sdhci@700b0400 { /* SDMMC3 for external SD card */
+               status = "okay";
                /delete-property/ keep-power-in-suspend;
                /delete-property/ non-removable;
                mmc-ddr-1_8v;
                mmc-ocr-mask = <3>;
                uhs-mask = <0x0>;
-               max-clk-limit = <400000>;
                tap-delay = <3>;
        };

When I boot without the carrier SD card, I am able to complete u-boot, but it fails shortly into startin the kernel and prompts me to use bash to recover. The following is the output from the serial debug port:

boot_no_ext_sd.log (21.2 KB)

When I boot with the carrier SD card, I am able to reach the exact same line of kernel execution as before, but now it states there is a kernel panic.

boot_with_ext_sd.log (22.1 KB)

Any additional support would be greatly appreciated.

Do not boot drive from this external sdcard slot now. You need to make sure it can be enabled in kernel without error first.

My apologies, let me explain better:

We have 2 microSD cards, both are 128gb:

  1. Inserted into the p3448-0000-b00 jetson nano (boot drive)
  2. Inserted into the custom carrier board (sdmmc3 external SD is empty and formatted as ext4)

I am hoping to boot from the sd card in the nano (1) , and use the sd card on the carrier board for extra storage (2).

The first test I ran (boot_no_ext_sd.log), I had the following setup

  1. The p3448-0000-b00 jetson nano microSD boot drive was inserted
  2. The custom carrier board microSD was not inserted

The second test I ran (boot_with_ext_sd.log) I had the following setup

  1. The p3448-0000-b00 jetson nano microSD boot drive was inserted
  2. The custom carrier board microSD was inserted

This sounds wrong. Custom carrier board is only for emmc based module. Every design guide document is based on emmc module.

If you have a sdcard slot on your module, then it is wrong. You should not use that module on custom board.

Thank you for the clarification. I will order an emmc version of the nano for testing. In the meantime, I will continue to work on this, if I find a solution I will be sure to update this forum post.

Thank you!

2 Likes

Hello, @benx0aoa

Did you succeed in recognizing the sd card through the sd card slot on the custom carrier board?

Thank you.