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
