[PATCH 2/2] ARM: Tegra: Seaboard: Re-order sdhci device registration
Stephen Warren
swarren at nvidia.com
Wed Jul 13 14:56:18 EDT 2011
Stephen Warren wrote at Tuesday, May 31, 2011 3:14 PM:
> Ensure the built-in eMMC is always named mmcblk0.
Colin, could you please consider this for 3.1?
Thanks.
> 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 at nvidia.com>
> ---
> arch/arm/mach-tegra/board-seaboard.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-tegra/board-seaboard.c b/arch/arm/mach-tegra/board-seaboard.c
> index a8d7ace..783de17 100644
> --- a/arch/arm/mach-tegra/board-seaboard.c
> +++ b/arch/arm/mach-tegra/board-seaboard.c
> @@ -137,9 +137,9 @@ static struct tegra_sdhci_platform_data sdhci_pdata4 = {
> static struct platform_device *seaboard_devices[] __initdata = {
> &debug_uart,
> &tegra_pmu_device,
> - &tegra_sdhci_device1,
> - &tegra_sdhci_device3,
> &tegra_sdhci_device4,
> + &tegra_sdhci_device3,
> + &tegra_sdhci_device1,
> &seaboard_gpio_keys_device,
> };
>
> --
> 1.7.0.4
--
nvpublic
More information about the linux-arm-kernel
mailing list