Signed-off-by: Kevin Hilman <[email protected]>
---
Probably applies to HEAD, but only tested on top of v3 of clock/pll changes
arch/arm/mach-davinci/Makefile | 2 +-
arch/arm/mach-davinci/dm355.c | 45 ++++++++-
arch/arm/mach-davinci/dm644x.c | 56 ++++++++++-
arch/arm/mach-davinci/dm646x.c | 21 ++++-
arch/arm/mach-davinci/include/mach/mux.h | 6 +-
arch/arm/mach-davinci/mux_cfg.c | 169 ------------------------------
6 files changed, 120 insertions(+), 179 deletions(-)
delete mode 100644 arch/arm/mach-davinci/mux_cfg.c
diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile
index 38a19b7..6783681 100644
--- a/arch/arm/mach-davinci/Makefile
+++ b/arch/arm/mach-davinci/Makefile
@@ -7,7 +7,7 @@
obj-y := time.o irq.o clock.o serial.o io.o id.o psc.o \
gpio.o devices.o usb.o dma.o iram.o
-obj-$(CONFIG_DAVINCI_MUX) += mux.o mux_cfg.o
+obj-$(CONFIG_DAVINCI_MUX) += mux.o
# Chip specific
obj-$(CONFIG_ARCH_DAVINCI_DM644x) += dm644x.o
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
index 51b24dd..948f0e1 100644
--- a/arch/arm/mach-davinci/dm355.c
+++ b/arch/arm/mach-davinci/dm355.c
@@ -18,7 +18,11 @@
#include <mach/mux.h>
#include "clock.h"
+#include "mux.h"
+/*
+ * Device specific clocks
+ */
#define DM355_REF_FREQ 24000000 /* 24 or 36 MHz */
static struct pll_data pll1_data = {
@@ -361,8 +365,47 @@ static struct clk *dm355_clks[] __initdata = {
NULL,
};
+/*
+ * Device specific mux setup
+ *
+ * soc description mux mode mode mux dbg
+ * reg offset mask mode
+ */
+static const struct mux_config dm355_pins[] = {
+MUX_CFG(DM355, MMCSD0, 4, 2, 1, 0, false)
+
+MUX_CFG(DM355, SD1_CLK, 3, 6, 1, 1, false)
+MUX_CFG(DM355, SD1_CMD, 3, 7, 1, 1, false)
+MUX_CFG(DM355, SD1_DATA3, 3, 8, 3, 1, false)
+MUX_CFG(DM355, SD1_DATA2, 3, 10, 3, 1, false)
+MUX_CFG(DM355, SD1_DATA1, 3, 12, 3, 1, false)
+MUX_CFG(DM355, SD1_DATA0, 3, 14, 3, 1, false)
+
+MUX_CFG(DM355, I2C_SDA, 3, 19, 1, 1, false)
+MUX_CFG(DM355, I2C_SCL, 3, 20, 1, 1, false)
+
+MUX_CFG(DM355, MCBSP0_BDX, 3, 0, 1, 1, false)
+MUX_CFG(DM355, MCBSP0_X, 3, 1, 1, 1, false)
+MUX_CFG(DM355, MCBSP0_BFSX, 3, 2, 1, 1, false)
+MUX_CFG(DM355, MCBSP0_BDR, 3, 3, 1, 1, false)
+MUX_CFG(DM355, MCBSP0_R, 3, 4, 1, 1, false)
+MUX_CFG(DM355, MCBSP0_BFSR, 3, 5, 1, 1, false)
+
+MUX_CFG(DM355, SPI0_SDI, 4, 1, 1, 0, false)
+MUX_CFG(DM355, SPI0_SDENA0, 4, 0, 1, 0, false)
+MUX_CFG(DM355, SPI0_SDENA1, 3, 28, 1, 1, false)
+
+INT_CFG(DM355, INT_EDMA_CC, 2, 1, 1, false)
+INT_CFG(DM355, INT_EDMA_TC0_ERR, 3, 1, 1, false)
+INT_CFG(DM355, INT_EDMA_TC1_ERR, 4, 1, 1, false)
+
+EVT_CFG(DM355, EVT8_ASP1_TX, 0, 1, 0, false)
+EVT_CFG(DM355, EVT9_ASP1_RX, 1, 1, 0, false)
+EVT_CFG(DM355, EVT26_MMC0_RX, 2, 1, 0, false)
+};
+
void __init dm355_init(void)
{
davinci_clk_init(dm355_clks);
- davinci_mux_init();
+ davinci_mux_register(dm355_pins, ARRAY_SIZE(dm355_pins));;
}
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
index c915a47..2397311 100644
--- a/arch/arm/mach-davinci/dm644x.c
+++ b/arch/arm/mach-davinci/dm644x.c
@@ -18,7 +18,11 @@
#include <mach/mux.h>
#include "clock.h"
+#include "mux.h"
+/*
+ * Device specific clocks
+ */
#define DM644X_REF_FREQ 27000000
static struct pll_data pll1_data = {
@@ -302,8 +306,58 @@ static struct clk *dm644x_clks[] __initdata = {
NULL,
};
+/*
+ * Device specific mux setup
+ *
+ * soc description mux mode mode mux dbg
+ * reg offset mask mode
+ */
+static const struct mux_config dm644x_pins[] = {
+MUX_CFG(DM644X, HDIREN, 0, 16, 1, 1, true)
+MUX_CFG(DM644X, ATAEN, 0, 17, 1, 1, true)
+MUX_CFG(DM644X, ATAEN_DISABLE, 0, 17, 1, 0, true)
+
+MUX_CFG(DM644X, HPIEN_DISABLE, 0, 29, 1, 0, true)
+
+MUX_CFG(DM644X, AEAW, 0, 0, 31, 31, true)
+
+MUX_CFG(DM644X, MSTK, 1, 9, 1, 0, false)
+
+MUX_CFG(DM644X, I2C, 1, 7, 1, 1, false)
+
+MUX_CFG(DM644X, MCBSP, 1, 10, 1, 1, false)
+
+MUX_CFG(DM644X, UART1, 1, 1, 1, 1, true)
+MUX_CFG(DM644X, UART2, 1, 2, 1, 1, true)
+
+MUX_CFG(DM644X, PWM0, 1, 4, 1, 1, false)
+
+MUX_CFG(DM644X, PWM1, 1, 5, 1, 1, false)
+
+MUX_CFG(DM644X, PWM2, 1, 6, 1, 1, false)
+
+MUX_CFG(DM644X, VLYNQEN, 0, 15, 1, 1, false)
+MUX_CFG(DM644X, VLSCREN, 0, 14, 1, 1, false)
+MUX_CFG(DM644X, VLYNQWD, 0, 12, 3, 3, false)
+
+MUX_CFG(DM644X, EMACEN, 0, 31, 1, 1, true)
+
+MUX_CFG(DM644X, GPIO3V, 0, 31, 1, 0, true)
+
+MUX_CFG(DM644X, GPIO0, 0, 24, 1, 0, true)
+MUX_CFG(DM644X, GPIO3, 0, 25, 1, 0, false)
+MUX_CFG(DM644X, GPIO43_44, 1, 7, 1, 0, false)
+MUX_CFG(DM644X, GPIO46_47, 0, 22, 1, 0, true)
+
+MUX_CFG(DM644X, RGB666, 0, 22, 1, 1, true)
+
+MUX_CFG(DM644X, LOEEN, 0, 24, 1, 1, true)
+MUX_CFG(DM644X, LFLDEN, 0, 25, 1, 1, false)
+};
+
+
void __init dm644x_init(void)
{
davinci_clk_init(dm644x_clks);
- davinci_mux_init();
+ davinci_mux_register(dm644x_pins, ARRAY_SIZE(dm644x_pins));
}
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
index ea97a72..b8a6b86 100644
--- a/arch/arm/mach-davinci/dm646x.c
+++ b/arch/arm/mach-davinci/dm646x.c
@@ -18,8 +18,11 @@
#include <mach/mux.h>
#include "clock.h"
+#include "mux.h"
-/* various clock frequencies */
+/*
+ * Device specific clocks
+ */
#define DM646X_REF_FREQ 27000000
#define DM646X_AUX_FREQ 24000000
@@ -249,8 +252,22 @@ static struct clk *dm646x_clks[] __initdata = {
NULL,
};
+/*
+ * Device specific mux setup
+ *
+ * soc description mux mode mode mux dbg
+ * reg offset mask mode
+ */
+static const struct mux_config dm646x_pins[] = {
+MUX_CFG(DM646X, ATAEN, 0, 0, 1, 1, true)
+
+MUX_CFG(DM646X, AUDCK1, 0, 29, 1, 0, false)
+
+MUX_CFG(DM646X, AUDCK0, 0, 28, 1, 0, false)
+};
+
void __init dm646x_init(void)
{
davinci_clk_init(dm646x_clks);
- davinci_mux_init();
+ davinci_mux_register(dm646x_pins, ARRAY_SIZE(dm646x_pins));
}
diff --git a/arch/arm/mach-davinci/include/mach/mux.h
b/arch/arm/mach-davinci/include/mach/mux.h
index 41be141..99d1936 100644
--- a/arch/arm/mach-davinci/include/mach/mux.h
+++ b/arch/arm/mach-davinci/include/mach/mux.h
@@ -159,12 +159,8 @@ extern int davinci_mux_register(const struct mux_config
*pins,
extern int davinci_cfg_reg(unsigned long reg_cfg);
#else
/* boot loader does it all (no warnings from CONFIG_DAVINCI_MUX_WARNINGS) */
-static inline void davinci_mux_init(void)
-{
-}
+static inline void davinci_mux_init(void) {}
static inline int davinci_cfg_reg(unsigned long reg_cfg) { return 0; }
#endif
-extern void (*davinci_pinmux_setup)(unsigned int id);
-
#endif /* __INC_MACH_MUX_H */
diff --git a/arch/arm/mach-davinci/mux_cfg.c b/arch/arm/mach-davinci/mux_cfg.c
deleted file mode 100644
index ed69246..0000000
--- a/arch/arm/mach-davinci/mux_cfg.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * DAVINCI pin multiplexing configurations
- *
- * Author: Vladimir Barinov, MontaVista Software, Inc. <[email protected]>
- *
- * Based on linux/arch/arm/mach-omap1/mux.c:
- * Copyright (C) 2003 - 2005 Nokia Corporation
- *
- * Written by Tony Lindgren
- *
- * 2007 (c) MontaVista Software, Inc. This file is licensed under
- * the terms of the GNU General Public License version 2. This program
- * is licensed "as is" without any warranty of any kind, whether express
- * or implied.
- *
- * Copyright (C) 2008 Texas Instruments.
- */
-
-#include <linux/module.h>
-#include <linux/init.h>
-
-#include <mach/hardware.h>
-#include <mach/cpu.h>
-#include <mach/mux.h>
-
-#define MUX_CFG(soc, desc, muxreg, mode_offset, mode_mask, mux_mode, dbg)\
-[soc##_##desc] = { \
- .name = #desc, \
- .debug = dbg, \
- .mux_reg_name = "PINMUX"#muxreg, \
- .mux_reg = PINMUX##muxreg, \
- .mask_offset = mode_offset, \
- .mask = mode_mask, \
- .mode = mux_mode, \
- },
-
-#define INT_CFG(soc, desc, mode_offset, mode_mask, mux_mode, dbg) \
-[soc##_##desc] = { \
- .name = #desc, \
- .debug = dbg, \
- .mux_reg_name = "INTMUX", \
- .mux_reg = INTMUX, \
- .mask_offset = mode_offset, \
- .mask = mode_mask, \
- .mode = mux_mode, \
- },
-
-#define EVT_CFG(soc, desc, mode_offset, mode_mask, mux_mode, dbg) \
-[soc##_##desc] = { \
- .name = #desc, \
- .debug = dbg, \
- .mux_reg_name = "EVTMUX", \
- .mux_reg = EVTMUX, \
- .mask_offset = mode_offset, \
- .mask = mode_mask, \
- .mode = mux_mode, \
- },
-
-/*
- * soc description mux mode mode mux dbg
- * reg offset mask mode
- */
-static const struct mux_config davinci_dm644x_pins[] = {
-MUX_CFG(DM644X, HDIREN, 0, 16, 1, 1, true)
-MUX_CFG(DM644X, ATAEN, 0, 17, 1, 1, true)
-MUX_CFG(DM644X, ATAEN_DISABLE, 0, 17, 1, 0, true)
-
-MUX_CFG(DM644X, HPIEN_DISABLE, 0, 29, 1, 0, true)
-
-MUX_CFG(DM644X, AEAW, 0, 0, 31, 31, true)
-
-MUX_CFG(DM644X, MSTK, 1, 9, 1, 0, false)
-
-MUX_CFG(DM644X, I2C, 1, 7, 1, 1, false)
-
-MUX_CFG(DM644X, MCBSP, 1, 10, 1, 1, false)
-
-MUX_CFG(DM644X, UART1, 1, 1, 1, 1, true)
-MUX_CFG(DM644X, UART2, 1, 2, 1, 1, true)
-
-MUX_CFG(DM644X, PWM0, 1, 4, 1, 1, false)
-
-MUX_CFG(DM644X, PWM1, 1, 5, 1, 1, false)
-
-MUX_CFG(DM644X, PWM2, 1, 6, 1, 1, false)
-
-MUX_CFG(DM644X, VLYNQEN, 0, 15, 1, 1, false)
-MUX_CFG(DM644X, VLSCREN, 0, 14, 1, 1, false)
-MUX_CFG(DM644X, VLYNQWD, 0, 12, 3, 3, false)
-
-MUX_CFG(DM644X, EMACEN, 0, 31, 1, 1, true)
-
-MUX_CFG(DM644X, GPIO3V, 0, 31, 1, 0, true)
-
-MUX_CFG(DM644X, GPIO0, 0, 24, 1, 0, true)
-MUX_CFG(DM644X, GPIO3, 0, 25, 1, 0, false)
-MUX_CFG(DM644X, GPIO43_44, 1, 7, 1, 0, false)
-MUX_CFG(DM644X, GPIO46_47, 0, 22, 1, 0, true)
-
-MUX_CFG(DM644X, RGB666, 0, 22, 1, 1, true)
-
-MUX_CFG(DM644X, LOEEN, 0, 24, 1, 1, true)
-MUX_CFG(DM644X, LFLDEN, 0, 25, 1, 1, false)
-};
-
-/*
- * soc description mux mode mode mux dbg
- * reg offset mask mode
- */
-static const struct mux_config davinci_dm646x_pins[] = {
-MUX_CFG(DM646X, ATAEN, 0, 0, 1, 1, true)
-
-MUX_CFG(DM646X, AUDCK1, 0, 29, 1, 0, false)
-
-MUX_CFG(DM646X, AUDCK0, 0, 28, 1, 0, false)
-};
-
-/*
- * soc description mux mode mode mux dbg
- * reg offset mask mode
- */
-static const struct mux_config davinci_dm355_pins[] = {
-MUX_CFG(DM355, MMCSD0, 4, 2, 1, 0, false)
-
-MUX_CFG(DM355, SD1_CLK, 3, 6, 1, 1, false)
-MUX_CFG(DM355, SD1_CMD, 3, 7, 1, 1, false)
-MUX_CFG(DM355, SD1_DATA3, 3, 8, 3, 1, false)
-MUX_CFG(DM355, SD1_DATA2, 3, 10, 3, 1, false)
-MUX_CFG(DM355, SD1_DATA1, 3, 12, 3, 1, false)
-MUX_CFG(DM355, SD1_DATA0, 3, 14, 3, 1, false)
-
-MUX_CFG(DM355, I2C_SDA, 3, 19, 1, 1, false)
-MUX_CFG(DM355, I2C_SCL, 3, 20, 1, 1, false)
-
-MUX_CFG(DM355, MCBSP0_BDX, 3, 0, 1, 1, false)
-MUX_CFG(DM355, MCBSP0_X, 3, 1, 1, 1, false)
-MUX_CFG(DM355, MCBSP0_BFSX, 3, 2, 1, 1, false)
-MUX_CFG(DM355, MCBSP0_BDR, 3, 3, 1, 1, false)
-MUX_CFG(DM355, MCBSP0_R, 3, 4, 1, 1, false)
-MUX_CFG(DM355, MCBSP0_BFSR, 3, 5, 1, 1, false)
-
-MUX_CFG(DM355, SPI0_SDI, 4, 1, 1, 0, false)
-MUX_CFG(DM355, SPI0_SDENA0, 4, 0, 1, 0, false)
-MUX_CFG(DM355, SPI0_SDENA1, 3, 28, 1, 1, false)
-
-INT_CFG(DM355, INT_EDMA_CC, 2, 1, 1, false)
-INT_CFG(DM355, INT_EDMA_TC0_ERR, 3, 1, 1, false)
-INT_CFG(DM355, INT_EDMA_TC1_ERR, 4, 1, 1, false)
-
-EVT_CFG(DM355, EVT8_ASP1_TX, 0, 1, 0, false)
-EVT_CFG(DM355, EVT9_ASP1_RX, 1, 1, 0, false)
-EVT_CFG(DM355, EVT26_MMC0_RX, 2, 1, 0, false)
-};
-
-void __init davinci_mux_init(void)
-{
- if (cpu_is_davinci_dm644x())
- davinci_mux_register(davinci_dm644x_pins,
- ARRAY_SIZE(davinci_dm644x_pins));
- else if (cpu_is_davinci_dm646x())
- davinci_mux_register(davinci_dm646x_pins,
- ARRAY_SIZE(davinci_dm646x_pins));
- else if (cpu_is_davinci_dm355())
- davinci_mux_register(davinci_dm355_pins,
- ARRAY_SIZE(davinci_dm355_pins));
- else
- printk(KERN_ERR "PSC: DaVinci variant not supported\n");
-}
-
--
1.6.1.2
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source