diff options
-rw-r--r-- | arch/arm/mach-omap1/clock.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-omap1/clock.h | 12 | ||||
-rw-r--r-- | arch/arm/mach-omap1/devices.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-omap1/mux.c | 5 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/mux.h | 5 |
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 | ||
640 | static 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 | |||
640 | static struct clk virtual_ck_mpu = { | 652 | static 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) | |||
51 | MUX_CFG_7XX("AA17_7XX_USB_DM", 2, 21, 0, 20, 0, 0) | 51 | MUX_CFG_7XX("AA17_7XX_USB_DM", 2, 21, 0, 20, 0, 0) |
52 | MUX_CFG_7XX("W16_7XX_USB_PU_EN", 2, 25, 0, 24, 0, 0) | 52 | MUX_CFG_7XX("W16_7XX_USB_PU_EN", 2, 25, 0, 24, 0, 0) |
53 | MUX_CFG_7XX("W17_7XX_USB_VBUSI", 2, 29, 0, 28, 0, 0) | 53 | MUX_CFG_7XX("W17_7XX_USB_VBUSI", 2, 29, 0, 28, 0, 0) |
54 | |||
55 | /* MMC Pins */ | ||
56 | MUX_CFG_7XX("MMC_7XX_CMD", 2, 9, 0, 8, 1, 0) | ||
57 | MUX_CFG_7XX("MMC_7XX_CLK", 2, 13, 0, 12, 1, 0) | ||
58 | MUX_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 | ||
224 | enum omap1xxx_index { | 229 | enum omap1xxx_index { |