diff options
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r-- | arch/arm/mach-omap2/Kconfig | 3 | ||||
-rw-r--r-- | arch/arm/mach-omap2/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-omap3evm.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clock33xx_data.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | 50 | ||||
-rw-r--r-- | arch/arm/mach-omap2/cm-regbits-34xx.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap-wakeupgen.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_phy_internal.c | 138 | ||||
-rw-r--r-- | arch/arm/mach-omap2/timer.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-omap2/twl-common.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-omap2/usb-musb.c | 3 |
14 files changed, 87 insertions, 167 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index fcd4e85c4ddc..346fd26f3aa6 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -232,10 +232,11 @@ config MACH_OMAP3_PANDORA | |||
232 | select OMAP_PACKAGE_CBB | 232 | select OMAP_PACKAGE_CBB |
233 | select REGULATOR_FIXED_VOLTAGE if REGULATOR | 233 | select REGULATOR_FIXED_VOLTAGE if REGULATOR |
234 | 234 | ||
235 | config MACH_OMAP3_TOUCHBOOK | 235 | config MACH_TOUCHBOOK |
236 | bool "OMAP3 Touch Book" | 236 | bool "OMAP3 Touch Book" |
237 | depends on ARCH_OMAP3 | 237 | depends on ARCH_OMAP3 |
238 | default y | 238 | default y |
239 | select OMAP_PACKAGE_CBB | ||
239 | 240 | ||
240 | config MACH_OMAP_3430SDP | 241 | config MACH_OMAP_3430SDP |
241 | bool "OMAP 3430 SDP board" | 242 | bool "OMAP 3430 SDP board" |
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index f6a24b3f9c4f..34c2c7f59f0a 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
@@ -255,7 +255,7 @@ obj-$(CONFIG_MACH_OMAP_3630SDP) += board-zoom-display.o | |||
255 | obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o | 255 | obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o |
256 | obj-$(CONFIG_MACH_CM_T3517) += board-cm-t3517.o | 256 | obj-$(CONFIG_MACH_CM_T3517) += board-cm-t3517.o |
257 | obj-$(CONFIG_MACH_IGEP0020) += board-igep0020.o | 257 | obj-$(CONFIG_MACH_IGEP0020) += board-igep0020.o |
258 | obj-$(CONFIG_MACH_OMAP3_TOUCHBOOK) += board-omap3touchbook.o | 258 | obj-$(CONFIG_MACH_TOUCHBOOK) += board-omap3touchbook.o |
259 | obj-$(CONFIG_MACH_OMAP_4430SDP) += board-4430sdp.o | 259 | obj-$(CONFIG_MACH_OMAP_4430SDP) += board-4430sdp.o |
260 | obj-$(CONFIG_MACH_OMAP4_PANDA) += board-omap4panda.o | 260 | obj-$(CONFIG_MACH_OMAP4_PANDA) += board-omap4panda.o |
261 | 261 | ||
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index 0d362e9f9cb9..3d2a988e3d9a 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/spi/ads7846.h> | 32 | #include <linux/spi/ads7846.h> |
33 | #include <linux/i2c/twl.h> | 33 | #include <linux/i2c/twl.h> |
34 | #include <linux/usb/otg.h> | 34 | #include <linux/usb/otg.h> |
35 | #include <linux/usb/nop-usb-xceiv.h> | ||
35 | #include <linux/smsc911x.h> | 36 | #include <linux/smsc911x.h> |
36 | 37 | ||
37 | #include <linux/wl12xx.h> | 38 | #include <linux/wl12xx.h> |
diff --git a/arch/arm/mach-omap2/clock33xx_data.c b/arch/arm/mach-omap2/clock33xx_data.c index 25bbcc7ca4dc..ae27de8899a6 100644 --- a/arch/arm/mach-omap2/clock33xx_data.c +++ b/arch/arm/mach-omap2/clock33xx_data.c | |||
@@ -1036,13 +1036,13 @@ static struct omap_clk am33xx_clks[] = { | |||
1036 | CLK(NULL, "mmu_fck", &mmu_fck, CK_AM33XX), | 1036 | CLK(NULL, "mmu_fck", &mmu_fck, CK_AM33XX), |
1037 | CLK(NULL, "smartreflex0_fck", &smartreflex0_fck, CK_AM33XX), | 1037 | CLK(NULL, "smartreflex0_fck", &smartreflex0_fck, CK_AM33XX), |
1038 | CLK(NULL, "smartreflex1_fck", &smartreflex1_fck, CK_AM33XX), | 1038 | CLK(NULL, "smartreflex1_fck", &smartreflex1_fck, CK_AM33XX), |
1039 | CLK(NULL, "gpt1_fck", &timer1_fck, CK_AM33XX), | 1039 | CLK(NULL, "timer1_fck", &timer1_fck, CK_AM33XX), |
1040 | CLK(NULL, "gpt2_fck", &timer2_fck, CK_AM33XX), | 1040 | CLK(NULL, "timer2_fck", &timer2_fck, CK_AM33XX), |
1041 | CLK(NULL, "gpt3_fck", &timer3_fck, CK_AM33XX), | 1041 | CLK(NULL, "timer3_fck", &timer3_fck, CK_AM33XX), |
1042 | CLK(NULL, "gpt4_fck", &timer4_fck, CK_AM33XX), | 1042 | CLK(NULL, "timer4_fck", &timer4_fck, CK_AM33XX), |
1043 | CLK(NULL, "gpt5_fck", &timer5_fck, CK_AM33XX), | 1043 | CLK(NULL, "timer5_fck", &timer5_fck, CK_AM33XX), |
1044 | CLK(NULL, "gpt6_fck", &timer6_fck, CK_AM33XX), | 1044 | CLK(NULL, "timer6_fck", &timer6_fck, CK_AM33XX), |
1045 | CLK(NULL, "gpt7_fck", &timer7_fck, CK_AM33XX), | 1045 | CLK(NULL, "timer7_fck", &timer7_fck, CK_AM33XX), |
1046 | CLK(NULL, "usbotg_fck", &usbotg_fck, CK_AM33XX), | 1046 | CLK(NULL, "usbotg_fck", &usbotg_fck, CK_AM33XX), |
1047 | CLK(NULL, "ieee5000_fck", &ieee5000_fck, CK_AM33XX), | 1047 | CLK(NULL, "ieee5000_fck", &ieee5000_fck, CK_AM33XX), |
1048 | CLK(NULL, "wdt1_fck", &wdt1_fck, CK_AM33XX), | 1048 | CLK(NULL, "wdt1_fck", &wdt1_fck, CK_AM33XX), |
diff --git a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c index a0d68dbecfa3..f99e65cfb862 100644 --- a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c +++ b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | |||
@@ -241,6 +241,52 @@ static void omap3_clkdm_deny_idle(struct clockdomain *clkdm) | |||
241 | _clkdm_del_autodeps(clkdm); | 241 | _clkdm_del_autodeps(clkdm); |
242 | } | 242 | } |
243 | 243 | ||
244 | static int omap3xxx_clkdm_clk_enable(struct clockdomain *clkdm) | ||
245 | { | ||
246 | bool hwsup = false; | ||
247 | |||
248 | if (!clkdm->clktrctrl_mask) | ||
249 | return 0; | ||
250 | |||
251 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
252 | clkdm->clktrctrl_mask); | ||
253 | |||
254 | if (hwsup) { | ||
255 | /* Disable HW transitions when we are changing deps */ | ||
256 | _disable_hwsup(clkdm); | ||
257 | _clkdm_add_autodeps(clkdm); | ||
258 | _enable_hwsup(clkdm); | ||
259 | } else { | ||
260 | if (clkdm->flags & CLKDM_CAN_FORCE_WAKEUP) | ||
261 | omap3_clkdm_wakeup(clkdm); | ||
262 | } | ||
263 | |||
264 | return 0; | ||
265 | } | ||
266 | |||
267 | static int omap3xxx_clkdm_clk_disable(struct clockdomain *clkdm) | ||
268 | { | ||
269 | bool hwsup = false; | ||
270 | |||
271 | if (!clkdm->clktrctrl_mask) | ||
272 | return 0; | ||
273 | |||
274 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
275 | clkdm->clktrctrl_mask); | ||
276 | |||
277 | if (hwsup) { | ||
278 | /* Disable HW transitions when we are changing deps */ | ||
279 | _disable_hwsup(clkdm); | ||
280 | _clkdm_del_autodeps(clkdm); | ||
281 | _enable_hwsup(clkdm); | ||
282 | } else { | ||
283 | if (clkdm->flags & CLKDM_CAN_FORCE_SLEEP) | ||
284 | omap3_clkdm_sleep(clkdm); | ||
285 | } | ||
286 | |||
287 | return 0; | ||
288 | } | ||
289 | |||
244 | struct clkdm_ops omap2_clkdm_operations = { | 290 | struct clkdm_ops omap2_clkdm_operations = { |
245 | .clkdm_add_wkdep = omap2_clkdm_add_wkdep, | 291 | .clkdm_add_wkdep = omap2_clkdm_add_wkdep, |
246 | .clkdm_del_wkdep = omap2_clkdm_del_wkdep, | 292 | .clkdm_del_wkdep = omap2_clkdm_del_wkdep, |
@@ -267,6 +313,6 @@ struct clkdm_ops omap3_clkdm_operations = { | |||
267 | .clkdm_wakeup = omap3_clkdm_wakeup, | 313 | .clkdm_wakeup = omap3_clkdm_wakeup, |
268 | .clkdm_allow_idle = omap3_clkdm_allow_idle, | 314 | .clkdm_allow_idle = omap3_clkdm_allow_idle, |
269 | .clkdm_deny_idle = omap3_clkdm_deny_idle, | 315 | .clkdm_deny_idle = omap3_clkdm_deny_idle, |
270 | .clkdm_clk_enable = omap2_clkdm_clk_enable, | 316 | .clkdm_clk_enable = omap3xxx_clkdm_clk_enable, |
271 | .clkdm_clk_disable = omap2_clkdm_clk_disable, | 317 | .clkdm_clk_disable = omap3xxx_clkdm_clk_disable, |
272 | }; | 318 | }; |
diff --git a/arch/arm/mach-omap2/cm-regbits-34xx.h b/arch/arm/mach-omap2/cm-regbits-34xx.h index 766338fe4d34..975f6bda0e0b 100644 --- a/arch/arm/mach-omap2/cm-regbits-34xx.h +++ b/arch/arm/mach-omap2/cm-regbits-34xx.h | |||
@@ -67,6 +67,7 @@ | |||
67 | #define OMAP3430_EN_IVA2_DPLL_MASK (0x7 << 0) | 67 | #define OMAP3430_EN_IVA2_DPLL_MASK (0x7 << 0) |
68 | 68 | ||
69 | /* CM_IDLEST_IVA2 */ | 69 | /* CM_IDLEST_IVA2 */ |
70 | #define OMAP3430_ST_IVA2_SHIFT 0 | ||
70 | #define OMAP3430_ST_IVA2_MASK (1 << 0) | 71 | #define OMAP3430_ST_IVA2_MASK (1 << 0) |
71 | 72 | ||
72 | /* CM_IDLEST_PLL_IVA2 */ | 73 | /* CM_IDLEST_PLL_IVA2 */ |
diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c index 05fdebfaa195..330d4c6e746b 100644 --- a/arch/arm/mach-omap2/omap-wakeupgen.c +++ b/arch/arm/mach-omap2/omap-wakeupgen.c | |||
@@ -46,7 +46,7 @@ | |||
46 | static void __iomem *wakeupgen_base; | 46 | static void __iomem *wakeupgen_base; |
47 | static void __iomem *sar_base; | 47 | static void __iomem *sar_base; |
48 | static DEFINE_SPINLOCK(wakeupgen_lock); | 48 | static DEFINE_SPINLOCK(wakeupgen_lock); |
49 | static unsigned int irq_target_cpu[NR_IRQS]; | 49 | static unsigned int irq_target_cpu[MAX_IRQS]; |
50 | static unsigned int irq_banks = MAX_NR_REG_BANKS; | 50 | static unsigned int irq_banks = MAX_NR_REG_BANKS; |
51 | static unsigned int max_irqs = MAX_IRQS; | 51 | static unsigned int max_irqs = MAX_IRQS; |
52 | static unsigned int omap_secure_apis; | 52 | static unsigned int omap_secure_apis; |
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 6ca8e519968d..37afbd173c2c 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
@@ -1889,6 +1889,7 @@ static int _enable(struct omap_hwmod *oh) | |||
1889 | _enable_sysc(oh); | 1889 | _enable_sysc(oh); |
1890 | } | 1890 | } |
1891 | } else { | 1891 | } else { |
1892 | _omap4_disable_module(oh); | ||
1892 | _disable_clocks(oh); | 1893 | _disable_clocks(oh); |
1893 | pr_debug("omap_hwmod: %s: _wait_target_ready: %d\n", | 1894 | pr_debug("omap_hwmod: %s: _wait_target_ready: %d\n", |
1894 | oh->name, r); | 1895 | oh->name, r); |
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index c9e38200216b..ce7e6068768f 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | |||
@@ -100,9 +100,9 @@ static struct omap_hwmod omap3xxx_mpu_hwmod = { | |||
100 | 100 | ||
101 | /* IVA2 (IVA2) */ | 101 | /* IVA2 (IVA2) */ |
102 | static struct omap_hwmod_rst_info omap3xxx_iva_resets[] = { | 102 | static struct omap_hwmod_rst_info omap3xxx_iva_resets[] = { |
103 | { .name = "logic", .rst_shift = 0 }, | 103 | { .name = "logic", .rst_shift = 0, .st_shift = 8 }, |
104 | { .name = "seq0", .rst_shift = 1 }, | 104 | { .name = "seq0", .rst_shift = 1, .st_shift = 9 }, |
105 | { .name = "seq1", .rst_shift = 2 }, | 105 | { .name = "seq1", .rst_shift = 2, .st_shift = 10 }, |
106 | }; | 106 | }; |
107 | 107 | ||
108 | static struct omap_hwmod omap3xxx_iva_hwmod = { | 108 | static struct omap_hwmod omap3xxx_iva_hwmod = { |
@@ -112,6 +112,15 @@ static struct omap_hwmod omap3xxx_iva_hwmod = { | |||
112 | .rst_lines = omap3xxx_iva_resets, | 112 | .rst_lines = omap3xxx_iva_resets, |
113 | .rst_lines_cnt = ARRAY_SIZE(omap3xxx_iva_resets), | 113 | .rst_lines_cnt = ARRAY_SIZE(omap3xxx_iva_resets), |
114 | .main_clk = "iva2_ck", | 114 | .main_clk = "iva2_ck", |
115 | .prcm = { | ||
116 | .omap2 = { | ||
117 | .module_offs = OMAP3430_IVA2_MOD, | ||
118 | .prcm_reg_id = 1, | ||
119 | .module_bit = OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT, | ||
120 | .idlest_reg_id = 1, | ||
121 | .idlest_idle_bit = OMAP3430_ST_IVA2_SHIFT, | ||
122 | } | ||
123 | }, | ||
115 | }; | 124 | }; |
116 | 125 | ||
117 | /* timer class */ | 126 | /* timer class */ |
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 242aee498ceb..afb60917a948 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -4210,7 +4210,7 @@ static struct omap_hwmod_ocp_if omap44xx_dsp__iva = { | |||
4210 | }; | 4210 | }; |
4211 | 4211 | ||
4212 | /* dsp -> sl2if */ | 4212 | /* dsp -> sl2if */ |
4213 | static struct omap_hwmod_ocp_if omap44xx_dsp__sl2if = { | 4213 | static struct omap_hwmod_ocp_if __maybe_unused omap44xx_dsp__sl2if = { |
4214 | .master = &omap44xx_dsp_hwmod, | 4214 | .master = &omap44xx_dsp_hwmod, |
4215 | .slave = &omap44xx_sl2if_hwmod, | 4215 | .slave = &omap44xx_sl2if_hwmod, |
4216 | .clk = "dpll_iva_m5x2_ck", | 4216 | .clk = "dpll_iva_m5x2_ck", |
@@ -4828,7 +4828,7 @@ static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = { | |||
4828 | }; | 4828 | }; |
4829 | 4829 | ||
4830 | /* iva -> sl2if */ | 4830 | /* iva -> sl2if */ |
4831 | static struct omap_hwmod_ocp_if omap44xx_iva__sl2if = { | 4831 | static struct omap_hwmod_ocp_if __maybe_unused omap44xx_iva__sl2if = { |
4832 | .master = &omap44xx_iva_hwmod, | 4832 | .master = &omap44xx_iva_hwmod, |
4833 | .slave = &omap44xx_sl2if_hwmod, | 4833 | .slave = &omap44xx_sl2if_hwmod, |
4834 | .clk = "dpll_iva_m5x2_ck", | 4834 | .clk = "dpll_iva_m5x2_ck", |
@@ -5362,7 +5362,7 @@ static struct omap_hwmod_ocp_if omap44xx_l4_wkup__scrm = { | |||
5362 | }; | 5362 | }; |
5363 | 5363 | ||
5364 | /* l3_main_2 -> sl2if */ | 5364 | /* l3_main_2 -> sl2if */ |
5365 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__sl2if = { | 5365 | static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l3_main_2__sl2if = { |
5366 | .master = &omap44xx_l3_main_2_hwmod, | 5366 | .master = &omap44xx_l3_main_2_hwmod, |
5367 | .slave = &omap44xx_sl2if_hwmod, | 5367 | .slave = &omap44xx_sl2if_hwmod, |
5368 | .clk = "l3_div_ck", | 5368 | .clk = "l3_div_ck", |
@@ -6032,7 +6032,7 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { | |||
6032 | &omap44xx_l4_abe__dmic, | 6032 | &omap44xx_l4_abe__dmic, |
6033 | &omap44xx_l4_abe__dmic_dma, | 6033 | &omap44xx_l4_abe__dmic_dma, |
6034 | &omap44xx_dsp__iva, | 6034 | &omap44xx_dsp__iva, |
6035 | &omap44xx_dsp__sl2if, | 6035 | /* &omap44xx_dsp__sl2if, */ |
6036 | &omap44xx_l4_cfg__dsp, | 6036 | &omap44xx_l4_cfg__dsp, |
6037 | &omap44xx_l3_main_2__dss, | 6037 | &omap44xx_l3_main_2__dss, |
6038 | &omap44xx_l4_per__dss, | 6038 | &omap44xx_l4_per__dss, |
@@ -6068,7 +6068,7 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { | |||
6068 | &omap44xx_l4_per__i2c4, | 6068 | &omap44xx_l4_per__i2c4, |
6069 | &omap44xx_l3_main_2__ipu, | 6069 | &omap44xx_l3_main_2__ipu, |
6070 | &omap44xx_l3_main_2__iss, | 6070 | &omap44xx_l3_main_2__iss, |
6071 | &omap44xx_iva__sl2if, | 6071 | /* &omap44xx_iva__sl2if, */ |
6072 | &omap44xx_l3_main_2__iva, | 6072 | &omap44xx_l3_main_2__iva, |
6073 | &omap44xx_l4_wkup__kbd, | 6073 | &omap44xx_l4_wkup__kbd, |
6074 | &omap44xx_l4_cfg__mailbox, | 6074 | &omap44xx_l4_cfg__mailbox, |
@@ -6099,7 +6099,7 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { | |||
6099 | &omap44xx_l4_cfg__cm_core, | 6099 | &omap44xx_l4_cfg__cm_core, |
6100 | &omap44xx_l4_wkup__prm, | 6100 | &omap44xx_l4_wkup__prm, |
6101 | &omap44xx_l4_wkup__scrm, | 6101 | &omap44xx_l4_wkup__scrm, |
6102 | &omap44xx_l3_main_2__sl2if, | 6102 | /* &omap44xx_l3_main_2__sl2if, */ |
6103 | &omap44xx_l4_abe__slimbus1, | 6103 | &omap44xx_l4_abe__slimbus1, |
6104 | &omap44xx_l4_abe__slimbus1_dma, | 6104 | &omap44xx_l4_abe__slimbus1_dma, |
6105 | &omap44xx_l4_per__slimbus2, | 6105 | &omap44xx_l4_per__slimbus2, |
diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c index d52651a05daa..874aecc0faca 100644 --- a/arch/arm/mach-omap2/omap_phy_internal.c +++ b/arch/arm/mach-omap2/omap_phy_internal.c | |||
@@ -31,144 +31,6 @@ | |||
31 | #include <plat/usb.h> | 31 | #include <plat/usb.h> |
32 | #include "control.h" | 32 | #include "control.h" |
33 | 33 | ||
34 | /* OMAP control module register for UTMI PHY */ | ||
35 | #define CONTROL_DEV_CONF 0x300 | ||
36 | #define PHY_PD 0x1 | ||
37 | |||
38 | #define USBOTGHS_CONTROL 0x33c | ||
39 | #define AVALID BIT(0) | ||
40 | #define BVALID BIT(1) | ||
41 | #define VBUSVALID BIT(2) | ||
42 | #define SESSEND BIT(3) | ||
43 | #define IDDIG BIT(4) | ||
44 | |||
45 | static struct clk *phyclk, *clk48m, *clk32k; | ||
46 | static void __iomem *ctrl_base; | ||
47 | static int usbotghs_control; | ||
48 | |||
49 | int omap4430_phy_init(struct device *dev) | ||
50 | { | ||
51 | ctrl_base = ioremap(OMAP443X_SCM_BASE, SZ_1K); | ||
52 | if (!ctrl_base) { | ||
53 | pr_err("control module ioremap failed\n"); | ||
54 | return -ENOMEM; | ||
55 | } | ||
56 | /* Power down the phy */ | ||
57 | __raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF); | ||
58 | |||
59 | if (!dev) { | ||
60 | iounmap(ctrl_base); | ||
61 | return 0; | ||
62 | } | ||
63 | |||
64 | phyclk = clk_get(dev, "ocp2scp_usb_phy_ick"); | ||
65 | if (IS_ERR(phyclk)) { | ||
66 | dev_err(dev, "cannot clk_get ocp2scp_usb_phy_ick\n"); | ||
67 | iounmap(ctrl_base); | ||
68 | return PTR_ERR(phyclk); | ||
69 | } | ||
70 | |||
71 | clk48m = clk_get(dev, "ocp2scp_usb_phy_phy_48m"); | ||
72 | if (IS_ERR(clk48m)) { | ||
73 | dev_err(dev, "cannot clk_get ocp2scp_usb_phy_phy_48m\n"); | ||
74 | clk_put(phyclk); | ||
75 | iounmap(ctrl_base); | ||
76 | return PTR_ERR(clk48m); | ||
77 | } | ||
78 | |||
79 | clk32k = clk_get(dev, "usb_phy_cm_clk32k"); | ||
80 | if (IS_ERR(clk32k)) { | ||
81 | dev_err(dev, "cannot clk_get usb_phy_cm_clk32k\n"); | ||
82 | clk_put(phyclk); | ||
83 | clk_put(clk48m); | ||
84 | iounmap(ctrl_base); | ||
85 | return PTR_ERR(clk32k); | ||
86 | } | ||
87 | return 0; | ||
88 | } | ||
89 | |||
90 | int omap4430_phy_set_clk(struct device *dev, int on) | ||
91 | { | ||
92 | static int state; | ||
93 | |||
94 | if (on && !state) { | ||
95 | /* Enable the phy clocks */ | ||
96 | clk_enable(phyclk); | ||
97 | clk_enable(clk48m); | ||
98 | clk_enable(clk32k); | ||
99 | state = 1; | ||
100 | } else if (state) { | ||
101 | /* Disable the phy clocks */ | ||
102 | clk_disable(phyclk); | ||
103 | clk_disable(clk48m); | ||
104 | clk_disable(clk32k); | ||
105 | state = 0; | ||
106 | } | ||
107 | return 0; | ||
108 | } | ||
109 | |||
110 | int omap4430_phy_power(struct device *dev, int ID, int on) | ||
111 | { | ||
112 | if (on) { | ||
113 | if (ID) | ||
114 | /* enable VBUS valid, IDDIG groung */ | ||
115 | __raw_writel(AVALID | VBUSVALID, ctrl_base + | ||
116 | USBOTGHS_CONTROL); | ||
117 | else | ||
118 | /* | ||
119 | * Enable VBUS Valid, AValid and IDDIG | ||
120 | * high impedance | ||
121 | */ | ||
122 | __raw_writel(IDDIG | AVALID | VBUSVALID, | ||
123 | ctrl_base + USBOTGHS_CONTROL); | ||
124 | } else { | ||
125 | /* Enable session END and IDIG to high impedance. */ | ||
126 | __raw_writel(SESSEND | IDDIG, ctrl_base + | ||
127 | USBOTGHS_CONTROL); | ||
128 | } | ||
129 | return 0; | ||
130 | } | ||
131 | |||
132 | int omap4430_phy_suspend(struct device *dev, int suspend) | ||
133 | { | ||
134 | if (suspend) { | ||
135 | /* Disable the clocks */ | ||
136 | omap4430_phy_set_clk(dev, 0); | ||
137 | /* Power down the phy */ | ||
138 | __raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF); | ||
139 | |||
140 | /* save the context */ | ||
141 | usbotghs_control = __raw_readl(ctrl_base + USBOTGHS_CONTROL); | ||
142 | } else { | ||
143 | /* Enable the internel phy clcoks */ | ||
144 | omap4430_phy_set_clk(dev, 1); | ||
145 | /* power on the phy */ | ||
146 | if (__raw_readl(ctrl_base + CONTROL_DEV_CONF) & PHY_PD) { | ||
147 | __raw_writel(~PHY_PD, ctrl_base + CONTROL_DEV_CONF); | ||
148 | mdelay(200); | ||
149 | } | ||
150 | |||
151 | /* restore the context */ | ||
152 | __raw_writel(usbotghs_control, ctrl_base + USBOTGHS_CONTROL); | ||
153 | } | ||
154 | |||
155 | return 0; | ||
156 | } | ||
157 | |||
158 | int omap4430_phy_exit(struct device *dev) | ||
159 | { | ||
160 | if (ctrl_base) | ||
161 | iounmap(ctrl_base); | ||
162 | if (phyclk) | ||
163 | clk_put(phyclk); | ||
164 | if (clk48m) | ||
165 | clk_put(clk48m); | ||
166 | if (clk32k) | ||
167 | clk_put(clk32k); | ||
168 | |||
169 | return 0; | ||
170 | } | ||
171 | |||
172 | void am35x_musb_reset(void) | 34 | void am35x_musb_reset(void) |
173 | { | 35 | { |
174 | u32 regval; | 36 | u32 regval; |
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 2ff6d41ec6c6..2ba4f57dda86 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c | |||
@@ -260,6 +260,7 @@ static u32 notrace dmtimer_read_sched_clock(void) | |||
260 | return 0; | 260 | return 0; |
261 | } | 261 | } |
262 | 262 | ||
263 | #ifdef CONFIG_OMAP_32K_TIMER | ||
263 | /* Setup free-running counter for clocksource */ | 264 | /* Setup free-running counter for clocksource */ |
264 | static int __init omap2_sync32k_clocksource_init(void) | 265 | static int __init omap2_sync32k_clocksource_init(void) |
265 | { | 266 | { |
@@ -299,6 +300,12 @@ static int __init omap2_sync32k_clocksource_init(void) | |||
299 | 300 | ||
300 | return ret; | 301 | return ret; |
301 | } | 302 | } |
303 | #else | ||
304 | static inline int omap2_sync32k_clocksource_init(void) | ||
305 | { | ||
306 | return -ENODEV; | ||
307 | } | ||
308 | #endif | ||
302 | 309 | ||
303 | static void __init omap2_gptimer_clocksource_init(int gptimer_id, | 310 | static void __init omap2_gptimer_clocksource_init(int gptimer_id, |
304 | const char *fck_source) | 311 | const char *fck_source) |
diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c index db5ff6642375..329b726012f3 100644 --- a/arch/arm/mach-omap2/twl-common.c +++ b/arch/arm/mach-omap2/twl-common.c | |||
@@ -251,11 +251,6 @@ void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data, | |||
251 | 251 | ||
252 | #if defined(CONFIG_ARCH_OMAP4) | 252 | #if defined(CONFIG_ARCH_OMAP4) |
253 | static struct twl4030_usb_data omap4_usb_pdata = { | 253 | static struct twl4030_usb_data omap4_usb_pdata = { |
254 | .phy_init = omap4430_phy_init, | ||
255 | .phy_exit = omap4430_phy_exit, | ||
256 | .phy_power = omap4430_phy_power, | ||
257 | .phy_set_clock = omap4430_phy_set_clk, | ||
258 | .phy_suspend = omap4430_phy_suspend, | ||
259 | }; | 254 | }; |
260 | 255 | ||
261 | static struct regulator_init_data omap4_vdac_idata = { | 256 | static struct regulator_init_data omap4_vdac_idata = { |
diff --git a/arch/arm/mach-omap2/usb-musb.c b/arch/arm/mach-omap2/usb-musb.c index c4a576856661..e9b4b234dc5f 100644 --- a/arch/arm/mach-omap2/usb-musb.c +++ b/arch/arm/mach-omap2/usb-musb.c | |||
@@ -117,7 +117,4 @@ void __init usb_musb_init(struct omap_musb_board_data *musb_board_data) | |||
117 | dev->dma_mask = &musb_dmamask; | 117 | dev->dma_mask = &musb_dmamask; |
118 | dev->coherent_dma_mask = musb_dmamask; | 118 | dev->coherent_dma_mask = musb_dmamask; |
119 | put_device(dev); | 119 | put_device(dev); |
120 | |||
121 | if (cpu_is_omap44xx()) | ||
122 | omap4430_phy_init(dev); | ||
123 | } | 120 | } |