Hello Nvidia,
I’m wanting to boot from sdmmc3 on our custom carrier board but u-boot is having issues specifically with UHS micro sd cards across soft/warm reboots. I’m looking for a uboot patch that matches the kernel patch-> Kernel 9875882.diff.zip . This patch was originally posted here
Background:
I have a custom carrier board with the extra SD card slot (sdmmc3) supported. It doesn’t have “card detect” or a load switch / SDMMC_VDD_EN gpio for power (ie. its always-on).
I have followed the instructions copied from Here that states:
Blockquote
- The basic device tree change for enabling sdmmc3
https://forums.developer.nvidia.com/t/microsd-card-not-detected-on-jetson-nano-production-module/80776/14 27- If you notice the mmc speed is slow, please try this patch.
https://forums.developer.nvidia.com/t/slow-sd-card-access-speed-read-write-with-jetson-nano-production-module/111749/31 13- Some other forum users notice if tring warm boot, the speed becomes slow again. Turns out this patch is also needed in kernel
https://forums.developer.nvidia.com/t/jetson-nano-sd-card-enters-back-to-high-speed-mode-instead-of-uhs-mode-after-soft-reboot/119041/4 21- Also, for those who do not have SDMMC_VDD_EN gpio on their carrier board, then need to add “nvidia,vmmc-always-on” under sdhci device tree too.
Blockquote
I hit the tuning issue and the warm reset issue and followed the above suggestions to resolve, including applying the kernel warm reboot patch.
SD (for storage only) is now fully functional and supports multiple card speeds even across warm reboots.
Problem:
Now that I can use sdmmc3 for extra storage, I would like to add support for booting from it.
0002-u-boot-tegra-Enabled-jet-carrier-board-s-sd-card-slo.patch (3.4 KB)
In the attached patch I changed mmc1 from 700b0000 to 700b0400 to use sdmmc3, added it to bootable devices, patched pin_mux_mmc to enable ld06 instead of ld02, and then made the relevant u-boot device tree changes.
For non uhs cards, everything works great! I can boot from sd card when detected, emmc when sd card is not detected, and warm reboots work just fine.
For uhs cards I’m hitting the same “warm boot” problem from above that was patched in the kernel. The kernel patch basically detects that the uhs card is already configured and in the 1.8v state when the kernel is attempting to initialize the controller and adjusts for this (ie. ignores invalid cmd response when requesting 1.8v support from sdhci and continues with the uhs initialization).
Is there a uboot specific patch already to resolve warm reboots of uhs cards?
If not, is there a way to manipulate the max77620 ld06 port to simulate card removal and reinsertion?
Please advise.
Thank you.
Extra Details:
Warm resets with uhs cards (formatted for booting) look like this:
– uboot detects the sdcard and attempts to read from it
– uboot spits out error ->tegra_mmc_send_cmd_bounced: error during transfer: 0x00208001
– uboot spits out partition error several times → ** No partition table - mmc 1 **
– uboot falls back to booting from emmc
– kernel detects sd card and “recovers” via earlier discussed patch.
– machine finishes booting from emmc and user can mount sd card without error.
DEBUG:
U-Boot 2020.04 (Apr 05 2011 - 23:00:00 +0000)
SoC: tegra210
Model: NVIDIA Jetson Nano Developer Kit
Board: NVIDIA P3450-0002
DRAM: 4 GiB
MMC: sdhci@700b0400: 1, sdhci@700b0600: 0
Loading Environment from MMC… OK
In: serial
Out: serial
Err: serial
Net: No ethernet found.
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc1 is current device
Searching for mmc 1 APP
Found valid partition a, 3 attempts remaining
Scanning mmc 1:0x1…
tegra_mmc_send_cmd_bounced: error during transfer: 0x00208001
** No partition table - mmc 1 **
** No partition table - mmc 1 **
** No partition table - mmc 1 **
** No partition table - mmc 1 **
** No partition table - mmc 1 **
** No partition table - mmc 1 **
** No partition table - mmc 1 **
** No partition table - mmc 1 **
** No partition table - mmc 1 **
Searching for mmc 1 APP_b
No valid slot found, resetting counts
Saving Environment to MMC… Writing to MMC(0)… OK
switch to partitions #0, OK
mmc0(part 0) is current device
Searching for mmc 0 APP
Found valid partition a, 3 attempts remaining
Scanning mmc 0:0x1…