From: David Brownell <[email protected]>

Move DM355 MMC/SD pinmux to the device setup code; it shouldn't
be coupled to clock activation.  This is a small cleanup which
doesn't yet support options like not muxing all MMCSD1 pins when
they're not needed (e.g. hard-wired to an SDIO WLAN adapter). 

Signed-off-by: David Brownell <[email protected]>
---
 arch/arm/mach-davinci/devices.c |   15 +++++++++++++++
 arch/arm/mach-davinci/psc.c     |   12 ------------
 2 files changed, 15 insertions(+), 12 deletions(-)

--- a/arch/arm/mach-davinci/devices.c
+++ b/arch/arm/mach-davinci/devices.c
@@ -28,6 +28,7 @@
 #include <mach/emac.h>
 #include <mach/i2c.h>
 #include <mach/cpu.h>
+#include <mach/mux.h>
 
 #include "clock.h"
 
@@ -163,6 +164,17 @@ void __init davinci_setup_mmc(int module
        case 1:
                if (!cpu_is_davinci_dm355())
                        break;
+
+               /* REVISIT we may not need all these pins if e.g. this
+                * is a hard-wired SDIO device...
+                */
+               davinci_cfg_reg(DM355_SD1_CMD);
+               davinci_cfg_reg(DM355_SD1_CLK);
+               davinci_cfg_reg(DM355_SD1_DATA0);
+               davinci_cfg_reg(DM355_SD1_DATA1);
+               davinci_cfg_reg(DM355_SD1_DATA2);
+               davinci_cfg_reg(DM355_SD1_DATA3);
+
                pdev = &davinci_mmcsd1_device;
                clockname = "MMCSDCLK1";
                break;
@@ -171,6 +183,9 @@ void __init davinci_setup_mmc(int module
                        mmcsd0_resources[0].start = DM355_MMCSD0_BASE;
                        mmcsd0_resources[0].end = DM355_MMCSD0_BASE + SZ_4K - 1;
                        mmcsd0_resources[2].start = IRQ_DM355_SDIOINT0;
+
+                       /* expose all 6 MMC0 signals:  CLK, CMD, DATA[0..3] */
+                       davinci_cfg_reg(DM355_MMCSD0);
                }
                pdev = &davinci_mmcsd0_device;
                clockname = cpu_is_davinci_dm355() ? "MMCSDCLK0" : "MMCSDCLK";
--- a/arch/arm/mach-davinci/psc.c
+++ b/arch/arm/mach-davinci/psc.c
@@ -86,15 +86,6 @@ static void dm355_psc_mux(unsigned int i
         * while declaring what pins/irqs/edmas/... we care about.
         */
        switch (id) {
-       case DM355_LPSC_MMC_SD1:        /* MMC1 */
-               /* expose DATA[0..3], CMD, CLK */
-               davinci_cfg_reg(DM355_SD1_CLK);
-               davinci_cfg_reg(DM355_SD1_CMD);
-               davinci_cfg_reg(DM355_SD1_DATA3);
-               davinci_cfg_reg(DM355_SD1_DATA2);
-               davinci_cfg_reg(DM355_SD1_DATA1);
-               davinci_cfg_reg(DM355_SD1_DATA0);
-               break;
        case DM355_LPSC_McBSP1:         /* ASP1 */
                /* our ASoC code currently doesn't use these IRQs */
 #if 0
@@ -110,9 +101,6 @@ static void dm355_psc_mux(unsigned int i
                davinci_writel(tmp, DM355_EDMA_EVTMUX);
                break;
        case DAVINCI_LPSC_MMC_SD:       /* MMC0 */
-               /* expose all 6 MMC0 signals:  CLK, CMD, DATA[0..3] */
-               davinci_cfg_reg(DM355_MMCSD0);
-
                /* support EMDA for MMC0 RX */
                tmp = davinci_readl(DM355_EDMA_EVTMUX);
                tmp &= ~BIT(2);

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to