Upstream kernel SD/MMC issues

I’ve been trying to boot the Jetson TX1 with the upstream/mainline linux kernel (version 4.9.0-2 ARCH from the generic AArch64 Arch Linux ARM build). I’m using the upstream device tree (/boot/dtbs/nvidia/tegra210-p2371-2180.dtb). The kernel is able to boot successfully, but it’s unable to use the external SD card. In the device tree, sdhci@700b0000 and sdhci@700b0600 are both enabled.

Seemingly, sdhci@700b0000 is the external slot, and it is basically ignored by the kernel. The only messages I see related to it are

[    1.433234] sdhci-tegra 700b0000.sdhci: Got CD GPIO

, indicating that the card detect GPIO has been registered. The other two MMC controllers (at 700b0200 and 700b0400) are disabled in the default device tree. However, if the tree is edited to enable them, they are correctly detected by the kernel. The first MMC controller, for the external SD, is not present at all.

It’s not just that the kernel can’t detect the card in the slot; it can’t see the controller at all. The second and third controllers, if enabled, affect the ordering of /dev/mmcblk entries, pushing the fourth controller (eMMC) further down the list. The first controller has no effect at all.

Hi pbfy0,

Suggest to contact with people who working on upstream support via linux-tegra@vger.kernel.org
See http://elinux.org/Jetson/TX1_Upstream_Kernel#Support

Thanks