aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-omap1/clock.c3
-rw-r--r--arch/arm/mach-omap1/clock.h12
-rw-r--r--arch/arm/mach-omap1/devices.c15
-rw-r--r--arch/arm/mach-omap1/mux.c5
-rw-r--r--arch/arm/plat-omap/include/plat/mux.h5
5 files changed, 35 insertions, 5 deletions
diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c
index b4fec9a6e89e..7b146c06ca8a 100644
--- a/arch/arm/mach-omap1/clock.c
+++ b/arch/arm/mach-omap1/clock.c
@@ -125,7 +125,8 @@ static struct omap_clk omap_clks[] = {
125 CLK(NULL, "bclk", &bclk_1510, CK_1510 | CK_310), 125 CLK(NULL, "bclk", &bclk_1510, CK_1510 | CK_310),
126 CLK(NULL, "bclk", &bclk_16xx, CK_16XX), 126 CLK(NULL, "bclk", &bclk_16xx, CK_16XX),
127 CLK("mmci-omap.0", "fck", &mmc1_ck, CK_16XX | CK_1510 | CK_310), 127 CLK("mmci-omap.0", "fck", &mmc1_ck, CK_16XX | CK_1510 | CK_310),
128 CLK("mmci-omap.0", "ick", &armper_ck.clk, CK_16XX | CK_1510 | CK_310), 128 CLK("mmci-omap.0", "fck", &mmc3_ck, CK_7XX),
129 CLK("mmci-omap.0", "ick", &armper_ck.clk, CK_16XX | CK_1510 | CK_310 | CK_7XX),
129 CLK("mmci-omap.1", "fck", &mmc2_ck, CK_16XX), 130 CLK("mmci-omap.1", "fck", &mmc2_ck, CK_16XX),
130 CLK("mmci-omap.1", "ick", &armper_ck.clk, CK_16XX), 131 CLK("mmci-omap.1", "ick", &armper_ck.clk, CK_16XX),
131 /* Virtual clocks */ 132 /* Virtual clocks */
diff --git a/arch/arm/mach-omap1/clock.h b/arch/arm/mach-omap1/clock.h
index 17f874271255..fac921c00bfe 100644
--- a/arch/arm/mach-omap1/clock.h
+++ b/arch/arm/mach-omap1/clock.h
@@ -637,6 +637,18 @@ static struct clk mmc2_ck = {
637 .enable_bit = 20, 637 .enable_bit = 20,
638}; 638};
639 639
640static struct clk mmc3_ck = {
641 .name = "mmc_ck",
642 .id = 2,
643 .ops = &clkops_generic,
644 /* Functional clock is direct from ULPD, interface clock is ARMPER */
645 .parent = &armper_ck.clk,
646 .rate = 48000000,
647 .flags = RATE_FIXED | ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
648 .enable_reg = OMAP1_IO_ADDRESS(SOFT_REQ_REG),
649 .enable_bit = 12,
650};
651
640static struct clk virtual_ck_mpu = { 652static struct clk virtual_ck_mpu = {
641 .name = "mpu", 653 .name = "mpu",
642 .ops = &clkops_null, 654 .ops = &clkops_null,
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c
index 6d2f72dcbb04..23ded2d49600 100644
--- a/arch/arm/mach-omap1/devices.c
+++ b/arch/arm/mach-omap1/devices.c
@@ -108,15 +108,22 @@ static inline void omap1_mmc_mux(struct omap_mmc_platform_data *mmc_controller,
108 int controller_nr) 108 int controller_nr)
109{ 109{
110 if (controller_nr == 0) { 110 if (controller_nr == 0) {
111 omap_cfg_reg(MMC_CMD); 111 if (cpu_is_omap7xx()) {
112 omap_cfg_reg(MMC_CLK); 112 omap_cfg_reg(MMC_7XX_CMD);
113 omap_cfg_reg(MMC_DAT0); 113 omap_cfg_reg(MMC_7XX_CLK);
114 omap_cfg_reg(MMC_7XX_DAT0);
115 } else {
116 omap_cfg_reg(MMC_CMD);
117 omap_cfg_reg(MMC_CLK);
118 omap_cfg_reg(MMC_DAT0);
119 }
120
114 if (cpu_is_omap1710()) { 121 if (cpu_is_omap1710()) {
115 omap_cfg_reg(M15_1710_MMC_CLKI); 122 omap_cfg_reg(M15_1710_MMC_CLKI);
116 omap_cfg_reg(P19_1710_MMC_CMDDIR); 123 omap_cfg_reg(P19_1710_MMC_CMDDIR);
117 omap_cfg_reg(P20_1710_MMC_DATDIR0); 124 omap_cfg_reg(P20_1710_MMC_DATDIR0);
118 } 125 }
119 if (mmc_controller->slots[0].wires == 4) { 126 if (mmc_controller->slots[0].wires == 4 && !cpu_is_omap7xx()) {
120 omap_cfg_reg(MMC_DAT1); 127 omap_cfg_reg(MMC_DAT1);
121 /* NOTE: DAT2 can be on W10 (here) or M15 */ 128 /* NOTE: DAT2 can be on W10 (here) or M15 */
122 if (!mmc_controller->slots[0].nomux) 129 if (!mmc_controller->slots[0].nomux)
diff --git a/arch/arm/mach-omap1/mux.c b/arch/arm/mach-omap1/mux.c
index 1e6145c9ee93..785371e982fc 100644
--- a/arch/arm/mach-omap1/mux.c
+++ b/arch/arm/mach-omap1/mux.c
@@ -51,6 +51,11 @@ MUX_CFG_7XX("E3_7XX_KBC4", 13, 25, 0, 24, 1, 0)
51MUX_CFG_7XX("AA17_7XX_USB_DM", 2, 21, 0, 20, 0, 0) 51MUX_CFG_7XX("AA17_7XX_USB_DM", 2, 21, 0, 20, 0, 0)
52MUX_CFG_7XX("W16_7XX_USB_PU_EN", 2, 25, 0, 24, 0, 0) 52MUX_CFG_7XX("W16_7XX_USB_PU_EN", 2, 25, 0, 24, 0, 0)
53MUX_CFG_7XX("W17_7XX_USB_VBUSI", 2, 29, 0, 28, 0, 0) 53MUX_CFG_7XX("W17_7XX_USB_VBUSI", 2, 29, 0, 28, 0, 0)
54
55/* MMC Pins */
56MUX_CFG_7XX("MMC_7XX_CMD", 2, 9, 0, 8, 1, 0)
57MUX_CFG_7XX("MMC_7XX_CLK", 2, 13, 0, 12, 1, 0)
58MUX_CFG_7XX("MMC_7XX_DAT0", 2, 17, 0, 16, 1, 0)
54}; 59};
55#define OMAP7XX_PINS_SZ ARRAY_SIZE(omap7xx_pins) 60#define OMAP7XX_PINS_SZ ARRAY_SIZE(omap7xx_pins)
56#else 61#else
diff --git a/arch/arm/plat-omap/include/plat/mux.h b/arch/arm/plat-omap/include/plat/mux.h
index f3c1d8a90456..56e357e9ec4e 100644
--- a/arch/arm/plat-omap/include/plat/mux.h
+++ b/arch/arm/plat-omap/include/plat/mux.h
@@ -219,6 +219,11 @@ enum omap7xx_index {
219 AA17_7XX_USB_DM, 219 AA17_7XX_USB_DM,
220 W16_7XX_USB_PU_EN, 220 W16_7XX_USB_PU_EN,
221 W17_7XX_USB_VBUSI, 221 W17_7XX_USB_VBUSI,
222
223 /* MMC */
224 MMC_7XX_CMD,
225 MMC_7XX_CLK,
226 MMC_7XX_DAT0,
222}; 227};
223 228
224enum omap1xxx_index { 229enum omap1xxx_index {