linux/arch/arm/mach-tegra
Stephen Warren cfeb34ede4 ARM: Tegra: Seaboard: Re-order sdhci device registration
Ensure the built-in eMMC is always named mmcblk0.

This is important because:

* U-Boot statically assigns MMC device IDs based on controller ID.
* U-Boot assumes that kernel MMC device ID numbering matches U-Boot numbering.
* U-Boot provides a kernel cmdline option e.g. root=/dev/mmcblk0p3 based on
  that numbering.
* The kernel dynamically assigns MMC device IDs based on enumeration order of
  the memory behind the host controller, rather than statically based on host
  controller ID like U-Boot.
* By registering the SDHCI controller for the built-in eMMC first, the
  enumeration of the built-in eMMC is performed first, and hence eMMC gets
  assigned ID 0 just like U-Boot. If the SD slot is filled, it then gets
  assigned ID 1 just like U-Boot.
* If the MMC IDs mismatch, and the system boots from SD card not eMMC, the
  kernel will access the eMMC instead of SD card when attempting to mount
  /dev/mmcblk1p3 as the root fs. If eMMC is not partitioned/formatted, the
  kernel will panic since the root fs can't be mounted. If eMMC is partitioned
  and formatted, the kernel will mount an unexpected filesystem as the root fs.

This change relies on the SDHCI driver performing initial card detection
synchronously during device registration. This is currently the case.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Colin Cross <ccross@android.com>
2011-07-12 20:38:39 -07:00
..
include/mach Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc 2011-05-25 16:55:55 -07:00
board-harmony-pcie.c ARM: tegra: harmony: update PCI-e initialization sequence 2011-03-15 14:28:32 -07:00
board-harmony-pinmux.c ARM: tegra: harmony: Beginnings of audio support 2011-03-07 15:34:25 -08:00
board-harmony-power.c ARM: Tegra: Harmony: Fix conflicting GPIO numbering 2011-06-04 15:51:52 -07:00
board-harmony.c ARM: Tegra: Add to tegra_wm8903_platform_data 2011-04-18 17:55:58 +01:00
board-harmony.h ARM: Tegra: Harmony: Fix conflicting GPIO numbering 2011-06-04 15:51:52 -07:00
board-paz00-pinmux.c ARM: tegra: Add Toshiba AC100 support 2011-03-07 15:44:34 -08:00
board-paz00.c ARM: tegra: Add Toshiba AC100 support 2011-03-07 15:44:34 -08:00
board-paz00.h ARM: tegra: Add Toshiba AC100 support 2011-03-07 15:44:34 -08:00
board-seaboard-pinmux.c ARM: tegra: seaboard: register i2c devices 2011-03-07 15:44:09 -08:00
board-seaboard.c ARM: Tegra: Seaboard: Re-order sdhci device registration 2011-07-12 20:38:39 -07:00
board-seaboard.h ARM: tegra: create defines for SD-related GPIO names 2011-03-07 15:34:25 -08:00
board-trimslice-pinmux.c ARM: tegra: trimslice: enable MMC/SD slots 2011-03-08 09:50:06 +02:00
board-trimslice.c ARM: tegra: trimslice: enable MMC/SD slots 2011-03-08 09:50:06 +02:00
board-trimslice.h ARM: tegra: trimslice: enable MMC/SD slots 2011-03-08 09:50:06 +02:00
board.h ARM: tegra: Move tegra_common_init to tegra_init_early 2011-02-22 11:25:12 -08:00
clock.c ARM: tegra: clock: Round rate before setting rate 2011-02-22 11:22:34 -08:00
clock.h ARM: tegra: clock: Add function to set SDMMC tap delay 2011-02-21 00:16:47 -08:00
common.c ARM: Tegra: Make tegra_dma_init a postcore_initcall 2011-02-23 14:00:11 -08:00
cpu-tegra.c ARM: tegra: cpufreq: Adjust memory frequency with cpu frequency 2011-02-21 00:16:46 -08:00
devices.c ARM: tegra: add devices.c entries for audio 2011-03-07 15:34:24 -08:00
devices.h ARM: tegra: add devices.c entries for audio 2011-03-07 15:34:24 -08:00
dma.c Fix common misspellings 2011-03-31 11:26:23 -03:00
fuse.c [ARM] tegra: Add support for reading fuses 2010-10-21 18:12:09 -07:00
fuse.h [ARM] tegra: Add support for reading fuses 2010-10-21 18:12:09 -07:00
gpio-names.h [ARM] tegra: add GPIO support 2010-08-05 14:57:02 -07:00
gpio.c ARM: tegra: update GPIO chained IRQ handler to use entry/exit functions 2011-05-11 16:04:15 +01:00
headsmp.S [ARM] tegra: SMP support 2010-08-05 14:57:01 -07:00
hotplug.c ARM: fix wrongly patched constants 2011-01-14 12:06:26 +00:00
io.c [ARM] tegra: update iomap 2010-10-21 18:11:24 -07:00
irq.c ARM: tegra: irq: Add tegra_eoi 2011-05-11 16:04:16 +01:00
Kconfig ARM: Tegra: select MACH_HAS_SND_SOC_TEGRA_WM8903 2011-04-21 11:57:31 +01:00
localtimer.c ARM: 6759/1: smp: Select local timers vs broadcast timer support runtime 2011-02-23 17:54:27 +00:00
Makefile ARM: tegra: irq: Move legacy_irq.c into irq.c 2011-05-11 16:04:16 +01:00
Makefile.boot [ARM] tegra: initial tegra support 2010-08-05 14:51:42 -07:00
pcie.c ARM: tegra: add PCI Express power gating 2011-03-03 13:57:07 -08:00
pinmux-t2-tables.c ARM: tegra: pinmux: Add missing drive pingroups and fix suspend 2011-02-09 21:57:02 -08:00
pinmux.c [ARM] tegra: pinmux: add safe values, move tegra2, add suspend 2010-10-21 18:11:41 -07:00
platsmp.c ARM: consolidate SMP cross call implementation 2011-05-23 16:53:17 +01:00
powergate.c ARM: tegra: Add api to control internal powergating 2011-02-09 21:57:00 -08:00
tegra2_clocks.c Merge branch 'master' into for-next 2011-04-26 10:22:59 +02:00
tegra2_emc.c ARM: tegra: Add external memory controller driver 2011-02-21 00:16:45 -08:00
tegra2_emc.h ARM: tegra: Add external memory controller driver 2011-02-21 00:16:45 -08:00
timer.c clocksource: convert ARM 32-bit up counting clocksources 2011-05-23 18:04:51 +01:00
usb_phy.c ARM: tegra: Add support for Tegra USB PHYs 2011-03-11 14:22:11 -08:00