@@ -19,6 +19,7 @@
#include <linux/regulator/max8649.h>
#include <linux/regulator/fixed.h>
#include <linux/mfd/max8925.h>
+#include <linux/delay.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
@@ -180,6 +181,45 @@ static struct sdhci_pxa_platdata mmp2_sdh_platdata_mmc0 = {
.max_speed = 25000000,
};
+static struct sdhci_pxa_platdata mmp2_sdh_platdata_mmc1 = {
+ .flags = PXA_FLAG_CARD_PERMANENT,
+};
+
+static struct sdhci_pxa_platdata mmp2_sdh_platdata_mmc2 = {
+ .flags = PXA_FLAG_CARD_PERMANENT |
+ PXA_FLAG_SD_8_BIT_CAPABLE_SLOT,
+};
+
+static void __init mmc_sdio_wifi(void)
+{
+ int poweron;
+ int reset;
+
+ poweron = mfp_to_gpio(GPIO57_GPIO);
+ reset = mfp_to_gpio(GPIO58_GPIO);
+
+ if(gpio_request(reset, "sd8xxx reset")) {
+ printk(KERN_INFO "gpio %d request failed\n", reset);
+ return;
+ }
+
+ if(gpio_request(poweron, "sd8xxx PDn")) {
+ gpio_free(reset);
+ printk(KERN_INFO "gpio %d request failed\n", poweron);
+ return;
+ }
+
+ gpio_direction_output(poweron, 1);
+ msleep (1);
+ gpio_direction_output(reset, 0);
+ msleep (1);
+ gpio_direction_output(reset, 1);
+ gpio_free(reset);
+ gpio_free(poweron);
+
+ mmp2_add_sdhost(1, &mmp2_sdh_platdata_mmc1); /* Wifi */
+}
+
static void __init brownstone_init(void)
{
mfp_config(ARRAY_AND_SIZE(brownstone_pin_config));
@@ -188,7 +228,9 @@ static void __init brownstone_init(void)
mmp2_add_uart(1);
mmp2_add_uart(3);
mmp2_add_twsi(1, NULL, ARRAY_AND_SIZE(brownstone_twsi1_info));
+ mmp2_add_sdhost(2, &mmp2_sdh_platdata_mmc2); /* eMMC */
mmp2_add_sdhost(0, &mmp2_sdh_platdata_mmc0); /* SD/MMC */
+ mmc_sdio_wifi();
/* enable 5v regulator */
platform_device_register(&brownstone_v_5vp_device);
--
1.7.0.4
From 6081a571dede58782688bf908ecc16b410536a63 Mon Sep 17 00:00:00 2001
From: Philip Rakity <prakity@marvell.com>
Date: Mon, 20 Dec 2010 14:42:22 -0800
Subject: [PATCH] mach-mmp: Support for SD/MMC clock adjustment in brownstone
Set timing for brownstone for SD/MMC cards to enable detection
timing adjustments are needed when speed > 25MHz
remove limitation on maximum speed of 25MHz
Signed-off-by: Philip Rakity <prakity@marvell.com>
---
arch/arm/mach-mmp/brownstone.c | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
@@ -178,14 +178,22 @@ static struct i2c_board_info brownstone_twsi1_info[] = {
};
static struct sdhci_pxa_platdata mmp2_sdh_platdata_mmc0 = {
- .max_speed = 25000000,
+ .adjust_clocks = 1,
+ .clk_select = 1,
+ .clk_delay = 31,
};
static struct sdhci_pxa_platdata mmp2_sdh_platdata_mmc1 = {
+ .adjust_clocks = 1,
+ .clk_select = 1,
+ .clk_delay = 15,
.flags = PXA_FLAG_CARD_PERMANENT,
};
static struct sdhci_pxa_platdata mmp2_sdh_platdata_mmc2 = {
+ .adjust_clocks = 1,
+ .clk_select = 1,
+ .clk_delay = 31,
.flags = PXA_FLAG_CARD_PERMANENT |
PXA_FLAG_SD_8_BIT_CAPABLE_SLOT,
};