ARM: tegra: trimslice: enable MMC/SD slots
authorMike Rapoport <mike@compulab.co.il>
Mon, 7 Mar 2011 14:29:24 +0000 (16:29 +0200)
committerMike Rapoport <mike@compulab.co.il>
Tue, 8 Mar 2011 07:50:06 +0000 (09:50 +0200)
TrimSlice has MicroSD and standard MMC/SD slots.
Register sdhci devices and enable GPIOs for MMC/SD slot.

Signed-off-by: Mike Rapoport <mike@compulab.co.il>
arch/arm/mach-tegra/board-trimslice-pinmux.c
arch/arm/mach-tegra/board-trimslice.c
arch/arm/mach-tegra/board-trimslice.h

index 6d4fc9f7f1fb29e9d9a50833d524f4b61df844d2..13534fa08abfd4b2586b0e983d776d51bfe5289f 100644 (file)
 
 #include <linux/kernel.h>
 #include <linux/init.h>
+
 #include <mach/pinmux.h>
+#include <mach/gpio.h>
 
+#include "gpio-names.h"
 #include "board-trimslice.h"
 
 static __initdata struct tegra_pingroup_config trimslice_pinmux[] = {
@@ -139,7 +142,13 @@ static __initdata struct tegra_pingroup_config trimslice_pinmux[] = {
        {TEGRA_PINGROUP_XM2D,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
 };
 
+static struct tegra_gpio_table gpio_table[] = {
+       { .gpio = TRIMSLICE_GPIO_SD4_CD, .enable = true }, /* mmc4 cd */
+       { .gpio = TRIMSLICE_GPIO_SD4_WP, .enable = true }, /* mmc4 wp */
+};
+
 void __init trimslice_pinmux_init(void)
 {
        tegra_pinmux_config_table(trimslice_pinmux, ARRAY_SIZE(trimslice_pinmux));
+       tegra_gpio_config(gpio_table, ARRAY_SIZE(gpio_table));
 }
index 7be7d4acd02f446bbc2e2cb5e7309fe5637fe856..cda4cfd78e8417f6f8af5fe0a30e2015f074efa9 100644 (file)
 #include <asm/setup.h>
 
 #include <mach/iomap.h>
+#include <mach/sdhci.h>
 
 #include "board.h"
 #include "clock.h"
+#include "devices.h"
+#include "gpio-names.h"
 
 #include "board-trimslice.h"
 
@@ -56,9 +59,22 @@ static struct platform_device debug_uart = {
                .platform_data  = debug_uart_platform_data,
        },
 };
+static struct tegra_sdhci_platform_data sdhci_pdata1 = {
+       .cd_gpio        = -1,
+       .wp_gpio        = -1,
+       .power_gpio     = -1,
+};
+
+static struct tegra_sdhci_platform_data sdhci_pdata4 = {
+       .cd_gpio        = TRIMSLICE_GPIO_SD4_CD,
+       .wp_gpio        = TRIMSLICE_GPIO_SD4_WP,
+       .power_gpio     = -1,
+};
 
 static struct platform_device *trimslice_devices[] __initdata = {
        &debug_uart,
+       &tegra_sdhci_device1,
+       &tegra_sdhci_device4,
 };
 
 static void __init tegra_trimslice_fixup(struct machine_desc *desc,
@@ -92,6 +108,9 @@ static void __init tegra_trimslice_init(void)
 
        trimslice_pinmux_init();
 
+       tegra_sdhci_device1.dev.platform_data = &sdhci_pdata1;
+       tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4;
+
        platform_add_devices(trimslice_devices, ARRAY_SIZE(trimslice_devices));
 }
 
index 16ec0f0d3bb14843e7b8a6c1e7aaf3c3aae66a87..e8ef6291c6f1945e7f7c8e8f51ef36749b8e0c7e 100644 (file)
@@ -17,6 +17,9 @@
 #ifndef _MACH_TEGRA_BOARD_TRIMSLICE_H
 #define _MACH_TEGRA_BOARD_TRIMSLICE_H
 
+#define TRIMSLICE_GPIO_SD4_CD  TEGRA_GPIO_PP1  /* mmc4 cd */
+#define TRIMSLICE_GPIO_SD4_WP  TEGRA_GPIO_PP2  /* mmc4 wp */
+
 void trimslice_pinmux_init(void);
 
 #endif
This page took 0.025728 seconds and 5 git commands to generate.