[PATCH 1/6] omap: mmc: split out init for 2420

2011-02-23 Thread Kishore Kadiyala
From: Anand Gadiyar gadi...@ti.com

The MMC controller on the OMAP2420 is different from those
on the OMAP2430, OMAP3 and OMAP4 families - all of the latter
are identical. The one on the OMAP2420 is closer to that
on OMAP1 chips.

Currently, the n8x0 is the only OMAP2420 platform supported
in mainline which registers the MMC controller. Upcoming
changes to register the controllers using hwmod data are
potentially invasive. To reduce the risk, separate out the
2420 controller registration from the common init function
and update its only user. Also seperating out mux settings
for OMAP2420.

Signed-off-by: Anand Gadiyar gadi...@ti.com
Signed-off-by: Kishore Kadiyala kishore.kadiy...@ti.com
Cc: Tony Lindgren t...@atomide.com
Cc: Madhusudhan Chikkature madhu...@ti.com
Cc: Chris Ball c...@laptop.org
---
 arch/arm/mach-omap2/board-n8x0.c  |2 +-
 arch/arm/mach-omap2/devices.c |   88 +
 arch/arm/plat-omap/include/plat/mmc.h |4 ++
 3 files changed, 61 insertions(+), 33 deletions(-)

diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
index b36cbd2..e710cd9 100644
--- a/arch/arm/mach-omap2/board-n8x0.c
+++ b/arch/arm/mach-omap2/board-n8x0.c
@@ -536,7 +536,7 @@ static void __init n8x0_mmc_init(void)
}
 
mmc_data[0] = mmc1_data;
-   omap2_init_mmc(mmc_data, OMAP24XX_NR_MMC);
+   omap242x_init_mmc(mmc_data);
 }
 #else
 
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 71f099b..7b35c87 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -609,11 +609,10 @@ err1:
 static inline void omap_hsmmc_reset(void) {}
 #endif
 
-#if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) || \
-   defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE)
+#if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE)
 
-static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller,
-   int controller_nr)
+static inline void omap242x_mmc_mux(struct omap_mmc_platform_data
+   *mmc_controller)
 {
if ((mmc_controller-slots[0].switch_pin  0)  \
(mmc_controller-slots[0].switch_pin  OMAP_MAX_GPIO_LINES))
@@ -624,33 +623,61 @@ static inline void omap2_mmc_mux(struct 
omap_mmc_platform_data *mmc_controller,
omap_mux_init_gpio(mmc_controller-slots[0].gpio_wp,
OMAP_PIN_INPUT_PULLUP);
 
-   if (cpu_is_omap2420()  controller_nr == 0) {
-   omap_mux_init_signal(sdmmc_cmd, 0);
-   omap_mux_init_signal(sdmmc_clki, 0);
-   omap_mux_init_signal(sdmmc_clko, 0);
-   omap_mux_init_signal(sdmmc_dat0, 0);
-   omap_mux_init_signal(sdmmc_dat_dir0, 0);
-   omap_mux_init_signal(sdmmc_cmd_dir, 0);
-   if (mmc_controller-slots[0].caps  MMC_CAP_4_BIT_DATA) {
-   omap_mux_init_signal(sdmmc_dat1, 0);
-   omap_mux_init_signal(sdmmc_dat2, 0);
-   omap_mux_init_signal(sdmmc_dat3, 0);
-   omap_mux_init_signal(sdmmc_dat_dir1, 0);
-   omap_mux_init_signal(sdmmc_dat_dir2, 0);
-   omap_mux_init_signal(sdmmc_dat_dir3, 0);
-   }
+   omap_mux_init_signal(sdmmc_cmd, 0);
+   omap_mux_init_signal(sdmmc_clki, 0);
+   omap_mux_init_signal(sdmmc_clko, 0);
+   omap_mux_init_signal(sdmmc_dat0, 0);
+   omap_mux_init_signal(sdmmc_dat_dir0, 0);
+   omap_mux_init_signal(sdmmc_cmd_dir, 0);
+   if (mmc_controller-slots[0].caps  MMC_CAP_4_BIT_DATA) {
+   omap_mux_init_signal(sdmmc_dat1, 0);
+   omap_mux_init_signal(sdmmc_dat2, 0);
+   omap_mux_init_signal(sdmmc_dat3, 0);
+   omap_mux_init_signal(sdmmc_dat_dir1, 0);
+   omap_mux_init_signal(sdmmc_dat_dir2, 0);
+   omap_mux_init_signal(sdmmc_dat_dir3, 0);
+   }
 
-   /*
-* Use internal loop-back in MMC/SDIO Module Input Clock
-* selection
-*/
-   if (mmc_controller-slots[0].internal_clock) {
-   u32 v = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0);
-   v |= (1  24);
-   omap_ctrl_writel(v, OMAP2_CONTROL_DEVCONF0);
-   }
+   /*
+* Use internal loop-back in MMC/SDIO Module Input Clock
+* selection
+*/
+   if (mmc_controller-slots[0].internal_clock) {
+   u32 v = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0);
+   v |= (1  24);
+   omap_ctrl_writel(v, OMAP2_CONTROL_DEVCONF0);
+   }
+}
+
+void __init omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data)
+{
+   char *name = mmci-omap;
+
+   if (!mmc_data[0]) {
+   pr_err(%s fails: Incomplete platform 

Re: [PATCH 1/6] omap: mmc: split out init for 2420

2011-02-23 Thread Kadiyala, Kishore
On Wed, Feb 23, 2011 at 10:44 PM, Kishore Kadiyala
kishore.kadiy...@ti.com wrote:
 From: Anand Gadiyar gadi...@ti.com

 The MMC controller on the OMAP2420 is different from those
 on the OMAP2430, OMAP3 and OMAP4 families - all of the latter
 are identical. The one on the OMAP2420 is closer to that
 on OMAP1 chips.

 Currently, the n8x0 is the only OMAP2420 platform supported
 in mainline which registers the MMC controller. Upcoming
 changes to register the controllers using hwmod data are
 potentially invasive. To reduce the risk, separate out the
 2420 controller registration from the common init function
 and update its only user. Also seperating out mux settings
 for OMAP2420.

 Signed-off-by: Anand Gadiyar gadi...@ti.com
 Signed-off-by: Kishore Kadiyala kishore.kadiy...@ti.com
 Cc: Tony Lindgren t...@atomide.com
 Cc: Madhusudhan Chikkature madhu...@ti.com
 Cc: Chris Ball c...@laptop.org

snip

Please ignore this patch as its a single patch and the subject needs
update , will repost.

Regards,
Kishore
--
To unsubscribe from this list: send the line unsubscribe linux-mmc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html