diff options
Diffstat (limited to 'arch/arm/mach-omap2')
51 files changed, 484 insertions, 359 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index ec55fd830f62..6819c64594ef 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -46,6 +46,7 @@ config ARCH_OMAP4 | |||
46 | select ARM_GIC | 46 | select ARM_GIC |
47 | select LOCAL_TIMERS if SMP | 47 | select LOCAL_TIMERS if SMP |
48 | select PL310_ERRATA_588369 | 48 | select PL310_ERRATA_588369 |
49 | select PL310_ERRATA_727915 | ||
49 | select ARM_ERRATA_720789 | 50 | select ARM_ERRATA_720789 |
50 | select ARCH_HAS_OPP | 51 | select ARCH_HAS_OPP |
51 | select PM_OPP if PM | 52 | select PM_OPP if PM |
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 1c0c2b02d870..64dc4176407b 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
@@ -229,7 +229,7 @@ usbfs-$(CONFIG_ARCH_OMAP_OTG) := usb-fs.o | |||
229 | obj-y += $(usbfs-m) $(usbfs-y) | 229 | obj-y += $(usbfs-m) $(usbfs-y) |
230 | obj-y += usb-musb.o | 230 | obj-y += usb-musb.o |
231 | obj-$(CONFIG_MACH_OMAP2_TUSB6010) += usb-tusb6010.o | 231 | obj-$(CONFIG_MACH_OMAP2_TUSB6010) += usb-tusb6010.o |
232 | obj-y += usb-ehci.o | 232 | obj-y += usb-host.o |
233 | 233 | ||
234 | onenand-$(CONFIG_MTD_ONENAND_OMAP2) := gpmc-onenand.o | 234 | onenand-$(CONFIG_MTD_ONENAND_OMAP2) := gpmc-onenand.o |
235 | obj-y += $(onenand-m) $(onenand-y) | 235 | obj-y += $(onenand-m) $(onenand-y) |
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index d4e41ef86aa5..7542ba59f2b8 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c | |||
@@ -653,11 +653,11 @@ static void enable_board_wakeup_source(void) | |||
653 | OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP); | 653 | OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP); |
654 | } | 654 | } |
655 | 655 | ||
656 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 656 | static const struct usbhs_omap_board_data usbhs_bdata __initconst = { |
657 | 657 | ||
658 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 658 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, |
659 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 659 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, |
660 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 660 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
661 | 661 | ||
662 | .phy_reset = true, | 662 | .phy_reset = true, |
663 | .reset_gpio_port[0] = 57, | 663 | .reset_gpio_port[0] = 57, |
@@ -816,7 +816,7 @@ static void __init omap_3430sdp_init(void) | |||
816 | board_flash_init(sdp_flash_partitions, chip_sel_3430); | 816 | board_flash_init(sdp_flash_partitions, chip_sel_3430); |
817 | sdp3430_display_init(); | 817 | sdp3430_display_init(); |
818 | enable_board_wakeup_source(); | 818 | enable_board_wakeup_source(); |
819 | usb_ehci_init(&ehci_pdata); | 819 | usbhs_init(&usbhs_bdata); |
820 | } | 820 | } |
821 | 821 | ||
822 | MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board") | 822 | MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board") |
diff --git a/arch/arm/mach-omap2/board-3630sdp.c b/arch/arm/mach-omap2/board-3630sdp.c index 62645640f5e4..deed2db32c53 100644 --- a/arch/arm/mach-omap2/board-3630sdp.c +++ b/arch/arm/mach-omap2/board-3630sdp.c | |||
@@ -54,11 +54,11 @@ static void enable_board_wakeup_source(void) | |||
54 | OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP); | 54 | OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP); |
55 | } | 55 | } |
56 | 56 | ||
57 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 57 | static const struct usbhs_omap_board_data usbhs_bdata __initconst = { |
58 | 58 | ||
59 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 59 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, |
60 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 60 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, |
61 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 61 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
62 | 62 | ||
63 | .phy_reset = true, | 63 | .phy_reset = true, |
64 | .reset_gpio_port[0] = 126, | 64 | .reset_gpio_port[0] = 126, |
@@ -211,7 +211,7 @@ static void __init omap_sdp_init(void) | |||
211 | board_smc91x_init(); | 211 | board_smc91x_init(); |
212 | board_flash_init(sdp_flash_partitions, chip_sel_sdp); | 212 | board_flash_init(sdp_flash_partitions, chip_sel_sdp); |
213 | enable_board_wakeup_source(); | 213 | enable_board_wakeup_source(); |
214 | usb_ehci_init(&ehci_pdata); | 214 | usbhs_init(&usbhs_bdata); |
215 | } | 215 | } |
216 | 216 | ||
217 | MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board") | 217 | MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board") |
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index 07d1b20b1148..f603f3b04cb8 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c | |||
@@ -44,7 +44,6 @@ | |||
44 | #define ETH_KS8851_IRQ 34 | 44 | #define ETH_KS8851_IRQ 34 |
45 | #define ETH_KS8851_POWER_ON 48 | 45 | #define ETH_KS8851_POWER_ON 48 |
46 | #define ETH_KS8851_QUART 138 | 46 | #define ETH_KS8851_QUART 138 |
47 | #define OMAP4SDP_MDM_PWR_EN_GPIO 157 | ||
48 | #define OMAP4_SFH7741_SENSOR_OUTPUT_GPIO 184 | 47 | #define OMAP4_SFH7741_SENSOR_OUTPUT_GPIO 184 |
49 | #define OMAP4_SFH7741_ENABLE_GPIO 188 | 48 | #define OMAP4_SFH7741_ENABLE_GPIO 188 |
50 | 49 | ||
@@ -251,16 +250,6 @@ static void __init omap_4430sdp_init_irq(void) | |||
251 | gic_init_irq(); | 250 | gic_init_irq(); |
252 | } | 251 | } |
253 | 252 | ||
254 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | ||
255 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | ||
256 | .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, | ||
257 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | ||
258 | .phy_reset = false, | ||
259 | .reset_gpio_port[0] = -EINVAL, | ||
260 | .reset_gpio_port[1] = -EINVAL, | ||
261 | .reset_gpio_port[2] = -EINVAL, | ||
262 | }; | ||
263 | |||
264 | static struct omap_musb_board_data musb_board_data = { | 253 | static struct omap_musb_board_data musb_board_data = { |
265 | .interface_type = MUSB_INTERFACE_UTMI, | 254 | .interface_type = MUSB_INTERFACE_UTMI, |
266 | .mode = MUSB_OTG, | 255 | .mode = MUSB_OTG, |
@@ -272,6 +261,7 @@ static struct twl4030_usb_data omap4_usbphy_data = { | |||
272 | .phy_exit = omap4430_phy_exit, | 261 | .phy_exit = omap4430_phy_exit, |
273 | .phy_power = omap4430_phy_power, | 262 | .phy_power = omap4430_phy_power, |
274 | .phy_set_clock = omap4430_phy_set_clk, | 263 | .phy_set_clock = omap4430_phy_set_clk, |
264 | .phy_suspend = omap4430_phy_suspend, | ||
275 | }; | 265 | }; |
276 | 266 | ||
277 | static struct omap2_hsmmc_info mmc[] = { | 267 | static struct omap2_hsmmc_info mmc[] = { |
@@ -576,14 +566,6 @@ static void __init omap_4430sdp_init(void) | |||
576 | omap_serial_init(); | 566 | omap_serial_init(); |
577 | omap4_twl6030_hsmmc_init(mmc); | 567 | omap4_twl6030_hsmmc_init(mmc); |
578 | 568 | ||
579 | /* Power on the ULPI PHY */ | ||
580 | status = gpio_request(OMAP4SDP_MDM_PWR_EN_GPIO, "USBB1 PHY VMDM_3V3"); | ||
581 | if (status) | ||
582 | pr_err("%s: Could not get USBB1 PHY GPIO\n", __func__); | ||
583 | else | ||
584 | gpio_direction_output(OMAP4SDP_MDM_PWR_EN_GPIO, 1); | ||
585 | |||
586 | usb_ehci_init(&ehci_pdata); | ||
587 | usb_musb_init(&musb_board_data); | 569 | usb_musb_init(&musb_board_data); |
588 | 570 | ||
589 | status = omap_ethernet_init(); | 571 | status = omap_ethernet_init(); |
diff --git a/arch/arm/mach-omap2/board-am3517crane.c b/arch/arm/mach-omap2/board-am3517crane.c index 71acb5ab281c..e3a194f6b13f 100644 --- a/arch/arm/mach-omap2/board-am3517crane.c +++ b/arch/arm/mach-omap2/board-am3517crane.c | |||
@@ -59,10 +59,10 @@ static void __init am3517_crane_init_irq(void) | |||
59 | omap_init_irq(); | 59 | omap_init_irq(); |
60 | } | 60 | } |
61 | 61 | ||
62 | static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = { | 62 | static struct usbhs_omap_board_data usbhs_bdata __initdata = { |
63 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 63 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, |
64 | .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 64 | .port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED, |
65 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 65 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
66 | 66 | ||
67 | .phy_reset = true, | 67 | .phy_reset = true, |
68 | .reset_gpio_port[0] = GPIO_USB_NRESET, | 68 | .reset_gpio_port[0] = GPIO_USB_NRESET, |
@@ -103,7 +103,7 @@ static void __init am3517_crane_init(void) | |||
103 | return; | 103 | return; |
104 | } | 104 | } |
105 | 105 | ||
106 | usb_ehci_init(&ehci_pdata); | 106 | usbhs_init(&usbhs_bdata); |
107 | } | 107 | } |
108 | 108 | ||
109 | MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD") | 109 | MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD") |
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c index 10d60b7743cf..913538ad17d8 100644 --- a/arch/arm/mach-omap2/board-am3517evm.c +++ b/arch/arm/mach-omap2/board-am3517evm.c | |||
@@ -430,15 +430,15 @@ static __init void am3517_evm_musb_init(void) | |||
430 | usb_musb_init(&musb_board_data); | 430 | usb_musb_init(&musb_board_data); |
431 | } | 431 | } |
432 | 432 | ||
433 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 433 | static const struct usbhs_omap_board_data usbhs_bdata __initconst = { |
434 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 434 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, |
435 | #if defined(CONFIG_PANEL_SHARP_LQ043T1DG01) || \ | 435 | #if defined(CONFIG_PANEL_SHARP_LQ043T1DG01) || \ |
436 | defined(CONFIG_PANEL_SHARP_LQ043T1DG01_MODULE) | 436 | defined(CONFIG_PANEL_SHARP_LQ043T1DG01_MODULE) |
437 | .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 437 | .port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED, |
438 | #else | 438 | #else |
439 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 439 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, |
440 | #endif | 440 | #endif |
441 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 441 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
442 | 442 | ||
443 | .phy_reset = true, | 443 | .phy_reset = true, |
444 | .reset_gpio_port[0] = 57, | 444 | .reset_gpio_port[0] = 57, |
@@ -502,7 +502,7 @@ static void __init am3517_evm_init(void) | |||
502 | 502 | ||
503 | /* Configure GPIO for EHCI port */ | 503 | /* Configure GPIO for EHCI port */ |
504 | omap_mux_init_gpio(57, OMAP_PIN_OUTPUT); | 504 | omap_mux_init_gpio(57, OMAP_PIN_OUTPUT); |
505 | usb_ehci_init(&ehci_pdata); | 505 | usbhs_init(&usbhs_bdata); |
506 | am3517_evm_hecc_init(&am3517_evm_hecc_pdata); | 506 | am3517_evm_hecc_init(&am3517_evm_hecc_pdata); |
507 | /* DSS */ | 507 | /* DSS */ |
508 | am3517_evm_display_init(); | 508 | am3517_evm_display_init(); |
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index dac141610666..9be7289cbb56 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c | |||
@@ -605,10 +605,10 @@ static struct omap2_hsmmc_info mmc[] = { | |||
605 | {} /* Terminator */ | 605 | {} /* Terminator */ |
606 | }; | 606 | }; |
607 | 607 | ||
608 | static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = { | 608 | static struct usbhs_omap_board_data usbhs_bdata __initdata = { |
609 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 609 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, |
610 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 610 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, |
611 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 611 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
612 | 612 | ||
613 | .phy_reset = true, | 613 | .phy_reset = true, |
614 | .reset_gpio_port[0] = OMAP_MAX_GPIO_LINES + 6, | 614 | .reset_gpio_port[0] = OMAP_MAX_GPIO_LINES + 6, |
@@ -810,7 +810,7 @@ static void __init cm_t35_init(void) | |||
810 | cm_t35_init_display(); | 810 | cm_t35_init_display(); |
811 | 811 | ||
812 | usb_musb_init(&musb_board_data); | 812 | usb_musb_init(&musb_board_data); |
813 | usb_ehci_init(&ehci_pdata); | 813 | usbhs_init(&usbhs_bdata); |
814 | } | 814 | } |
815 | 815 | ||
816 | MACHINE_START(CM_T35, "Compulab CM-T35") | 816 | MACHINE_START(CM_T35, "Compulab CM-T35") |
diff --git a/arch/arm/mach-omap2/board-cm-t3517.c b/arch/arm/mach-omap2/board-cm-t3517.c index 5b0c77732dfc..8e18dc76b11e 100644 --- a/arch/arm/mach-omap2/board-cm-t3517.c +++ b/arch/arm/mach-omap2/board-cm-t3517.c | |||
@@ -124,8 +124,9 @@ static inline void cm_t3517_init_hecc(void) {} | |||
124 | #if defined(CONFIG_RTC_DRV_V3020) || defined(CONFIG_RTC_DRV_V3020_MODULE) | 124 | #if defined(CONFIG_RTC_DRV_V3020) || defined(CONFIG_RTC_DRV_V3020_MODULE) |
125 | #define RTC_IO_GPIO (153) | 125 | #define RTC_IO_GPIO (153) |
126 | #define RTC_WR_GPIO (154) | 126 | #define RTC_WR_GPIO (154) |
127 | #define RTC_RD_GPIO (160) | 127 | #define RTC_RD_GPIO (53) |
128 | #define RTC_CS_GPIO (163) | 128 | #define RTC_CS_GPIO (163) |
129 | #define RTC_CS_EN_GPIO (160) | ||
129 | 130 | ||
130 | struct v3020_platform_data cm_t3517_v3020_pdata = { | 131 | struct v3020_platform_data cm_t3517_v3020_pdata = { |
131 | .use_gpio = 1, | 132 | .use_gpio = 1, |
@@ -145,6 +146,16 @@ static struct platform_device cm_t3517_rtc_device = { | |||
145 | 146 | ||
146 | static void __init cm_t3517_init_rtc(void) | 147 | static void __init cm_t3517_init_rtc(void) |
147 | { | 148 | { |
149 | int err; | ||
150 | |||
151 | err = gpio_request(RTC_CS_EN_GPIO, "rtc cs en"); | ||
152 | if (err) { | ||
153 | pr_err("CM-T3517: rtc cs en gpio request failed: %d\n", err); | ||
154 | return; | ||
155 | } | ||
156 | |||
157 | gpio_direction_output(RTC_CS_EN_GPIO, 1); | ||
158 | |||
148 | platform_device_register(&cm_t3517_rtc_device); | 159 | platform_device_register(&cm_t3517_rtc_device); |
149 | } | 160 | } |
150 | #else | 161 | #else |
@@ -156,10 +167,10 @@ static inline void cm_t3517_init_rtc(void) {} | |||
156 | #define HSUSB2_RESET_GPIO (147) | 167 | #define HSUSB2_RESET_GPIO (147) |
157 | #define USB_HUB_RESET_GPIO (152) | 168 | #define USB_HUB_RESET_GPIO (152) |
158 | 169 | ||
159 | static struct ehci_hcd_omap_platform_data cm_t3517_ehci_pdata __initdata = { | 170 | static struct usbhs_omap_board_data cm_t3517_ehci_pdata __initdata = { |
160 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 171 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, |
161 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 172 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, |
162 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 173 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
163 | 174 | ||
164 | .phy_reset = true, | 175 | .phy_reset = true, |
165 | .reset_gpio_port[0] = HSUSB1_RESET_GPIO, | 176 | .reset_gpio_port[0] = HSUSB1_RESET_GPIO, |
@@ -181,7 +192,7 @@ static int cm_t3517_init_usbh(void) | |||
181 | msleep(1); | 192 | msleep(1); |
182 | } | 193 | } |
183 | 194 | ||
184 | usb_ehci_init(&cm_t3517_ehci_pdata); | 195 | usbhs_init(&cm_t3517_ehci_pdata); |
185 | 196 | ||
186 | return 0; | 197 | return 0; |
187 | } | 198 | } |
@@ -214,12 +225,12 @@ static struct mtd_partition cm_t3517_nand_partitions[] = { | |||
214 | }, | 225 | }, |
215 | { | 226 | { |
216 | .name = "linux", | 227 | .name = "linux", |
217 | .offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */ | 228 | .offset = MTDPART_OFS_APPEND, /* Offset = 0x2A0000 */ |
218 | .size = 32 * NAND_BLOCK_SIZE, | 229 | .size = 32 * NAND_BLOCK_SIZE, |
219 | }, | 230 | }, |
220 | { | 231 | { |
221 | .name = "rootfs", | 232 | .name = "rootfs", |
222 | .offset = MTDPART_OFS_APPEND, /* Offset = 0x680000 */ | 233 | .offset = MTDPART_OFS_APPEND, /* Offset = 0x6A0000 */ |
223 | .size = MTDPART_SIZ_FULL, | 234 | .size = MTDPART_SIZ_FULL, |
224 | }, | 235 | }, |
225 | }; | 236 | }; |
@@ -256,11 +267,19 @@ static void __init cm_t3517_init_irq(void) | |||
256 | static struct omap_board_mux board_mux[] __initdata = { | 267 | static struct omap_board_mux board_mux[] __initdata = { |
257 | /* GPIO186 - Green LED */ | 268 | /* GPIO186 - Green LED */ |
258 | OMAP3_MUX(SYS_CLKOUT2, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), | 269 | OMAP3_MUX(SYS_CLKOUT2, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), |
259 | /* RTC GPIOs: IO, WR#, RD#, CS# */ | 270 | |
271 | /* RTC GPIOs: */ | ||
272 | /* IO - GPIO153 */ | ||
260 | OMAP3_MUX(MCBSP4_DR, OMAP_MUX_MODE4 | OMAP_PIN_INPUT), | 273 | OMAP3_MUX(MCBSP4_DR, OMAP_MUX_MODE4 | OMAP_PIN_INPUT), |
274 | /* WR# - GPIO154 */ | ||
261 | OMAP3_MUX(MCBSP4_DX, OMAP_MUX_MODE4 | OMAP_PIN_INPUT), | 275 | OMAP3_MUX(MCBSP4_DX, OMAP_MUX_MODE4 | OMAP_PIN_INPUT), |
262 | OMAP3_MUX(MCBSP_CLKS, OMAP_MUX_MODE4 | OMAP_PIN_INPUT), | 276 | /* RD# - GPIO53 */ |
277 | OMAP3_MUX(GPMC_NCS2, OMAP_MUX_MODE4 | OMAP_PIN_INPUT), | ||
278 | /* CS# - GPIO163 */ | ||
263 | OMAP3_MUX(UART3_CTS_RCTX, OMAP_MUX_MODE4 | OMAP_PIN_INPUT), | 279 | OMAP3_MUX(UART3_CTS_RCTX, OMAP_MUX_MODE4 | OMAP_PIN_INPUT), |
280 | /* CS EN - GPIO160 */ | ||
281 | OMAP3_MUX(MCBSP_CLKS, OMAP_MUX_MODE4 | OMAP_PIN_INPUT), | ||
282 | |||
264 | /* HSUSB1 RESET */ | 283 | /* HSUSB1 RESET */ |
265 | OMAP3_MUX(UART2_TX, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), | 284 | OMAP3_MUX(UART2_TX, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), |
266 | /* HSUSB2 RESET */ | 285 | /* HSUSB2 RESET */ |
diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index 00bb1fc5e017..bc0141b98694 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c | |||
@@ -115,9 +115,6 @@ static struct omap2_hsmmc_info mmc[] = { | |||
115 | 115 | ||
116 | static int devkit8000_panel_enable_lcd(struct omap_dss_device *dssdev) | 116 | static int devkit8000_panel_enable_lcd(struct omap_dss_device *dssdev) |
117 | { | 117 | { |
118 | twl_i2c_write_u8(TWL4030_MODULE_GPIO, 0x80, REG_GPIODATADIR1); | ||
119 | twl_i2c_write_u8(TWL4030_MODULE_LED, 0x0, 0x0); | ||
120 | |||
121 | if (gpio_is_valid(dssdev->reset_gpio)) | 118 | if (gpio_is_valid(dssdev->reset_gpio)) |
122 | gpio_set_value_cansleep(dssdev->reset_gpio, 1); | 119 | gpio_set_value_cansleep(dssdev->reset_gpio, 1); |
123 | return 0; | 120 | return 0; |
@@ -247,6 +244,8 @@ static struct gpio_led gpio_leds[]; | |||
247 | static int devkit8000_twl_gpio_setup(struct device *dev, | 244 | static int devkit8000_twl_gpio_setup(struct device *dev, |
248 | unsigned gpio, unsigned ngpio) | 245 | unsigned gpio, unsigned ngpio) |
249 | { | 246 | { |
247 | int ret; | ||
248 | |||
250 | omap_mux_init_gpio(29, OMAP_PIN_INPUT); | 249 | omap_mux_init_gpio(29, OMAP_PIN_INPUT); |
251 | /* gpio + 0 is "mmc0_cd" (input/IRQ) */ | 250 | /* gpio + 0 is "mmc0_cd" (input/IRQ) */ |
252 | mmc[0].gpio_cd = gpio + 0; | 251 | mmc[0].gpio_cd = gpio + 0; |
@@ -255,17 +254,23 @@ static int devkit8000_twl_gpio_setup(struct device *dev, | |||
255 | /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ | 254 | /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ |
256 | gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; | 255 | gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; |
257 | 256 | ||
258 | /* gpio + 1 is "LCD_PWREN" (out, active high) */ | 257 | /* TWL4030_GPIO_MAX + 0 is "LCD_PWREN" (out, active high) */ |
259 | devkit8000_lcd_device.reset_gpio = gpio + 1; | 258 | devkit8000_lcd_device.reset_gpio = gpio + TWL4030_GPIO_MAX + 0; |
260 | gpio_request(devkit8000_lcd_device.reset_gpio, "LCD_PWREN"); | 259 | ret = gpio_request_one(devkit8000_lcd_device.reset_gpio, |
261 | /* Disable until needed */ | 260 | GPIOF_DIR_OUT | GPIOF_INIT_LOW, "LCD_PWREN"); |
262 | gpio_direction_output(devkit8000_lcd_device.reset_gpio, 0); | 261 | if (ret < 0) { |
262 | devkit8000_lcd_device.reset_gpio = -EINVAL; | ||
263 | printk(KERN_ERR "Failed to request GPIO for LCD_PWRN\n"); | ||
264 | } | ||
263 | 265 | ||
264 | /* gpio + 7 is "DVI_PD" (out, active low) */ | 266 | /* gpio + 7 is "DVI_PD" (out, active low) */ |
265 | devkit8000_dvi_device.reset_gpio = gpio + 7; | 267 | devkit8000_dvi_device.reset_gpio = gpio + 7; |
266 | gpio_request(devkit8000_dvi_device.reset_gpio, "DVI PowerDown"); | 268 | ret = gpio_request_one(devkit8000_dvi_device.reset_gpio, |
267 | /* Disable until needed */ | 269 | GPIOF_DIR_OUT | GPIOF_INIT_LOW, "DVI PowerDown"); |
268 | gpio_direction_output(devkit8000_dvi_device.reset_gpio, 0); | 270 | if (ret < 0) { |
271 | devkit8000_dvi_device.reset_gpio = -EINVAL; | ||
272 | printk(KERN_ERR "Failed to request GPIO for DVI PowerDown\n"); | ||
273 | } | ||
269 | 274 | ||
270 | return 0; | 275 | return 0; |
271 | } | 276 | } |
@@ -275,8 +280,7 @@ static struct twl4030_gpio_platform_data devkit8000_gpio_data = { | |||
275 | .irq_base = TWL4030_GPIO_IRQ_BASE, | 280 | .irq_base = TWL4030_GPIO_IRQ_BASE, |
276 | .irq_end = TWL4030_GPIO_IRQ_END, | 281 | .irq_end = TWL4030_GPIO_IRQ_END, |
277 | .use_leds = true, | 282 | .use_leds = true, |
278 | .pullups = BIT(1), | 283 | .pulldowns = BIT(1) | BIT(2) | BIT(6) | BIT(8) | BIT(13) |
279 | .pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8) | BIT(13) | ||
280 | | BIT(15) | BIT(16) | BIT(17), | 284 | | BIT(15) | BIT(16) | BIT(17), |
281 | .setup = devkit8000_twl_gpio_setup, | 285 | .setup = devkit8000_twl_gpio_setup, |
282 | }; | 286 | }; |
@@ -616,11 +620,11 @@ static struct omap_musb_board_data musb_board_data = { | |||
616 | .power = 100, | 620 | .power = 100, |
617 | }; | 621 | }; |
618 | 622 | ||
619 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 623 | static const struct usbhs_omap_board_data usbhs_bdata __initconst = { |
620 | 624 | ||
621 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 625 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, |
622 | .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 626 | .port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED, |
623 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 627 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
624 | 628 | ||
625 | .phy_reset = true, | 629 | .phy_reset = true, |
626 | .reset_gpio_port[0] = -EINVAL, | 630 | .reset_gpio_port[0] = -EINVAL, |
@@ -799,7 +803,7 @@ static void __init devkit8000_init(void) | |||
799 | devkit8000_ads7846_init(); | 803 | devkit8000_ads7846_init(); |
800 | 804 | ||
801 | usb_musb_init(&musb_board_data); | 805 | usb_musb_init(&musb_board_data); |
802 | usb_ehci_init(&ehci_pdata); | 806 | usbhs_init(&usbhs_bdata); |
803 | devkit8000_flash_init(); | 807 | devkit8000_flash_init(); |
804 | 808 | ||
805 | /* Ensure SDRC pins are mux'd for self-refresh */ | 809 | /* Ensure SDRC pins are mux'd for self-refresh */ |
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index 3be85a1f55f4..f9f534419311 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c | |||
@@ -627,10 +627,10 @@ static struct omap_musb_board_data musb_board_data = { | |||
627 | .power = 100, | 627 | .power = 100, |
628 | }; | 628 | }; |
629 | 629 | ||
630 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 630 | static const struct usbhs_omap_board_data usbhs_bdata __initconst = { |
631 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 631 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, |
632 | .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 632 | .port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED, |
633 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 633 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
634 | 634 | ||
635 | .phy_reset = true, | 635 | .phy_reset = true, |
636 | .reset_gpio_port[0] = IGEP2_GPIO_USBH_NRESET, | 636 | .reset_gpio_port[0] = IGEP2_GPIO_USBH_NRESET, |
@@ -699,7 +699,7 @@ static void __init igep2_init(void) | |||
699 | platform_add_devices(igep2_devices, ARRAY_SIZE(igep2_devices)); | 699 | platform_add_devices(igep2_devices, ARRAY_SIZE(igep2_devices)); |
700 | omap_serial_init(); | 700 | omap_serial_init(); |
701 | usb_musb_init(&musb_board_data); | 701 | usb_musb_init(&musb_board_data); |
702 | usb_ehci_init(&ehci_pdata); | 702 | usbhs_init(&usbhs_bdata); |
703 | 703 | ||
704 | igep2_flash_init(); | 704 | igep2_flash_init(); |
705 | igep2_leds_init(); | 705 | igep2_leds_init(); |
diff --git a/arch/arm/mach-omap2/board-igep0030.c b/arch/arm/mach-omap2/board-igep0030.c index 4dc62a9b9cb2..579fc2d2525f 100644 --- a/arch/arm/mach-omap2/board-igep0030.c +++ b/arch/arm/mach-omap2/board-igep0030.c | |||
@@ -408,10 +408,10 @@ static void __init igep3_wifi_bt_init(void) | |||
408 | void __init igep3_wifi_bt_init(void) {} | 408 | void __init igep3_wifi_bt_init(void) {} |
409 | #endif | 409 | #endif |
410 | 410 | ||
411 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 411 | static const struct usbhs_omap_board_data usbhs_bdata __initconst = { |
412 | .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 412 | .port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED, |
413 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 413 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, |
414 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 414 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
415 | 415 | ||
416 | .phy_reset = true, | 416 | .phy_reset = true, |
417 | .reset_gpio_port[0] = -EINVAL, | 417 | .reset_gpio_port[0] = -EINVAL, |
@@ -435,7 +435,7 @@ static void __init igep3_init(void) | |||
435 | platform_add_devices(igep3_devices, ARRAY_SIZE(igep3_devices)); | 435 | platform_add_devices(igep3_devices, ARRAY_SIZE(igep3_devices)); |
436 | omap_serial_init(); | 436 | omap_serial_init(); |
437 | usb_musb_init(&musb_board_data); | 437 | usb_musb_init(&musb_board_data); |
438 | usb_ehci_init(&ehci_pdata); | 438 | usbhs_init(&usbhs_bdata); |
439 | 439 | ||
440 | igep3_flash_init(); | 440 | igep3_flash_init(); |
441 | igep3_leds_init(); | 441 | igep3_leds_init(); |
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 46d814ab5656..f0963b6e4627 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -586,11 +586,11 @@ static void __init omap3beagle_flash_init(void) | |||
586 | } | 586 | } |
587 | } | 587 | } |
588 | 588 | ||
589 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 589 | static const struct usbhs_omap_board_data usbhs_bdata __initconst = { |
590 | 590 | ||
591 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 591 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, |
592 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 592 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, |
593 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 593 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
594 | 594 | ||
595 | .phy_reset = true, | 595 | .phy_reset = true, |
596 | .reset_gpio_port[0] = -EINVAL, | 596 | .reset_gpio_port[0] = -EINVAL, |
@@ -625,7 +625,7 @@ static void __init omap3_beagle_init(void) | |||
625 | gpio_direction_output(170, true); | 625 | gpio_direction_output(170, true); |
626 | 626 | ||
627 | usb_musb_init(&musb_board_data); | 627 | usb_musb_init(&musb_board_data); |
628 | usb_ehci_init(&ehci_pdata); | 628 | usbhs_init(&usbhs_bdata); |
629 | omap3beagle_flash_init(); | 629 | omap3beagle_flash_init(); |
630 | 630 | ||
631 | /* Ensure SDRC pins are mux'd for self-refresh */ | 631 | /* Ensure SDRC pins are mux'd for self-refresh */ |
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index 323c3809ce39..38a2d91790c0 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c | |||
@@ -638,11 +638,11 @@ static struct platform_device *omap3_evm_devices[] __initdata = { | |||
638 | &omap3_evm_dss_device, | 638 | &omap3_evm_dss_device, |
639 | }; | 639 | }; |
640 | 640 | ||
641 | static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = { | 641 | static struct usbhs_omap_board_data usbhs_bdata __initdata = { |
642 | 642 | ||
643 | .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 643 | .port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED, |
644 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 644 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, |
645 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 645 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
646 | 646 | ||
647 | .phy_reset = true, | 647 | .phy_reset = true, |
648 | /* PHY reset GPIO will be runtime programmed based on EVM version */ | 648 | /* PHY reset GPIO will be runtime programmed based on EVM version */ |
@@ -700,7 +700,7 @@ static void __init omap3_evm_init(void) | |||
700 | 700 | ||
701 | /* setup EHCI phy reset config */ | 701 | /* setup EHCI phy reset config */ |
702 | omap_mux_init_gpio(21, OMAP_PIN_INPUT_PULLUP); | 702 | omap_mux_init_gpio(21, OMAP_PIN_INPUT_PULLUP); |
703 | ehci_pdata.reset_gpio_port[1] = 21; | 703 | usbhs_bdata.reset_gpio_port[1] = 21; |
704 | 704 | ||
705 | /* EVM REV >= E can supply 500mA with EXTVBUS programming */ | 705 | /* EVM REV >= E can supply 500mA with EXTVBUS programming */ |
706 | musb_board_data.power = 500; | 706 | musb_board_data.power = 500; |
@@ -708,10 +708,10 @@ static void __init omap3_evm_init(void) | |||
708 | } else { | 708 | } else { |
709 | /* setup EHCI phy reset on MDC */ | 709 | /* setup EHCI phy reset on MDC */ |
710 | omap_mux_init_gpio(135, OMAP_PIN_OUTPUT); | 710 | omap_mux_init_gpio(135, OMAP_PIN_OUTPUT); |
711 | ehci_pdata.reset_gpio_port[1] = 135; | 711 | usbhs_bdata.reset_gpio_port[1] = 135; |
712 | } | 712 | } |
713 | usb_musb_init(&musb_board_data); | 713 | usb_musb_init(&musb_board_data); |
714 | usb_ehci_init(&ehci_pdata); | 714 | usbhs_init(&usbhs_bdata); |
715 | ads7846_dev_init(); | 715 | ads7846_dev_init(); |
716 | omap3evm_init_smsc911x(); | 716 | omap3evm_init_smsc911x(); |
717 | omap3_evm_display_init(); | 717 | omap3_evm_display_init(); |
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index 0b34beded11f..aa05f2e46a61 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c | |||
@@ -681,11 +681,11 @@ static struct platform_device *omap3pandora_devices[] __initdata = { | |||
681 | &pandora_vwlan_device, | 681 | &pandora_vwlan_device, |
682 | }; | 682 | }; |
683 | 683 | ||
684 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 684 | static const struct usbhs_omap_board_data usbhs_bdata __initconst = { |
685 | 685 | ||
686 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 686 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, |
687 | .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 687 | .port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED, |
688 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 688 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
689 | 689 | ||
690 | .phy_reset = true, | 690 | .phy_reset = true, |
691 | .reset_gpio_port[0] = 16, | 691 | .reset_gpio_port[0] = 16, |
@@ -716,7 +716,7 @@ static void __init omap3pandora_init(void) | |||
716 | spi_register_board_info(omap3pandora_spi_board_info, | 716 | spi_register_board_info(omap3pandora_spi_board_info, |
717 | ARRAY_SIZE(omap3pandora_spi_board_info)); | 717 | ARRAY_SIZE(omap3pandora_spi_board_info)); |
718 | omap3pandora_ads7846_init(); | 718 | omap3pandora_ads7846_init(); |
719 | usb_ehci_init(&ehci_pdata); | 719 | usbhs_init(&usbhs_bdata); |
720 | usb_musb_init(&musb_board_data); | 720 | usb_musb_init(&musb_board_data); |
721 | gpmc_nand_init(&pandora_nand_data); | 721 | gpmc_nand_init(&pandora_nand_data); |
722 | 722 | ||
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c index 2a2dad447e86..f6c87787cd4f 100644 --- a/arch/arm/mach-omap2/board-omap3stalker.c +++ b/arch/arm/mach-omap2/board-omap3stalker.c | |||
@@ -608,10 +608,10 @@ static struct platform_device *omap3_stalker_devices[] __initdata = { | |||
608 | &keys_gpio, | 608 | &keys_gpio, |
609 | }; | 609 | }; |
610 | 610 | ||
611 | static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 611 | static struct usbhs_omap_board_data usbhs_bdata __initconst = { |
612 | .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 612 | .port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED, |
613 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 613 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, |
614 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 614 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
615 | 615 | ||
616 | .phy_reset = true, | 616 | .phy_reset = true, |
617 | .reset_gpio_port[0] = -EINVAL, | 617 | .reset_gpio_port[0] = -EINVAL, |
@@ -649,7 +649,7 @@ static void __init omap3_stalker_init(void) | |||
649 | 649 | ||
650 | omap_serial_init(); | 650 | omap_serial_init(); |
651 | usb_musb_init(&musb_board_data); | 651 | usb_musb_init(&musb_board_data); |
652 | usb_ehci_init(&ehci_pdata); | 652 | usbhs_init(&usbhs_bdata); |
653 | ads7846_dev_init(); | 653 | ads7846_dev_init(); |
654 | 654 | ||
655 | omap_mux_init_gpio(21, OMAP_PIN_OUTPUT); | 655 | omap_mux_init_gpio(21, OMAP_PIN_OUTPUT); |
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c index db1f74fe6c4f..84cfddb19a74 100644 --- a/arch/arm/mach-omap2/board-omap3touchbook.c +++ b/arch/arm/mach-omap2/board-omap3touchbook.c | |||
@@ -468,11 +468,11 @@ static void __init omap3touchbook_flash_init(void) | |||
468 | } | 468 | } |
469 | } | 469 | } |
470 | 470 | ||
471 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 471 | static const struct usbhs_omap_board_data usbhs_bdata __initconst = { |
472 | 472 | ||
473 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 473 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, |
474 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 474 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, |
475 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 475 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
476 | 476 | ||
477 | .phy_reset = true, | 477 | .phy_reset = true, |
478 | .reset_gpio_port[0] = -EINVAL, | 478 | .reset_gpio_port[0] = -EINVAL, |
@@ -527,7 +527,7 @@ static void __init omap3_touchbook_init(void) | |||
527 | ARRAY_SIZE(omap3_ads7846_spi_board_info)); | 527 | ARRAY_SIZE(omap3_ads7846_spi_board_info)); |
528 | omap3_ads7846_init(); | 528 | omap3_ads7846_init(); |
529 | usb_musb_init(&musb_board_data); | 529 | usb_musb_init(&musb_board_data); |
530 | usb_ehci_init(&ehci_pdata); | 530 | usbhs_init(&usbhs_bdata); |
531 | omap3touchbook_flash_init(); | 531 | omap3touchbook_flash_init(); |
532 | 532 | ||
533 | /* Ensure SDRC pins are mux'd for self-refresh */ | 533 | /* Ensure SDRC pins are mux'd for self-refresh */ |
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index e001a048dc0c..ed61c1f5d5e6 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c | |||
@@ -83,10 +83,10 @@ static void __init omap4_panda_init_irq(void) | |||
83 | gic_init_irq(); | 83 | gic_init_irq(); |
84 | } | 84 | } |
85 | 85 | ||
86 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 86 | static const struct usbhs_omap_board_data usbhs_bdata __initconst = { |
87 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 87 | .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, |
88 | .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 88 | .port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED, |
89 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 89 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
90 | .phy_reset = false, | 90 | .phy_reset = false, |
91 | .reset_gpio_port[0] = -EINVAL, | 91 | .reset_gpio_port[0] = -EINVAL, |
92 | .reset_gpio_port[1] = -EINVAL, | 92 | .reset_gpio_port[1] = -EINVAL, |
@@ -128,7 +128,7 @@ static void __init omap4_ehci_init(void) | |||
128 | gpio_set_value(GPIO_HUB_NRESET, 0); | 128 | gpio_set_value(GPIO_HUB_NRESET, 0); |
129 | gpio_set_value(GPIO_HUB_NRESET, 1); | 129 | gpio_set_value(GPIO_HUB_NRESET, 1); |
130 | 130 | ||
131 | usb_ehci_init(&ehci_pdata); | 131 | usbhs_init(&usbhs_bdata); |
132 | 132 | ||
133 | /* enable power to hub */ | 133 | /* enable power to hub */ |
134 | gpio_set_value(GPIO_HUB_POWER, 1); | 134 | gpio_set_value(GPIO_HUB_POWER, 1); |
@@ -153,6 +153,7 @@ static struct twl4030_usb_data omap4_usbphy_data = { | |||
153 | .phy_exit = omap4430_phy_exit, | 153 | .phy_exit = omap4430_phy_exit, |
154 | .phy_power = omap4430_phy_power, | 154 | .phy_power = omap4430_phy_power, |
155 | .phy_set_clock = omap4430_phy_set_clk, | 155 | .phy_set_clock = omap4430_phy_set_clk, |
156 | .phy_suspend = omap4430_phy_suspend, | ||
156 | }; | 157 | }; |
157 | 158 | ||
158 | static struct omap2_hsmmc_info mmc[] = { | 159 | static struct omap2_hsmmc_info mmc[] = { |
@@ -409,8 +410,6 @@ static void __init omap4_panda_init(void) | |||
409 | platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices)); | 410 | platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices)); |
410 | omap_serial_init(); | 411 | omap_serial_init(); |
411 | omap4_twl6030_hsmmc_init(mmc); | 412 | omap4_twl6030_hsmmc_init(mmc); |
412 | /* OMAP4 Panda uses internal transceiver so register nop transceiver */ | ||
413 | usb_nop_xceiv_register(); | ||
414 | omap4_ehci_init(); | 413 | omap4_ehci_init(); |
415 | usb_musb_init(&musb_board_data); | 414 | usb_musb_init(&musb_board_data); |
416 | } | 415 | } |
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index cb26e5d8268d..08770ccec0f3 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c | |||
@@ -423,10 +423,10 @@ static struct platform_device *overo_devices[] __initdata = { | |||
423 | &overo_lcd_device, | 423 | &overo_lcd_device, |
424 | }; | 424 | }; |
425 | 425 | ||
426 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 426 | static const struct usbhs_omap_board_data usbhs_bdata __initconst = { |
427 | .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 427 | .port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED, |
428 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 428 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, |
429 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 429 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
430 | 430 | ||
431 | .phy_reset = true, | 431 | .phy_reset = true, |
432 | .reset_gpio_port[0] = -EINVAL, | 432 | .reset_gpio_port[0] = -EINVAL, |
@@ -454,7 +454,7 @@ static void __init overo_init(void) | |||
454 | omap_serial_init(); | 454 | omap_serial_init(); |
455 | overo_flash_init(); | 455 | overo_flash_init(); |
456 | usb_musb_init(&musb_board_data); | 456 | usb_musb_init(&musb_board_data); |
457 | usb_ehci_init(&ehci_pdata); | 457 | usbhs_init(&usbhs_bdata); |
458 | overo_ads7846_init(); | 458 | overo_ads7846_init(); |
459 | overo_init_smsc911x(); | 459 | overo_init_smsc911x(); |
460 | 460 | ||
diff --git a/arch/arm/mach-omap2/board-rm680.c b/arch/arm/mach-omap2/board-rm680.c index cb77be7ac44f..39a71bb8a308 100644 --- a/arch/arm/mach-omap2/board-rm680.c +++ b/arch/arm/mach-omap2/board-rm680.c | |||
@@ -40,9 +40,6 @@ static struct regulator_consumer_supply rm680_vemmc_consumers[] = { | |||
40 | static struct regulator_init_data rm680_vemmc = { | 40 | static struct regulator_init_data rm680_vemmc = { |
41 | .constraints = { | 41 | .constraints = { |
42 | .name = "rm680_vemmc", | 42 | .name = "rm680_vemmc", |
43 | .min_uV = 2900000, | ||
44 | .max_uV = 2900000, | ||
45 | .apply_uV = 1, | ||
46 | .valid_modes_mask = REGULATOR_MODE_NORMAL | 43 | .valid_modes_mask = REGULATOR_MODE_NORMAL |
47 | | REGULATOR_MODE_STANDBY, | 44 | | REGULATOR_MODE_STANDBY, |
48 | .valid_ops_mask = REGULATOR_CHANGE_STATUS | 45 | .valid_ops_mask = REGULATOR_CHANGE_STATUS |
diff --git a/arch/arm/mach-omap2/board-zoom.c b/arch/arm/mach-omap2/board-zoom.c index e26754c24ee8..1dd195afa396 100644 --- a/arch/arm/mach-omap2/board-zoom.c +++ b/arch/arm/mach-omap2/board-zoom.c | |||
@@ -106,10 +106,10 @@ static struct mtd_partition zoom_nand_partitions[] = { | |||
106 | }, | 106 | }, |
107 | }; | 107 | }; |
108 | 108 | ||
109 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 109 | static const struct usbhs_omap_board_data usbhs_bdata __initconst = { |
110 | .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 110 | .port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED, |
111 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 111 | .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, |
112 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 112 | .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, |
113 | .phy_reset = true, | 113 | .phy_reset = true, |
114 | .reset_gpio_port[0] = -EINVAL, | 114 | .reset_gpio_port[0] = -EINVAL, |
115 | .reset_gpio_port[1] = ZOOM3_EHCI_RESET_GPIO, | 115 | .reset_gpio_port[1] = ZOOM3_EHCI_RESET_GPIO, |
@@ -123,7 +123,7 @@ static void __init omap_zoom_init(void) | |||
123 | } else if (machine_is_omap_zoom3()) { | 123 | } else if (machine_is_omap_zoom3()) { |
124 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBP); | 124 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBP); |
125 | omap_mux_init_gpio(ZOOM3_EHCI_RESET_GPIO, OMAP_PIN_OUTPUT); | 125 | omap_mux_init_gpio(ZOOM3_EHCI_RESET_GPIO, OMAP_PIN_OUTPUT); |
126 | usb_ehci_init(&ehci_pdata); | 126 | usbhs_init(&usbhs_bdata); |
127 | } | 127 | } |
128 | 128 | ||
129 | board_nand_init(zoom_nand_partitions, | 129 | board_nand_init(zoom_nand_partitions, |
diff --git a/arch/arm/mach-omap2/clkt_dpll.c b/arch/arm/mach-omap2/clkt_dpll.c index 337392c3f549..acb7ae5b0a25 100644 --- a/arch/arm/mach-omap2/clkt_dpll.c +++ b/arch/arm/mach-omap2/clkt_dpll.c | |||
@@ -77,7 +77,7 @@ static int _dpll_test_fint(struct clk *clk, u8 n) | |||
77 | dd = clk->dpll_data; | 77 | dd = clk->dpll_data; |
78 | 78 | ||
79 | /* DPLL divider must result in a valid jitter correction val */ | 79 | /* DPLL divider must result in a valid jitter correction val */ |
80 | fint = clk->parent->rate / (n + 1); | 80 | fint = clk->parent->rate / n; |
81 | if (fint < DPLL_FINT_BAND1_MIN) { | 81 | if (fint < DPLL_FINT_BAND1_MIN) { |
82 | 82 | ||
83 | pr_debug("rejecting n=%d due to Fint failure, " | 83 | pr_debug("rejecting n=%d due to Fint failure, " |
diff --git a/arch/arm/mach-omap2/clock3xxx_data.c b/arch/arm/mach-omap2/clock3xxx_data.c index 403a4a1d3f9c..fbb1e30a73dc 100644 --- a/arch/arm/mach-omap2/clock3xxx_data.c +++ b/arch/arm/mach-omap2/clock3xxx_data.c | |||
@@ -3286,7 +3286,7 @@ static struct omap_clk omap3xxx_clks[] = { | |||
3286 | CLK(NULL, "cpefuse_fck", &cpefuse_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3286 | CLK(NULL, "cpefuse_fck", &cpefuse_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3287 | CLK(NULL, "ts_fck", &ts_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3287 | CLK(NULL, "ts_fck", &ts_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3288 | CLK(NULL, "usbtll_fck", &usbtll_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3288 | CLK(NULL, "usbtll_fck", &usbtll_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3289 | CLK("ehci-omap.0", "usbtll_fck", &usbtll_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3289 | CLK("usbhs-omap.0", "usbtll_fck", &usbtll_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3290 | CLK("omap-mcbsp.1", "prcm_fck", &core_96m_fck, CK_3XXX), | 3290 | CLK("omap-mcbsp.1", "prcm_fck", &core_96m_fck, CK_3XXX), |
3291 | CLK("omap-mcbsp.5", "prcm_fck", &core_96m_fck, CK_3XXX), | 3291 | CLK("omap-mcbsp.5", "prcm_fck", &core_96m_fck, CK_3XXX), |
3292 | CLK(NULL, "core_96m_fck", &core_96m_fck, CK_3XXX), | 3292 | CLK(NULL, "core_96m_fck", &core_96m_fck, CK_3XXX), |
@@ -3322,7 +3322,7 @@ static struct omap_clk omap3xxx_clks[] = { | |||
3322 | CLK(NULL, "pka_ick", &pka_ick, CK_34XX | CK_36XX), | 3322 | CLK(NULL, "pka_ick", &pka_ick, CK_34XX | CK_36XX), |
3323 | CLK(NULL, "core_l4_ick", &core_l4_ick, CK_3XXX), | 3323 | CLK(NULL, "core_l4_ick", &core_l4_ick, CK_3XXX), |
3324 | CLK(NULL, "usbtll_ick", &usbtll_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3324 | CLK(NULL, "usbtll_ick", &usbtll_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3325 | CLK("ehci-omap.0", "usbtll_ick", &usbtll_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3325 | CLK("usbhs-omap.0", "usbtll_ick", &usbtll_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3326 | CLK("mmci-omap-hs.2", "ick", &mmchs3_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3326 | CLK("mmci-omap-hs.2", "ick", &mmchs3_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3327 | CLK(NULL, "icr_ick", &icr_ick, CK_34XX | CK_36XX), | 3327 | CLK(NULL, "icr_ick", &icr_ick, CK_34XX | CK_36XX), |
3328 | CLK("omap-aes", "ick", &aes2_ick, CK_34XX | CK_36XX), | 3328 | CLK("omap-aes", "ick", &aes2_ick, CK_34XX | CK_36XX), |
@@ -3368,11 +3368,20 @@ static struct omap_clk omap3xxx_clks[] = { | |||
3368 | CLK(NULL, "cam_ick", &cam_ick, CK_34XX | CK_36XX), | 3368 | CLK(NULL, "cam_ick", &cam_ick, CK_34XX | CK_36XX), |
3369 | CLK(NULL, "csi2_96m_fck", &csi2_96m_fck, CK_34XX | CK_36XX), | 3369 | CLK(NULL, "csi2_96m_fck", &csi2_96m_fck, CK_34XX | CK_36XX), |
3370 | CLK(NULL, "usbhost_120m_fck", &usbhost_120m_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3370 | CLK(NULL, "usbhost_120m_fck", &usbhost_120m_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3371 | CLK("ehci-omap.0", "hs_fck", &usbhost_120m_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3371 | CLK("usbhs-omap.0", "hs_fck", &usbhost_120m_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3372 | CLK(NULL, "usbhost_48m_fck", &usbhost_48m_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3372 | CLK(NULL, "usbhost_48m_fck", &usbhost_48m_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3373 | CLK("ehci-omap.0", "fs_fck", &usbhost_48m_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3373 | CLK("usbhs-omap.0", "fs_fck", &usbhost_48m_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3374 | CLK(NULL, "usbhost_ick", &usbhost_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3374 | CLK(NULL, "usbhost_ick", &usbhost_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3375 | CLK("ehci-omap.0", "usbhost_ick", &usbhost_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), | 3375 | CLK("usbhs-omap.0", "usbhost_ick", &usbhost_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), |
3376 | CLK("usbhs-omap.0", "utmi_p1_gfclk", &dummy_ck, CK_3XXX), | ||
3377 | CLK("usbhs-omap.0", "utmi_p2_gfclk", &dummy_ck, CK_3XXX), | ||
3378 | CLK("usbhs-omap.0", "xclk60mhsp1_ck", &dummy_ck, CK_3XXX), | ||
3379 | CLK("usbhs-omap.0", "xclk60mhsp2_ck", &dummy_ck, CK_3XXX), | ||
3380 | CLK("usbhs-omap.0", "usb_host_hs_utmi_p1_clk", &dummy_ck, CK_3XXX), | ||
3381 | CLK("usbhs-omap.0", "usb_host_hs_utmi_p2_clk", &dummy_ck, CK_3XXX), | ||
3382 | CLK("usbhs-omap.0", "usb_tll_hs_usb_ch0_clk", &dummy_ck, CK_3XXX), | ||
3383 | CLK("usbhs-omap.0", "usb_tll_hs_usb_ch1_clk", &dummy_ck, CK_3XXX), | ||
3384 | CLK("usbhs-omap.0", "init_60m_fclk", &dummy_ck, CK_3XXX), | ||
3376 | CLK(NULL, "usim_fck", &usim_fck, CK_3430ES2PLUS | CK_36XX), | 3385 | CLK(NULL, "usim_fck", &usim_fck, CK_3430ES2PLUS | CK_36XX), |
3377 | CLK(NULL, "gpt1_fck", &gpt1_fck, CK_3XXX), | 3386 | CLK(NULL, "gpt1_fck", &gpt1_fck, CK_3XXX), |
3378 | CLK(NULL, "wkup_32k_fck", &wkup_32k_fck, CK_3XXX), | 3387 | CLK(NULL, "wkup_32k_fck", &wkup_32k_fck, CK_3XXX), |
diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c index e8cb32fd7f13..46fd3f674cac 100644 --- a/arch/arm/mach-omap2/clock44xx_data.c +++ b/arch/arm/mach-omap2/clock44xx_data.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include "cm2_44xx.h" | 34 | #include "cm2_44xx.h" |
35 | #include "cm-regbits-44xx.h" | 35 | #include "cm-regbits-44xx.h" |
36 | #include "prm44xx.h" | 36 | #include "prm44xx.h" |
37 | #include "prm44xx.h" | ||
38 | #include "prm-regbits-44xx.h" | 37 | #include "prm-regbits-44xx.h" |
39 | #include "control.h" | 38 | #include "control.h" |
40 | #include "scrm44xx.h" | 39 | #include "scrm44xx.h" |
@@ -3198,7 +3197,7 @@ static struct omap_clk omap44xx_clks[] = { | |||
3198 | CLK(NULL, "uart3_fck", &uart3_fck, CK_443X), | 3197 | CLK(NULL, "uart3_fck", &uart3_fck, CK_443X), |
3199 | CLK(NULL, "uart4_fck", &uart4_fck, CK_443X), | 3198 | CLK(NULL, "uart4_fck", &uart4_fck, CK_443X), |
3200 | CLK(NULL, "usb_host_fs_fck", &usb_host_fs_fck, CK_443X), | 3199 | CLK(NULL, "usb_host_fs_fck", &usb_host_fs_fck, CK_443X), |
3201 | CLK("ehci-omap.0", "fs_fck", &usb_host_fs_fck, CK_443X), | 3200 | CLK("usbhs-omap.0", "fs_fck", &usb_host_fs_fck, CK_443X), |
3202 | CLK(NULL, "utmi_p1_gfclk", &utmi_p1_gfclk, CK_443X), | 3201 | CLK(NULL, "utmi_p1_gfclk", &utmi_p1_gfclk, CK_443X), |
3203 | CLK(NULL, "usb_host_hs_utmi_p1_clk", &usb_host_hs_utmi_p1_clk, CK_443X), | 3202 | CLK(NULL, "usb_host_hs_utmi_p1_clk", &usb_host_hs_utmi_p1_clk, CK_443X), |
3204 | CLK(NULL, "utmi_p2_gfclk", &utmi_p2_gfclk, CK_443X), | 3203 | CLK(NULL, "utmi_p2_gfclk", &utmi_p2_gfclk, CK_443X), |
@@ -3210,8 +3209,8 @@ static struct omap_clk omap44xx_clks[] = { | |||
3210 | CLK(NULL, "usb_host_hs_hsic480m_p2_clk", &usb_host_hs_hsic480m_p2_clk, CK_443X), | 3209 | CLK(NULL, "usb_host_hs_hsic480m_p2_clk", &usb_host_hs_hsic480m_p2_clk, CK_443X), |
3211 | CLK(NULL, "usb_host_hs_func48mclk", &usb_host_hs_func48mclk, CK_443X), | 3210 | CLK(NULL, "usb_host_hs_func48mclk", &usb_host_hs_func48mclk, CK_443X), |
3212 | CLK(NULL, "usb_host_hs_fck", &usb_host_hs_fck, CK_443X), | 3211 | CLK(NULL, "usb_host_hs_fck", &usb_host_hs_fck, CK_443X), |
3213 | CLK("ehci-omap.0", "hs_fck", &usb_host_hs_fck, CK_443X), | 3212 | CLK("usbhs-omap.0", "hs_fck", &usb_host_hs_fck, CK_443X), |
3214 | CLK("ehci-omap.0", "usbhost_ick", &dummy_ck, CK_443X), | 3213 | CLK("usbhs-omap.0", "usbhost_ick", &dummy_ck, CK_443X), |
3215 | CLK(NULL, "otg_60m_gfclk", &otg_60m_gfclk, CK_443X), | 3214 | CLK(NULL, "otg_60m_gfclk", &otg_60m_gfclk, CK_443X), |
3216 | CLK(NULL, "usb_otg_hs_xclk", &usb_otg_hs_xclk, CK_443X), | 3215 | CLK(NULL, "usb_otg_hs_xclk", &usb_otg_hs_xclk, CK_443X), |
3217 | CLK("musb-omap2430", "ick", &usb_otg_hs_ick, CK_443X), | 3216 | CLK("musb-omap2430", "ick", &usb_otg_hs_ick, CK_443X), |
@@ -3220,8 +3219,8 @@ static struct omap_clk omap44xx_clks[] = { | |||
3220 | CLK(NULL, "usb_tll_hs_usb_ch0_clk", &usb_tll_hs_usb_ch0_clk, CK_443X), | 3219 | CLK(NULL, "usb_tll_hs_usb_ch0_clk", &usb_tll_hs_usb_ch0_clk, CK_443X), |
3221 | CLK(NULL, "usb_tll_hs_usb_ch1_clk", &usb_tll_hs_usb_ch1_clk, CK_443X), | 3220 | CLK(NULL, "usb_tll_hs_usb_ch1_clk", &usb_tll_hs_usb_ch1_clk, CK_443X), |
3222 | CLK(NULL, "usb_tll_hs_ick", &usb_tll_hs_ick, CK_443X), | 3221 | CLK(NULL, "usb_tll_hs_ick", &usb_tll_hs_ick, CK_443X), |
3223 | CLK("ehci-omap.0", "usbtll_ick", &usb_tll_hs_ick, CK_443X), | 3222 | CLK("usbhs-omap.0", "usbtll_ick", &usb_tll_hs_ick, CK_443X), |
3224 | CLK("ehci-omap.0", "usbtll_fck", &dummy_ck, CK_443X), | 3223 | CLK("usbhs-omap.0", "usbtll_fck", &dummy_ck, CK_443X), |
3225 | CLK(NULL, "usim_ck", &usim_ck, CK_443X), | 3224 | CLK(NULL, "usim_ck", &usim_ck, CK_443X), |
3226 | CLK(NULL, "usim_fclk", &usim_fclk, CK_443X), | 3225 | CLK(NULL, "usim_fclk", &usim_fclk, CK_443X), |
3227 | CLK(NULL, "usim_fck", &usim_fck, CK_443X), | 3226 | CLK(NULL, "usim_fck", &usim_fck, CK_443X), |
diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c index e20b98636ab4..58e42f76603f 100644 --- a/arch/arm/mach-omap2/clockdomain.c +++ b/arch/arm/mach-omap2/clockdomain.c | |||
@@ -423,6 +423,12 @@ int clkdm_add_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2) | |||
423 | { | 423 | { |
424 | struct clkdm_dep *cd; | 424 | struct clkdm_dep *cd; |
425 | 425 | ||
426 | if (!cpu_is_omap24xx() && !cpu_is_omap34xx()) { | ||
427 | pr_err("clockdomain: %s/%s: %s: not yet implemented\n", | ||
428 | clkdm1->name, clkdm2->name, __func__); | ||
429 | return -EINVAL; | ||
430 | } | ||
431 | |||
426 | if (!clkdm1 || !clkdm2) | 432 | if (!clkdm1 || !clkdm2) |
427 | return -EINVAL; | 433 | return -EINVAL; |
428 | 434 | ||
@@ -458,6 +464,12 @@ int clkdm_del_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2) | |||
458 | { | 464 | { |
459 | struct clkdm_dep *cd; | 465 | struct clkdm_dep *cd; |
460 | 466 | ||
467 | if (!cpu_is_omap24xx() && !cpu_is_omap34xx()) { | ||
468 | pr_err("clockdomain: %s/%s: %s: not yet implemented\n", | ||
469 | clkdm1->name, clkdm2->name, __func__); | ||
470 | return -EINVAL; | ||
471 | } | ||
472 | |||
461 | if (!clkdm1 || !clkdm2) | 473 | if (!clkdm1 || !clkdm2) |
462 | return -EINVAL; | 474 | return -EINVAL; |
463 | 475 | ||
@@ -500,6 +512,12 @@ int clkdm_read_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2) | |||
500 | if (!clkdm1 || !clkdm2) | 512 | if (!clkdm1 || !clkdm2) |
501 | return -EINVAL; | 513 | return -EINVAL; |
502 | 514 | ||
515 | if (!cpu_is_omap24xx() && !cpu_is_omap34xx()) { | ||
516 | pr_err("clockdomain: %s/%s: %s: not yet implemented\n", | ||
517 | clkdm1->name, clkdm2->name, __func__); | ||
518 | return -EINVAL; | ||
519 | } | ||
520 | |||
503 | cd = _clkdm_deps_lookup(clkdm2, clkdm1->wkdep_srcs); | 521 | cd = _clkdm_deps_lookup(clkdm2, clkdm1->wkdep_srcs); |
504 | if (IS_ERR(cd)) { | 522 | if (IS_ERR(cd)) { |
505 | pr_debug("clockdomain: hardware cannot set/clear wake up of " | 523 | pr_debug("clockdomain: hardware cannot set/clear wake up of " |
@@ -527,6 +545,12 @@ int clkdm_clear_all_wkdeps(struct clockdomain *clkdm) | |||
527 | struct clkdm_dep *cd; | 545 | struct clkdm_dep *cd; |
528 | u32 mask = 0; | 546 | u32 mask = 0; |
529 | 547 | ||
548 | if (!cpu_is_omap24xx() && !cpu_is_omap34xx()) { | ||
549 | pr_err("clockdomain: %s: %s: not yet implemented\n", | ||
550 | clkdm->name, __func__); | ||
551 | return -EINVAL; | ||
552 | } | ||
553 | |||
530 | if (!clkdm) | 554 | if (!clkdm) |
531 | return -EINVAL; | 555 | return -EINVAL; |
532 | 556 | ||
@@ -830,8 +854,7 @@ void omap2_clkdm_allow_idle(struct clockdomain *clkdm) | |||
830 | * dependency code and data for OMAP4. | 854 | * dependency code and data for OMAP4. |
831 | */ | 855 | */ |
832 | if (cpu_is_omap44xx()) { | 856 | if (cpu_is_omap44xx()) { |
833 | WARN_ONCE(1, "clockdomain: OMAP4 wakeup/sleep dependency " | 857 | pr_err("clockdomain: %s: OMAP4 wakeup/sleep dependency support: not yet implemented\n", clkdm->name); |
834 | "support is not yet implemented\n"); | ||
835 | } else { | 858 | } else { |
836 | if (atomic_read(&clkdm->usecount) > 0) | 859 | if (atomic_read(&clkdm->usecount) > 0) |
837 | _clkdm_add_autodeps(clkdm); | 860 | _clkdm_add_autodeps(clkdm); |
@@ -872,8 +895,7 @@ void omap2_clkdm_deny_idle(struct clockdomain *clkdm) | |||
872 | * dependency code and data for OMAP4. | 895 | * dependency code and data for OMAP4. |
873 | */ | 896 | */ |
874 | if (cpu_is_omap44xx()) { | 897 | if (cpu_is_omap44xx()) { |
875 | WARN_ONCE(1, "clockdomain: OMAP4 wakeup/sleep dependency " | 898 | pr_err("clockdomain: %s: OMAP4 wakeup/sleep dependency support: not yet implemented\n", clkdm->name); |
876 | "support is not yet implemented\n"); | ||
877 | } else { | 899 | } else { |
878 | if (atomic_read(&clkdm->usecount) > 0) | 900 | if (atomic_read(&clkdm->usecount) > 0) |
879 | _clkdm_del_autodeps(clkdm); | 901 | _clkdm_del_autodeps(clkdm); |
diff --git a/arch/arm/mach-omap2/clockdomains44xx_data.c b/arch/arm/mach-omap2/clockdomains44xx_data.c index 51920fc7fc52..10622c914abc 100644 --- a/arch/arm/mach-omap2/clockdomains44xx_data.c +++ b/arch/arm/mach-omap2/clockdomains44xx_data.c | |||
@@ -30,8 +30,6 @@ | |||
30 | #include "cm1_44xx.h" | 30 | #include "cm1_44xx.h" |
31 | #include "cm2_44xx.h" | 31 | #include "cm2_44xx.h" |
32 | 32 | ||
33 | #include "cm1_44xx.h" | ||
34 | #include "cm2_44xx.h" | ||
35 | #include "cm-regbits-44xx.h" | 33 | #include "cm-regbits-44xx.h" |
36 | #include "prm44xx.h" | 34 | #include "prm44xx.h" |
37 | #include "prcm44xx.h" | 35 | #include "prcm44xx.h" |
diff --git a/arch/arm/mach-omap2/dma.c b/arch/arm/mach-omap2/dma.c index d2f15f5cfd36..34922b2d2e3f 100644 --- a/arch/arm/mach-omap2/dma.c +++ b/arch/arm/mach-omap2/dma.c | |||
@@ -264,7 +264,7 @@ static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused) | |||
264 | if (IS_ERR(od)) { | 264 | if (IS_ERR(od)) { |
265 | pr_err("%s: Cant build omap_device for %s:%s.\n", | 265 | pr_err("%s: Cant build omap_device for %s:%s.\n", |
266 | __func__, name, oh->name); | 266 | __func__, name, oh->name); |
267 | return IS_ERR(od); | 267 | return PTR_ERR(od); |
268 | } | 268 | } |
269 | 269 | ||
270 | mem = platform_get_resource(&od->pdev, IORESOURCE_MEM, 0); | 270 | mem = platform_get_resource(&od->pdev, IORESOURCE_MEM, 0); |
diff --git a/arch/arm/mach-omap2/include/mach/debug-macro.S b/arch/arm/mach-omap2/include/mach/debug-macro.S index 6a4d4136002e..6049f465ec84 100644 --- a/arch/arm/mach-omap2/include/mach/debug-macro.S +++ b/arch/arm/mach-omap2/include/mach/debug-macro.S | |||
@@ -19,6 +19,9 @@ | |||
19 | 19 | ||
20 | #define UART_OFFSET(addr) ((addr) & 0x00ffffff) | 20 | #define UART_OFFSET(addr) ((addr) & 0x00ffffff) |
21 | 21 | ||
22 | #define omap_uart_v2p(x) ((x) - PAGE_OFFSET + PLAT_PHYS_OFFSET) | ||
23 | #define omap_uart_p2v(x) ((x) - PLAT_PHYS_OFFSET + PAGE_OFFSET) | ||
24 | |||
22 | .pushsection .data | 25 | .pushsection .data |
23 | omap_uart_phys: .word 0 | 26 | omap_uart_phys: .word 0 |
24 | omap_uart_virt: .word 0 | 27 | omap_uart_virt: .word 0 |
@@ -36,7 +39,7 @@ omap_uart_lsr: .word 0 | |||
36 | /* Use omap_uart_phys/virt if already configured */ | 39 | /* Use omap_uart_phys/virt if already configured */ |
37 | 10: mrc p15, 0, \rp, c1, c0 | 40 | 10: mrc p15, 0, \rp, c1, c0 |
38 | tst \rp, #1 @ MMU enabled? | 41 | tst \rp, #1 @ MMU enabled? |
39 | ldreq \rp, =__virt_to_phys(omap_uart_phys) @ MMU not enabled | 42 | ldreq \rp, =omap_uart_v2p(omap_uart_phys) @ MMU disabled |
40 | ldrne \rp, =omap_uart_phys @ MMU enabled | 43 | ldrne \rp, =omap_uart_phys @ MMU enabled |
41 | add \rv, \rp, #4 @ omap_uart_virt | 44 | add \rv, \rp, #4 @ omap_uart_virt |
42 | ldr \rp, [\rp, #0] | 45 | ldr \rp, [\rp, #0] |
@@ -49,7 +52,7 @@ omap_uart_lsr: .word 0 | |||
49 | mrc p15, 0, \rp, c1, c0 | 52 | mrc p15, 0, \rp, c1, c0 |
50 | tst \rp, #1 @ MMU enabled? | 53 | tst \rp, #1 @ MMU enabled? |
51 | ldreq \rp, =OMAP_UART_INFO @ MMU not enabled | 54 | ldreq \rp, =OMAP_UART_INFO @ MMU not enabled |
52 | ldrne \rp, =__phys_to_virt(OMAP_UART_INFO) @ MMU enabled | 55 | ldrne \rp, =omap_uart_p2v(OMAP_UART_INFO) @ MMU enabled |
53 | ldr \rp, [\rp, #0] | 56 | ldr \rp, [\rp, #0] |
54 | 57 | ||
55 | /* Select the UART to use based on the UART1 scratchpad value */ | 58 | /* Select the UART to use based on the UART1 scratchpad value */ |
@@ -94,7 +97,7 @@ omap_uart_lsr: .word 0 | |||
94 | 95: ldr \rp, =ZOOM_UART_BASE | 97 | 95: ldr \rp, =ZOOM_UART_BASE |
95 | mrc p15, 0, \rv, c1, c0 | 98 | mrc p15, 0, \rv, c1, c0 |
96 | tst \rv, #1 @ MMU enabled? | 99 | tst \rv, #1 @ MMU enabled? |
97 | ldreq \rv, =__virt_to_phys(omap_uart_phys) @ MMU not enabled | 100 | ldreq \rv, =omap_uart_v2p(omap_uart_phys) @ MMU disabled |
98 | ldrne \rv, =omap_uart_phys @ MMU enabled | 101 | ldrne \rv, =omap_uart_phys @ MMU enabled |
99 | str \rp, [\rv, #0] | 102 | str \rp, [\rv, #0] |
100 | ldr \rp, =ZOOM_UART_VIRT | 103 | ldr \rp, =ZOOM_UART_VIRT |
@@ -109,7 +112,7 @@ omap_uart_lsr: .word 0 | |||
109 | 98: add \rp, \rp, #0x48000000 @ phys base | 112 | 98: add \rp, \rp, #0x48000000 @ phys base |
110 | mrc p15, 0, \rv, c1, c0 | 113 | mrc p15, 0, \rv, c1, c0 |
111 | tst \rv, #1 @ MMU enabled? | 114 | tst \rv, #1 @ MMU enabled? |
112 | ldreq \rv, =__virt_to_phys(omap_uart_phys) @ MMU not enabled | 115 | ldreq \rv, =omap_uart_v2p(omap_uart_phys) @ MMU disabled |
113 | ldrne \rv, =omap_uart_phys @ MMU enabled | 116 | ldrne \rv, =omap_uart_phys @ MMU enabled |
114 | str \rp, [\rv, #0] | 117 | str \rp, [\rv, #0] |
115 | sub \rp, \rp, #0x48000000 @ phys base | 118 | sub \rp, \rp, #0x48000000 @ phys base |
@@ -131,7 +134,7 @@ omap_uart_lsr: .word 0 | |||
131 | .macro busyuart,rd,rx | 134 | .macro busyuart,rd,rx |
132 | 1001: mrc p15, 0, \rd, c1, c0 | 135 | 1001: mrc p15, 0, \rd, c1, c0 |
133 | tst \rd, #1 @ MMU enabled? | 136 | tst \rd, #1 @ MMU enabled? |
134 | ldreq \rd, =__virt_to_phys(omap_uart_lsr) @ MMU not enabled | 137 | ldreq \rd, =omap_uart_v2p(omap_uart_lsr) @ MMU disabled |
135 | ldrne \rd, =omap_uart_lsr @ MMU enabled | 138 | ldrne \rd, =omap_uart_lsr @ MMU enabled |
136 | ldr \rd, [\rd, #0] | 139 | ldr \rd, [\rd, #0] |
137 | ldrb \rd, [\rx, \rd] | 140 | ldrb \rd, [\rx, \rd] |
diff --git a/arch/arm/mach-omap2/include/mach/entry-macro.S b/arch/arm/mach-omap2/include/mach/entry-macro.S index befa321c4c13..81985a665cb3 100644 --- a/arch/arm/mach-omap2/include/mach/entry-macro.S +++ b/arch/arm/mach-omap2/include/mach/entry-macro.S | |||
@@ -38,20 +38,6 @@ | |||
38 | */ | 38 | */ |
39 | 39 | ||
40 | #ifdef MULTI_OMAP2 | 40 | #ifdef MULTI_OMAP2 |
41 | |||
42 | /* | ||
43 | * We use __glue to avoid errors with multiple definitions of | ||
44 | * .globl omap_irq_base as it's included from entry-armv.S but not | ||
45 | * from entry-common.S. | ||
46 | */ | ||
47 | #ifdef __glue | ||
48 | .pushsection .data | ||
49 | .globl omap_irq_base | ||
50 | omap_irq_base: | ||
51 | .word 0 | ||
52 | .popsection | ||
53 | #endif | ||
54 | |||
55 | /* | 41 | /* |
56 | * Configure the interrupt base on the first interrupt. | 42 | * Configure the interrupt base on the first interrupt. |
57 | * See also omap_irq_base_init for setting omap_irq_base. | 43 | * See also omap_irq_base_init for setting omap_irq_base. |
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index e66687b0b9de..c2032041d26f 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -314,14 +314,13 @@ static int _set_hwmod_postsetup_state(struct omap_hwmod *oh, void *data) | |||
314 | return omap_hwmod_set_postsetup_state(oh, *(u8 *)data); | 314 | return omap_hwmod_set_postsetup_state(oh, *(u8 *)data); |
315 | } | 315 | } |
316 | 316 | ||
317 | void __iomem *omap_irq_base; | ||
318 | |||
317 | /* | 319 | /* |
318 | * Initialize asm_irq_base for entry-macro.S | 320 | * Initialize asm_irq_base for entry-macro.S |
319 | */ | 321 | */ |
320 | static inline void omap_irq_base_init(void) | 322 | static inline void omap_irq_base_init(void) |
321 | { | 323 | { |
322 | extern void __iomem *omap_irq_base; | ||
323 | |||
324 | #ifdef MULTI_OMAP2 | ||
325 | if (cpu_is_omap24xx()) | 324 | if (cpu_is_omap24xx()) |
326 | omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP24XX_IC_BASE); | 325 | omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP24XX_IC_BASE); |
327 | else if (cpu_is_omap34xx()) | 326 | else if (cpu_is_omap34xx()) |
@@ -330,7 +329,6 @@ static inline void omap_irq_base_init(void) | |||
330 | omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP44XX_GIC_CPU_BASE); | 329 | omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP44XX_GIC_CPU_BASE); |
331 | else | 330 | else |
332 | pr_err("Could not initialize omap_irq_base\n"); | 331 | pr_err("Could not initialize omap_irq_base\n"); |
333 | #endif | ||
334 | } | 332 | } |
335 | 333 | ||
336 | void __init omap2_init_common_infrastructure(void) | 334 | void __init omap2_init_common_infrastructure(void) |
diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c index 394413dc7deb..24b88504df0f 100644 --- a/arch/arm/mach-omap2/mailbox.c +++ b/arch/arm/mach-omap2/mailbox.c | |||
@@ -193,10 +193,12 @@ static void omap2_mbox_disable_irq(struct omap_mbox *mbox, | |||
193 | omap_mbox_type_t irq) | 193 | omap_mbox_type_t irq) |
194 | { | 194 | { |
195 | struct omap_mbox2_priv *p = mbox->priv; | 195 | struct omap_mbox2_priv *p = mbox->priv; |
196 | u32 l, bit = (irq == IRQ_TX) ? p->notfull_bit : p->newmsg_bit; | 196 | u32 bit = (irq == IRQ_TX) ? p->notfull_bit : p->newmsg_bit; |
197 | l = mbox_read_reg(p->irqdisable); | 197 | |
198 | l &= ~bit; | 198 | if (!cpu_is_omap44xx()) |
199 | mbox_write_reg(l, p->irqdisable); | 199 | bit = mbox_read_reg(p->irqdisable) & ~bit; |
200 | |||
201 | mbox_write_reg(bit, p->irqdisable); | ||
200 | } | 202 | } |
201 | 203 | ||
202 | static void omap2_mbox_ack_irq(struct omap_mbox *mbox, | 204 | static void omap2_mbox_ack_irq(struct omap_mbox *mbox, |
@@ -334,7 +336,7 @@ static struct omap_mbox mbox_iva_info = { | |||
334 | .priv = &omap2_mbox_iva_priv, | 336 | .priv = &omap2_mbox_iva_priv, |
335 | }; | 337 | }; |
336 | 338 | ||
337 | struct omap_mbox *omap2_mboxes[] = { &mbox_iva_info, &mbox_dsp_info, NULL }; | 339 | struct omap_mbox *omap2_mboxes[] = { &mbox_dsp_info, &mbox_iva_info, NULL }; |
338 | #endif | 340 | #endif |
339 | 341 | ||
340 | #if defined(CONFIG_ARCH_OMAP4) | 342 | #if defined(CONFIG_ARCH_OMAP4) |
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index df8d2f2872c6..6c84659cf846 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -160,7 +160,7 @@ static int __init _omap_mux_get_by_name(struct omap_mux_partition *partition, | |||
160 | struct omap_mux *mux = NULL; | 160 | struct omap_mux *mux = NULL; |
161 | struct omap_mux_entry *e; | 161 | struct omap_mux_entry *e; |
162 | const char *mode_name; | 162 | const char *mode_name; |
163 | int found = 0, found_mode, mode0_len = 0; | 163 | int found = 0, found_mode = 0, mode0_len = 0; |
164 | struct list_head *muxmodes = &partition->muxmodes; | 164 | struct list_head *muxmodes = &partition->muxmodes; |
165 | 165 | ||
166 | mode_name = strchr(muxname, '.'); | 166 | mode_name = strchr(muxname, '.'); |
@@ -605,7 +605,7 @@ static void __init omap_mux_dbg_create_entry( | |||
605 | list_for_each_entry(e, &partition->muxmodes, node) { | 605 | list_for_each_entry(e, &partition->muxmodes, node) { |
606 | struct omap_mux *m = &e->mux; | 606 | struct omap_mux *m = &e->mux; |
607 | 607 | ||
608 | (void)debugfs_create_file(m->muxnames[0], S_IWUGO, mux_dbg_dir, | 608 | (void)debugfs_create_file(m->muxnames[0], S_IWUSR, mux_dbg_dir, |
609 | m, &omap_mux_dbg_signal_fops); | 609 | m, &omap_mux_dbg_signal_fops); |
610 | } | 610 | } |
611 | } | 611 | } |
@@ -1000,6 +1000,7 @@ int __init omap_mux_init(const char *name, u32 flags, | |||
1000 | if (!partition->base) { | 1000 | if (!partition->base) { |
1001 | pr_err("%s: Could not ioremap mux partition at 0x%08x\n", | 1001 | pr_err("%s: Could not ioremap mux partition at 0x%08x\n", |
1002 | __func__, partition->phys); | 1002 | __func__, partition->phys); |
1003 | kfree(partition); | ||
1003 | return -ENODEV; | 1004 | return -ENODEV; |
1004 | } | 1005 | } |
1005 | 1006 | ||
diff --git a/arch/arm/mach-omap2/omap4-common.c b/arch/arm/mach-omap2/omap4-common.c index 19268647ce36..9ef8c29dd817 100644 --- a/arch/arm/mach-omap2/omap4-common.c +++ b/arch/arm/mach-omap2/omap4-common.c | |||
@@ -52,6 +52,12 @@ static void omap4_l2x0_disable(void) | |||
52 | omap_smc1(0x102, 0x0); | 52 | omap_smc1(0x102, 0x0); |
53 | } | 53 | } |
54 | 54 | ||
55 | static void omap4_l2x0_set_debug(unsigned long val) | ||
56 | { | ||
57 | /* Program PL310 L2 Cache controller debug register */ | ||
58 | omap_smc1(0x100, val); | ||
59 | } | ||
60 | |||
55 | static int __init omap_l2_cache_init(void) | 61 | static int __init omap_l2_cache_init(void) |
56 | { | 62 | { |
57 | u32 aux_ctrl = 0; | 63 | u32 aux_ctrl = 0; |
@@ -99,6 +105,7 @@ static int __init omap_l2_cache_init(void) | |||
99 | * specific one | 105 | * specific one |
100 | */ | 106 | */ |
101 | outer_cache.disable = omap4_l2x0_disable; | 107 | outer_cache.disable = omap4_l2x0_disable; |
108 | outer_cache.set_debug = omap4_l2x0_set_debug; | ||
102 | 109 | ||
103 | return 0; | 110 | return 0; |
104 | } | 111 | } |
diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c index 745252c60e32..ebe33df708bd 100644 --- a/arch/arm/mach-omap2/omap_phy_internal.c +++ b/arch/arm/mach-omap2/omap_phy_internal.c | |||
@@ -43,6 +43,7 @@ | |||
43 | 43 | ||
44 | static struct clk *phyclk, *clk48m, *clk32k; | 44 | static struct clk *phyclk, *clk48m, *clk32k; |
45 | static void __iomem *ctrl_base; | 45 | static void __iomem *ctrl_base; |
46 | static int usbotghs_control; | ||
46 | 47 | ||
47 | int omap4430_phy_init(struct device *dev) | 48 | int omap4430_phy_init(struct device *dev) |
48 | { | 49 | { |
@@ -103,13 +104,6 @@ int omap4430_phy_set_clk(struct device *dev, int on) | |||
103 | int omap4430_phy_power(struct device *dev, int ID, int on) | 104 | int omap4430_phy_power(struct device *dev, int ID, int on) |
104 | { | 105 | { |
105 | if (on) { | 106 | if (on) { |
106 | /* enabled the clocks */ | ||
107 | omap4430_phy_set_clk(dev, 1); | ||
108 | /* power on the phy */ | ||
109 | if (__raw_readl(ctrl_base + CONTROL_DEV_CONF) & PHY_PD) { | ||
110 | __raw_writel(~PHY_PD, ctrl_base + CONTROL_DEV_CONF); | ||
111 | mdelay(200); | ||
112 | } | ||
113 | if (ID) | 107 | if (ID) |
114 | /* enable VBUS valid, IDDIG groung */ | 108 | /* enable VBUS valid, IDDIG groung */ |
115 | __raw_writel(AVALID | VBUSVALID, ctrl_base + | 109 | __raw_writel(AVALID | VBUSVALID, ctrl_base + |
@@ -125,10 +119,31 @@ int omap4430_phy_power(struct device *dev, int ID, int on) | |||
125 | /* Enable session END and IDIG to high impedence. */ | 119 | /* Enable session END and IDIG to high impedence. */ |
126 | __raw_writel(SESSEND | IDDIG, ctrl_base + | 120 | __raw_writel(SESSEND | IDDIG, ctrl_base + |
127 | USBOTGHS_CONTROL); | 121 | USBOTGHS_CONTROL); |
122 | } | ||
123 | return 0; | ||
124 | } | ||
125 | |||
126 | int omap4430_phy_suspend(struct device *dev, int suspend) | ||
127 | { | ||
128 | if (suspend) { | ||
128 | /* Disable the clocks */ | 129 | /* Disable the clocks */ |
129 | omap4430_phy_set_clk(dev, 0); | 130 | omap4430_phy_set_clk(dev, 0); |
130 | /* Power down the phy */ | 131 | /* Power down the phy */ |
131 | __raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF); | 132 | __raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF); |
133 | |||
134 | /* save the context */ | ||
135 | usbotghs_control = __raw_readl(ctrl_base + USBOTGHS_CONTROL); | ||
136 | } else { | ||
137 | /* Enable the internel phy clcoks */ | ||
138 | omap4430_phy_set_clk(dev, 1); | ||
139 | /* power on the phy */ | ||
140 | if (__raw_readl(ctrl_base + CONTROL_DEV_CONF) & PHY_PD) { | ||
141 | __raw_writel(~PHY_PD, ctrl_base + CONTROL_DEV_CONF); | ||
142 | mdelay(200); | ||
143 | } | ||
144 | |||
145 | /* restore the context */ | ||
146 | __raw_writel(usbotghs_control, ctrl_base + USBOTGHS_CONTROL); | ||
132 | } | 147 | } |
133 | 148 | ||
134 | return 0; | 149 | return 0; |
diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c index 125f56591fb5..a5a83b358ddd 100644 --- a/arch/arm/mach-omap2/pm-debug.c +++ b/arch/arm/mach-omap2/pm-debug.c | |||
@@ -637,14 +637,14 @@ static int __init pm_dbg_init(void) | |||
637 | 637 | ||
638 | } | 638 | } |
639 | 639 | ||
640 | (void) debugfs_create_file("enable_off_mode", S_IRUGO | S_IWUGO, d, | 640 | (void) debugfs_create_file("enable_off_mode", S_IRUGO | S_IWUSR, d, |
641 | &enable_off_mode, &pm_dbg_option_fops); | 641 | &enable_off_mode, &pm_dbg_option_fops); |
642 | (void) debugfs_create_file("sleep_while_idle", S_IRUGO | S_IWUGO, d, | 642 | (void) debugfs_create_file("sleep_while_idle", S_IRUGO | S_IWUSR, d, |
643 | &sleep_while_idle, &pm_dbg_option_fops); | 643 | &sleep_while_idle, &pm_dbg_option_fops); |
644 | (void) debugfs_create_file("wakeup_timer_seconds", S_IRUGO | S_IWUGO, d, | 644 | (void) debugfs_create_file("wakeup_timer_seconds", S_IRUGO | S_IWUSR, d, |
645 | &wakeup_timer_seconds, &pm_dbg_option_fops); | 645 | &wakeup_timer_seconds, &pm_dbg_option_fops); |
646 | (void) debugfs_create_file("wakeup_timer_milliseconds", | 646 | (void) debugfs_create_file("wakeup_timer_milliseconds", |
647 | S_IRUGO | S_IWUGO, d, &wakeup_timer_milliseconds, | 647 | S_IRUGO | S_IWUSR, d, &wakeup_timer_milliseconds, |
648 | &pm_dbg_option_fops); | 648 | &pm_dbg_option_fops); |
649 | pm_dbg_init_done = 1; | 649 | pm_dbg_init_done = 1; |
650 | 650 | ||
diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h index 1c1b0ab5b978..39580e6060e8 100644 --- a/arch/arm/mach-omap2/pm.h +++ b/arch/arm/mach-omap2/pm.h | |||
@@ -92,7 +92,7 @@ extern void omap24xx_idle_loop_suspend(void); | |||
92 | extern void omap24xx_cpu_suspend(u32 dll_ctrl, void __iomem *sdrc_dlla_ctrl, | 92 | extern void omap24xx_cpu_suspend(u32 dll_ctrl, void __iomem *sdrc_dlla_ctrl, |
93 | void __iomem *sdrc_power); | 93 | void __iomem *sdrc_power); |
94 | extern void omap34xx_cpu_suspend(u32 *addr, int save_state); | 94 | extern void omap34xx_cpu_suspend(u32 *addr, int save_state); |
95 | extern void save_secure_ram_context(u32 *addr); | 95 | extern int save_secure_ram_context(u32 *addr); |
96 | extern void omap3_save_scratchpad_contents(void); | 96 | extern void omap3_save_scratchpad_contents(void); |
97 | 97 | ||
98 | extern unsigned int omap24xx_idle_loop_suspend_sz; | 98 | extern unsigned int omap24xx_idle_loop_suspend_sz; |
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c index 9e5dc8ed51e9..97feb3ab6a69 100644 --- a/arch/arm/mach-omap2/pm24xx.c +++ b/arch/arm/mach-omap2/pm24xx.c | |||
@@ -134,7 +134,7 @@ static void omap2_enter_full_retention(void) | |||
134 | 134 | ||
135 | /* Block console output in case it is on one of the OMAP UARTs */ | 135 | /* Block console output in case it is on one of the OMAP UARTs */ |
136 | if (!is_suspending()) | 136 | if (!is_suspending()) |
137 | if (try_acquire_console_sem()) | 137 | if (!console_trylock()) |
138 | goto no_sleep; | 138 | goto no_sleep; |
139 | 139 | ||
140 | omap_uart_prepare_idle(0); | 140 | omap_uart_prepare_idle(0); |
@@ -151,7 +151,7 @@ static void omap2_enter_full_retention(void) | |||
151 | omap_uart_resume_idle(0); | 151 | omap_uart_resume_idle(0); |
152 | 152 | ||
153 | if (!is_suspending()) | 153 | if (!is_suspending()) |
154 | release_console_sem(); | 154 | console_unlock(); |
155 | 155 | ||
156 | no_sleep: | 156 | no_sleep: |
157 | if (omap2_pm_debug) { | 157 | if (omap2_pm_debug) { |
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 8cbbeade4b8a..2f864e4b085d 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -168,9 +168,10 @@ static void omap3_core_restore_context(void) | |||
168 | * once during boot sequence, but this works as we are not using secure | 168 | * once during boot sequence, but this works as we are not using secure |
169 | * services. | 169 | * services. |
170 | */ | 170 | */ |
171 | static void omap3_save_secure_ram_context(u32 target_mpu_state) | 171 | static void omap3_save_secure_ram_context(void) |
172 | { | 172 | { |
173 | u32 ret; | 173 | u32 ret; |
174 | int mpu_next_state = pwrdm_read_next_pwrst(mpu_pwrdm); | ||
174 | 175 | ||
175 | if (omap_type() != OMAP2_DEVICE_TYPE_GP) { | 176 | if (omap_type() != OMAP2_DEVICE_TYPE_GP) { |
176 | /* | 177 | /* |
@@ -181,7 +182,7 @@ static void omap3_save_secure_ram_context(u32 target_mpu_state) | |||
181 | pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_ON); | 182 | pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_ON); |
182 | ret = _omap_save_secure_sram((u32 *) | 183 | ret = _omap_save_secure_sram((u32 *) |
183 | __pa(omap3_secure_ram_storage)); | 184 | __pa(omap3_secure_ram_storage)); |
184 | pwrdm_set_next_pwrst(mpu_pwrdm, target_mpu_state); | 185 | pwrdm_set_next_pwrst(mpu_pwrdm, mpu_next_state); |
185 | /* Following is for error tracking, it should not happen */ | 186 | /* Following is for error tracking, it should not happen */ |
186 | if (ret) { | 187 | if (ret) { |
187 | printk(KERN_ERR "save_secure_sram() returns %08x\n", | 188 | printk(KERN_ERR "save_secure_sram() returns %08x\n", |
@@ -398,7 +399,7 @@ void omap_sram_idle(void) | |||
398 | if (!is_suspending()) | 399 | if (!is_suspending()) |
399 | if (per_next_state < PWRDM_POWER_ON || | 400 | if (per_next_state < PWRDM_POWER_ON || |
400 | core_next_state < PWRDM_POWER_ON) | 401 | core_next_state < PWRDM_POWER_ON) |
401 | if (try_acquire_console_sem()) | 402 | if (!console_trylock()) |
402 | goto console_still_active; | 403 | goto console_still_active; |
403 | 404 | ||
404 | /* PER */ | 405 | /* PER */ |
@@ -481,7 +482,7 @@ void omap_sram_idle(void) | |||
481 | } | 482 | } |
482 | 483 | ||
483 | if (!is_suspending()) | 484 | if (!is_suspending()) |
484 | release_console_sem(); | 485 | console_unlock(); |
485 | 486 | ||
486 | console_still_active: | 487 | console_still_active: |
487 | /* Disable IO-PAD and IO-CHAIN wakeup */ | 488 | /* Disable IO-PAD and IO-CHAIN wakeup */ |
@@ -1094,7 +1095,7 @@ static int __init omap3_pm_init(void) | |||
1094 | local_fiq_disable(); | 1095 | local_fiq_disable(); |
1095 | 1096 | ||
1096 | omap_dma_global_context_save(); | 1097 | omap_dma_global_context_save(); |
1097 | omap3_save_secure_ram_context(PWRDM_POWER_ON); | 1098 | omap3_save_secure_ram_context(); |
1098 | omap_dma_global_context_restore(); | 1099 | omap_dma_global_context_restore(); |
1099 | 1100 | ||
1100 | local_irq_enable(); | 1101 | local_irq_enable(); |
diff --git a/arch/arm/mach-omap2/powerdomain2xxx_3xxx.c b/arch/arm/mach-omap2/powerdomain2xxx_3xxx.c index d5233890370c..cf600e22bf8e 100644 --- a/arch/arm/mach-omap2/powerdomain2xxx_3xxx.c +++ b/arch/arm/mach-omap2/powerdomain2xxx_3xxx.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <plat/prcm.h> | 19 | #include <plat/prcm.h> |
20 | 20 | ||
21 | #include "powerdomain.h" | 21 | #include "powerdomain.h" |
22 | #include "prm-regbits-34xx.h" | ||
23 | #include "prm.h" | 22 | #include "prm.h" |
24 | #include "prm-regbits-24xx.h" | 23 | #include "prm-regbits-24xx.h" |
25 | #include "prm-regbits-34xx.h" | 24 | #include "prm-regbits-34xx.h" |
diff --git a/arch/arm/mach-omap2/prcm_mpu44xx.h b/arch/arm/mach-omap2/prcm_mpu44xx.h index 729a644ce852..3300ff6e3cfe 100644 --- a/arch/arm/mach-omap2/prcm_mpu44xx.h +++ b/arch/arm/mach-omap2/prcm_mpu44xx.h | |||
@@ -38,8 +38,8 @@ | |||
38 | #define OMAP4430_PRCM_MPU_CPU1_INST 0x0800 | 38 | #define OMAP4430_PRCM_MPU_CPU1_INST 0x0800 |
39 | 39 | ||
40 | /* PRCM_MPU clockdomain register offsets (from instance start) */ | 40 | /* PRCM_MPU clockdomain register offsets (from instance start) */ |
41 | #define OMAP4430_PRCM_MPU_CPU0_MPU_CDOFFS 0x0000 | 41 | #define OMAP4430_PRCM_MPU_CPU0_MPU_CDOFFS 0x0018 |
42 | #define OMAP4430_PRCM_MPU_CPU1_MPU_CDOFFS 0x0000 | 42 | #define OMAP4430_PRCM_MPU_CPU1_MPU_CDOFFS 0x0018 |
43 | 43 | ||
44 | 44 | ||
45 | /* | 45 | /* |
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index 302da7403a10..32e91a9c8b6b 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c | |||
@@ -812,7 +812,7 @@ void __init omap_serial_init_port(struct omap_board_data *bdata) | |||
812 | 812 | ||
813 | oh->dev_attr = uart; | 813 | oh->dev_attr = uart; |
814 | 814 | ||
815 | acquire_console_sem(); /* in case the earlycon is on the UART */ | 815 | console_lock(); /* in case the earlycon is on the UART */ |
816 | 816 | ||
817 | /* | 817 | /* |
818 | * Because of early UART probing, UART did not get idled | 818 | * Because of early UART probing, UART did not get idled |
@@ -838,7 +838,7 @@ void __init omap_serial_init_port(struct omap_board_data *bdata) | |||
838 | omap_uart_block_sleep(uart); | 838 | omap_uart_block_sleep(uart); |
839 | uart->timeout = DEFAULT_TIMEOUT; | 839 | uart->timeout = DEFAULT_TIMEOUT; |
840 | 840 | ||
841 | release_console_sem(); | 841 | console_unlock(); |
842 | 842 | ||
843 | if ((cpu_is_omap34xx() && uart->padconf) || | 843 | if ((cpu_is_omap34xx() && uart->padconf) || |
844 | (uart->wk_en && uart->wk_mask)) { | 844 | (uart->wk_en && uart->wk_mask)) { |
diff --git a/arch/arm/mach-omap2/sleep24xx.S b/arch/arm/mach-omap2/sleep24xx.S index c7780cc8d919..b5071a47ec39 100644 --- a/arch/arm/mach-omap2/sleep24xx.S +++ b/arch/arm/mach-omap2/sleep24xx.S | |||
@@ -47,6 +47,7 @@ | |||
47 | * Note: This code get's copied to internal SRAM at boot. When the OMAP | 47 | * Note: This code get's copied to internal SRAM at boot. When the OMAP |
48 | * wakes up it continues execution at the point it went to sleep. | 48 | * wakes up it continues execution at the point it went to sleep. |
49 | */ | 49 | */ |
50 | .align 3 | ||
50 | ENTRY(omap24xx_idle_loop_suspend) | 51 | ENTRY(omap24xx_idle_loop_suspend) |
51 | stmfd sp!, {r0, lr} @ save registers on stack | 52 | stmfd sp!, {r0, lr} @ save registers on stack |
52 | mov r0, #0 @ clear for mcr setup | 53 | mov r0, #0 @ clear for mcr setup |
@@ -82,6 +83,7 @@ ENTRY(omap24xx_idle_loop_suspend_sz) | |||
82 | * The DLL load value is not kept in RETENTION or OFF. It needs to be restored | 83 | * The DLL load value is not kept in RETENTION or OFF. It needs to be restored |
83 | * at wake | 84 | * at wake |
84 | */ | 85 | */ |
86 | .align 3 | ||
85 | ENTRY(omap24xx_cpu_suspend) | 87 | ENTRY(omap24xx_cpu_suspend) |
86 | stmfd sp!, {r0 - r12, lr} @ save registers on stack | 88 | stmfd sp!, {r0 - r12, lr} @ save registers on stack |
87 | mov r3, #0x0 @ clear for mcr call | 89 | mov r3, #0x0 @ clear for mcr call |
diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-omap2/sleep34xx.S index 98d8232808b8..951a0be66cf7 100644 --- a/arch/arm/mach-omap2/sleep34xx.S +++ b/arch/arm/mach-omap2/sleep34xx.S | |||
@@ -118,6 +118,7 @@ ENTRY(enable_omap3630_toggle_l2_on_restore) | |||
118 | 118 | ||
119 | .text | 119 | .text |
120 | /* Function to call rom code to save secure ram context */ | 120 | /* Function to call rom code to save secure ram context */ |
121 | .align 3 | ||
121 | ENTRY(save_secure_ram_context) | 122 | ENTRY(save_secure_ram_context) |
122 | stmfd sp!, {r1-r12, lr} @ save registers on stack | 123 | stmfd sp!, {r1-r12, lr} @ save registers on stack |
123 | adr r3, api_params @ r3 points to parameters | 124 | adr r3, api_params @ r3 points to parameters |
@@ -169,6 +170,7 @@ ENTRY(save_secure_ram_context_sz) | |||
169 | * depending on the low power mode (non-OFF vs OFF modes), | 170 | * depending on the low power mode (non-OFF vs OFF modes), |
170 | * cf. 'Resume path for xxx mode' comments. | 171 | * cf. 'Resume path for xxx mode' comments. |
171 | */ | 172 | */ |
173 | .align 3 | ||
172 | ENTRY(omap34xx_cpu_suspend) | 174 | ENTRY(omap34xx_cpu_suspend) |
173 | stmfd sp!, {r0-r12, lr} @ save registers on stack | 175 | stmfd sp!, {r0-r12, lr} @ save registers on stack |
174 | 176 | ||
diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c index 77ecebf3fae2..1a777e34d0c2 100644 --- a/arch/arm/mach-omap2/smartreflex.c +++ b/arch/arm/mach-omap2/smartreflex.c | |||
@@ -282,6 +282,7 @@ error: | |||
282 | dev_err(&sr_info->pdev->dev, "%s: ERROR in registering" | 282 | dev_err(&sr_info->pdev->dev, "%s: ERROR in registering" |
283 | "interrupt handler. Smartreflex will" | 283 | "interrupt handler. Smartreflex will" |
284 | "not function as desired\n", __func__); | 284 | "not function as desired\n", __func__); |
285 | kfree(name); | ||
285 | kfree(sr_info); | 286 | kfree(sr_info); |
286 | return ret; | 287 | return ret; |
287 | } | 288 | } |
@@ -780,8 +781,7 @@ static int omap_sr_autocomp_show(void *data, u64 *val) | |||
780 | struct omap_sr *sr_info = (struct omap_sr *) data; | 781 | struct omap_sr *sr_info = (struct omap_sr *) data; |
781 | 782 | ||
782 | if (!sr_info) { | 783 | if (!sr_info) { |
783 | pr_warning("%s: omap_sr struct for sr_%s not found\n", | 784 | pr_warning("%s: omap_sr struct not found\n", __func__); |
784 | __func__, sr_info->voltdm->name); | ||
785 | return -EINVAL; | 785 | return -EINVAL; |
786 | } | 786 | } |
787 | 787 | ||
@@ -795,8 +795,7 @@ static int omap_sr_autocomp_store(void *data, u64 val) | |||
795 | struct omap_sr *sr_info = (struct omap_sr *) data; | 795 | struct omap_sr *sr_info = (struct omap_sr *) data; |
796 | 796 | ||
797 | if (!sr_info) { | 797 | if (!sr_info) { |
798 | pr_warning("%s: omap_sr struct for sr_%s not found\n", | 798 | pr_warning("%s: omap_sr struct not found\n", __func__); |
799 | __func__, sr_info->voltdm->name); | ||
800 | return -EINVAL; | 799 | return -EINVAL; |
801 | } | 800 | } |
802 | 801 | ||
@@ -834,7 +833,8 @@ static int __init omap_sr_probe(struct platform_device *pdev) | |||
834 | 833 | ||
835 | if (!pdata) { | 834 | if (!pdata) { |
836 | dev_err(&pdev->dev, "%s: platform data missing\n", __func__); | 835 | dev_err(&pdev->dev, "%s: platform data missing\n", __func__); |
837 | return -EINVAL; | 836 | ret = -EINVAL; |
837 | goto err_free_devinfo; | ||
838 | } | 838 | } |
839 | 839 | ||
840 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 840 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
@@ -880,7 +880,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) | |||
880 | ret = sr_late_init(sr_info); | 880 | ret = sr_late_init(sr_info); |
881 | if (ret) { | 881 | if (ret) { |
882 | pr_warning("%s: Error in SR late init\n", __func__); | 882 | pr_warning("%s: Error in SR late init\n", __func__); |
883 | return ret; | 883 | goto err_release_region; |
884 | } | 884 | } |
885 | } | 885 | } |
886 | 886 | ||
@@ -891,17 +891,20 @@ static int __init omap_sr_probe(struct platform_device *pdev) | |||
891 | * not try to create rest of the debugfs entries. | 891 | * not try to create rest of the debugfs entries. |
892 | */ | 892 | */ |
893 | vdd_dbg_dir = omap_voltage_get_dbgdir(sr_info->voltdm); | 893 | vdd_dbg_dir = omap_voltage_get_dbgdir(sr_info->voltdm); |
894 | if (!vdd_dbg_dir) | 894 | if (!vdd_dbg_dir) { |
895 | return -EINVAL; | 895 | ret = -EINVAL; |
896 | goto err_release_region; | ||
897 | } | ||
896 | 898 | ||
897 | dbg_dir = debugfs_create_dir("smartreflex", vdd_dbg_dir); | 899 | dbg_dir = debugfs_create_dir("smartreflex", vdd_dbg_dir); |
898 | if (IS_ERR(dbg_dir)) { | 900 | if (IS_ERR(dbg_dir)) { |
899 | dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n", | 901 | dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n", |
900 | __func__); | 902 | __func__); |
901 | return PTR_ERR(dbg_dir); | 903 | ret = PTR_ERR(dbg_dir); |
904 | goto err_release_region; | ||
902 | } | 905 | } |
903 | 906 | ||
904 | (void) debugfs_create_file("autocomp", S_IRUGO | S_IWUGO, dbg_dir, | 907 | (void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR, dbg_dir, |
905 | (void *)sr_info, &pm_sr_fops); | 908 | (void *)sr_info, &pm_sr_fops); |
906 | (void) debugfs_create_x32("errweight", S_IRUGO, dbg_dir, | 909 | (void) debugfs_create_x32("errweight", S_IRUGO, dbg_dir, |
907 | &sr_info->err_weight); | 910 | &sr_info->err_weight); |
@@ -914,7 +917,8 @@ static int __init omap_sr_probe(struct platform_device *pdev) | |||
914 | if (IS_ERR(nvalue_dir)) { | 917 | if (IS_ERR(nvalue_dir)) { |
915 | dev_err(&pdev->dev, "%s: Unable to create debugfs directory" | 918 | dev_err(&pdev->dev, "%s: Unable to create debugfs directory" |
916 | "for n-values\n", __func__); | 919 | "for n-values\n", __func__); |
917 | return PTR_ERR(nvalue_dir); | 920 | ret = PTR_ERR(nvalue_dir); |
921 | goto err_release_region; | ||
918 | } | 922 | } |
919 | 923 | ||
920 | omap_voltage_get_volttable(sr_info->voltdm, &volt_data); | 924 | omap_voltage_get_volttable(sr_info->voltdm, &volt_data); |
@@ -923,24 +927,16 @@ static int __init omap_sr_probe(struct platform_device *pdev) | |||
923 | " corresponding vdd vdd_%s. Cannot create debugfs" | 927 | " corresponding vdd vdd_%s. Cannot create debugfs" |
924 | "entries for n-values\n", | 928 | "entries for n-values\n", |
925 | __func__, sr_info->voltdm->name); | 929 | __func__, sr_info->voltdm->name); |
926 | return -ENODATA; | 930 | ret = -ENODATA; |
931 | goto err_release_region; | ||
927 | } | 932 | } |
928 | 933 | ||
929 | for (i = 0; i < sr_info->nvalue_count; i++) { | 934 | for (i = 0; i < sr_info->nvalue_count; i++) { |
930 | char *name; | 935 | char name[NVALUE_NAME_LEN + 1]; |
931 | char volt_name[32]; | ||
932 | |||
933 | name = kzalloc(NVALUE_NAME_LEN + 1, GFP_KERNEL); | ||
934 | if (!name) { | ||
935 | dev_err(&pdev->dev, "%s: Unable to allocate memory" | ||
936 | " for n-value directory name\n", __func__); | ||
937 | return -ENOMEM; | ||
938 | } | ||
939 | 936 | ||
940 | strcpy(name, "volt_"); | 937 | snprintf(name, sizeof(name), "volt_%d", |
941 | sprintf(volt_name, "%d", volt_data[i].volt_nominal); | 938 | volt_data[i].volt_nominal); |
942 | strcat(name, volt_name); | 939 | (void) debugfs_create_x32(name, S_IRUGO | S_IWUSR, nvalue_dir, |
943 | (void) debugfs_create_x32(name, S_IRUGO | S_IWUGO, nvalue_dir, | ||
944 | &(sr_info->nvalue_table[i].nvalue)); | 940 | &(sr_info->nvalue_table[i].nvalue)); |
945 | } | 941 | } |
946 | 942 | ||
@@ -966,7 +962,7 @@ static int __devexit omap_sr_remove(struct platform_device *pdev) | |||
966 | } | 962 | } |
967 | 963 | ||
968 | sr_info = _sr_lookup(pdata->voltdm); | 964 | sr_info = _sr_lookup(pdata->voltdm); |
969 | if (!sr_info) { | 965 | if (IS_ERR(sr_info)) { |
970 | dev_warn(&pdev->dev, "%s: omap_sr struct not found\n", | 966 | dev_warn(&pdev->dev, "%s: omap_sr struct not found\n", |
971 | __func__); | 967 | __func__); |
972 | return -EINVAL; | 968 | return -EINVAL; |
diff --git a/arch/arm/mach-omap2/sram242x.S b/arch/arm/mach-omap2/sram242x.S index 055310cc77de..ff9b9dbcb30e 100644 --- a/arch/arm/mach-omap2/sram242x.S +++ b/arch/arm/mach-omap2/sram242x.S | |||
@@ -39,6 +39,7 @@ | |||
39 | 39 | ||
40 | .text | 40 | .text |
41 | 41 | ||
42 | .align 3 | ||
42 | ENTRY(omap242x_sram_ddr_init) | 43 | ENTRY(omap242x_sram_ddr_init) |
43 | stmfd sp!, {r0 - r12, lr} @ save registers on stack | 44 | stmfd sp!, {r0 - r12, lr} @ save registers on stack |
44 | 45 | ||
@@ -143,6 +144,7 @@ ENTRY(omap242x_sram_ddr_init_sz) | |||
143 | * r0 = [PRCM_FULL | PRCM_HALF] r1 = SDRC_DLLA_CTRL value r2 = [DDR | SDR] | 144 | * r0 = [PRCM_FULL | PRCM_HALF] r1 = SDRC_DLLA_CTRL value r2 = [DDR | SDR] |
144 | * PRCM_FULL = 2, PRCM_HALF = 1, DDR = 1, SDR = 0 | 145 | * PRCM_FULL = 2, PRCM_HALF = 1, DDR = 1, SDR = 0 |
145 | */ | 146 | */ |
147 | .align 3 | ||
146 | ENTRY(omap242x_sram_reprogram_sdrc) | 148 | ENTRY(omap242x_sram_reprogram_sdrc) |
147 | stmfd sp!, {r0 - r10, lr} @ save registers on stack | 149 | stmfd sp!, {r0 - r10, lr} @ save registers on stack |
148 | mov r3, #0x0 @ clear for mrc call | 150 | mov r3, #0x0 @ clear for mrc call |
@@ -238,6 +240,7 @@ ENTRY(omap242x_sram_reprogram_sdrc_sz) | |||
238 | /* | 240 | /* |
239 | * Set dividers and pll. Also recalculate DLL value for DDR and unlock mode. | 241 | * Set dividers and pll. Also recalculate DLL value for DDR and unlock mode. |
240 | */ | 242 | */ |
243 | .align 3 | ||
241 | ENTRY(omap242x_sram_set_prcm) | 244 | ENTRY(omap242x_sram_set_prcm) |
242 | stmfd sp!, {r0-r12, lr} @ regs to stack | 245 | stmfd sp!, {r0-r12, lr} @ regs to stack |
243 | adr r4, pbegin @ addr of preload start | 246 | adr r4, pbegin @ addr of preload start |
diff --git a/arch/arm/mach-omap2/sram243x.S b/arch/arm/mach-omap2/sram243x.S index f9007580aea3..76730209fa0e 100644 --- a/arch/arm/mach-omap2/sram243x.S +++ b/arch/arm/mach-omap2/sram243x.S | |||
@@ -39,6 +39,7 @@ | |||
39 | 39 | ||
40 | .text | 40 | .text |
41 | 41 | ||
42 | .align 3 | ||
42 | ENTRY(omap243x_sram_ddr_init) | 43 | ENTRY(omap243x_sram_ddr_init) |
43 | stmfd sp!, {r0 - r12, lr} @ save registers on stack | 44 | stmfd sp!, {r0 - r12, lr} @ save registers on stack |
44 | 45 | ||
@@ -143,6 +144,7 @@ ENTRY(omap243x_sram_ddr_init_sz) | |||
143 | * r0 = [PRCM_FULL | PRCM_HALF] r1 = SDRC_DLLA_CTRL value r2 = [DDR | SDR] | 144 | * r0 = [PRCM_FULL | PRCM_HALF] r1 = SDRC_DLLA_CTRL value r2 = [DDR | SDR] |
144 | * PRCM_FULL = 2, PRCM_HALF = 1, DDR = 1, SDR = 0 | 145 | * PRCM_FULL = 2, PRCM_HALF = 1, DDR = 1, SDR = 0 |
145 | */ | 146 | */ |
147 | .align 3 | ||
146 | ENTRY(omap243x_sram_reprogram_sdrc) | 148 | ENTRY(omap243x_sram_reprogram_sdrc) |
147 | stmfd sp!, {r0 - r10, lr} @ save registers on stack | 149 | stmfd sp!, {r0 - r10, lr} @ save registers on stack |
148 | mov r3, #0x0 @ clear for mrc call | 150 | mov r3, #0x0 @ clear for mrc call |
@@ -238,6 +240,7 @@ ENTRY(omap243x_sram_reprogram_sdrc_sz) | |||
238 | /* | 240 | /* |
239 | * Set dividers and pll. Also recalculate DLL value for DDR and unlock mode. | 241 | * Set dividers and pll. Also recalculate DLL value for DDR and unlock mode. |
240 | */ | 242 | */ |
243 | .align 3 | ||
241 | ENTRY(omap243x_sram_set_prcm) | 244 | ENTRY(omap243x_sram_set_prcm) |
242 | stmfd sp!, {r0-r12, lr} @ regs to stack | 245 | stmfd sp!, {r0-r12, lr} @ regs to stack |
243 | adr r4, pbegin @ addr of preload start | 246 | adr r4, pbegin @ addr of preload start |
diff --git a/arch/arm/mach-omap2/sram34xx.S b/arch/arm/mach-omap2/sram34xx.S index 7f893a29d500..25011ca2145d 100644 --- a/arch/arm/mach-omap2/sram34xx.S +++ b/arch/arm/mach-omap2/sram34xx.S | |||
@@ -111,6 +111,7 @@ | |||
111 | * since it will cause the ARM MMU to attempt to walk the page tables. | 111 | * since it will cause the ARM MMU to attempt to walk the page tables. |
112 | * These crashes may be intermittent. | 112 | * These crashes may be intermittent. |
113 | */ | 113 | */ |
114 | .align 3 | ||
114 | ENTRY(omap3_sram_configure_core_dpll) | 115 | ENTRY(omap3_sram_configure_core_dpll) |
115 | stmfd sp!, {r1-r12, lr} @ store regs to stack | 116 | stmfd sp!, {r1-r12, lr} @ store regs to stack |
116 | 117 | ||
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c index 4e48e786bec7..0fc550e7e482 100644 --- a/arch/arm/mach-omap2/timer-gp.c +++ b/arch/arm/mach-omap2/timer-gp.c | |||
@@ -39,9 +39,12 @@ | |||
39 | #include <asm/mach/time.h> | 39 | #include <asm/mach/time.h> |
40 | #include <plat/dmtimer.h> | 40 | #include <plat/dmtimer.h> |
41 | #include <asm/localtimer.h> | 41 | #include <asm/localtimer.h> |
42 | #include <asm/sched_clock.h> | ||
42 | 43 | ||
43 | #include "timer-gp.h" | 44 | #include "timer-gp.h" |
44 | 45 | ||
46 | #include <plat/common.h> | ||
47 | |||
45 | /* MAX_GPTIMER_ID: number of GPTIMERs on the chip */ | 48 | /* MAX_GPTIMER_ID: number of GPTIMERs on the chip */ |
46 | #define MAX_GPTIMER_ID 12 | 49 | #define MAX_GPTIMER_ID 12 |
47 | 50 | ||
@@ -176,14 +179,19 @@ static void __init omap2_gp_clockevent_init(void) | |||
176 | /* | 179 | /* |
177 | * When 32k-timer is enabled, don't use GPTimer for clocksource | 180 | * When 32k-timer is enabled, don't use GPTimer for clocksource |
178 | * instead, just leave default clocksource which uses the 32k | 181 | * instead, just leave default clocksource which uses the 32k |
179 | * sync counter. See clocksource setup in see plat-omap/common.c. | 182 | * sync counter. See clocksource setup in plat-omap/counter_32k.c |
180 | */ | 183 | */ |
181 | 184 | ||
182 | static inline void __init omap2_gp_clocksource_init(void) {} | 185 | static void __init omap2_gp_clocksource_init(void) |
186 | { | ||
187 | omap_init_clocksource_32k(); | ||
188 | } | ||
189 | |||
183 | #else | 190 | #else |
184 | /* | 191 | /* |
185 | * clocksource | 192 | * clocksource |
186 | */ | 193 | */ |
194 | static DEFINE_CLOCK_DATA(cd); | ||
187 | static struct omap_dm_timer *gpt_clocksource; | 195 | static struct omap_dm_timer *gpt_clocksource; |
188 | static cycle_t clocksource_read_cycles(struct clocksource *cs) | 196 | static cycle_t clocksource_read_cycles(struct clocksource *cs) |
189 | { | 197 | { |
@@ -198,6 +206,15 @@ static struct clocksource clocksource_gpt = { | |||
198 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | 206 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
199 | }; | 207 | }; |
200 | 208 | ||
209 | static void notrace dmtimer_update_sched_clock(void) | ||
210 | { | ||
211 | u32 cyc; | ||
212 | |||
213 | cyc = omap_dm_timer_read_counter(gpt_clocksource); | ||
214 | |||
215 | update_sched_clock(&cd, cyc, (u32)~0); | ||
216 | } | ||
217 | |||
201 | /* Setup free-running counter for clocksource */ | 218 | /* Setup free-running counter for clocksource */ |
202 | static void __init omap2_gp_clocksource_init(void) | 219 | static void __init omap2_gp_clocksource_init(void) |
203 | { | 220 | { |
@@ -218,6 +235,8 @@ static void __init omap2_gp_clocksource_init(void) | |||
218 | 235 | ||
219 | omap_dm_timer_set_load_start(gpt, 1, 0); | 236 | omap_dm_timer_set_load_start(gpt, 1, 0); |
220 | 237 | ||
238 | init_sched_clock(&cd, dmtimer_update_sched_clock, 32, tick_rate); | ||
239 | |||
221 | if (clocksource_register_hz(&clocksource_gpt, tick_rate)) | 240 | if (clocksource_register_hz(&clocksource_gpt, tick_rate)) |
222 | printk(err2, clocksource_gpt.name); | 241 | printk(err2, clocksource_gpt.name); |
223 | } | 242 | } |
diff --git a/arch/arm/mach-omap2/usb-ehci.c b/arch/arm/mach-omap2/usb-host.c index 25eeadabc39b..89ae29847c59 100644 --- a/arch/arm/mach-omap2/usb-ehci.c +++ b/arch/arm/mach-omap2/usb-host.c | |||
@@ -1,14 +1,15 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/arm/mach-omap2/usb-ehci.c | 2 | * usb-host.c - OMAP USB Host |
3 | * | 3 | * |
4 | * This file will contain the board specific details for the | 4 | * This file will contain the board specific details for the |
5 | * Synopsys EHCI host controller on OMAP3430 | 5 | * Synopsys EHCI/OHCI host controller on OMAP3430 and onwards |
6 | * | 6 | * |
7 | * Copyright (C) 2007 Texas Instruments | 7 | * Copyright (C) 2007-2011 Texas Instruments |
8 | * Author: Vikram Pandita <vikram.pandita@ti.com> | 8 | * Author: Vikram Pandita <vikram.pandita@ti.com> |
9 | * Author: Keshava Munegowda <keshava_mgowda@ti.com> | ||
9 | * | 10 | * |
10 | * Generalization by: | 11 | * Generalization by: |
11 | * Felipe Balbi <felipe.balbi@nokia.com> | 12 | * Felipe Balbi <balbi@ti.com> |
12 | * | 13 | * |
13 | * This program is free software; you can redistribute it and/or modify | 14 | * This program is free software; you can redistribute it and/or modify |
14 | * it under the terms of the GNU General Public License version 2 as | 15 | * it under the terms of the GNU General Public License version 2 as |
@@ -19,7 +20,7 @@ | |||
19 | #include <linux/errno.h> | 20 | #include <linux/errno.h> |
20 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
21 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
22 | #include <linux/clk.h> | 23 | #include <linux/slab.h> |
23 | #include <linux/dma-mapping.h> | 24 | #include <linux/dma-mapping.h> |
24 | 25 | ||
25 | #include <asm/io.h> | 26 | #include <asm/io.h> |
@@ -30,44 +31,56 @@ | |||
30 | 31 | ||
31 | #include "mux.h" | 32 | #include "mux.h" |
32 | 33 | ||
33 | #if defined(CONFIG_USB_EHCI_HCD) || defined(CONFIG_USB_EHCI_HCD_MODULE) | 34 | #ifdef CONFIG_MFD_OMAP_USB_HOST |
34 | 35 | ||
35 | static struct resource ehci_resources[] = { | 36 | #define OMAP_USBHS_DEVICE "usbhs-omap" |
37 | |||
38 | static struct resource usbhs_resources[] = { | ||
39 | { | ||
40 | .name = "uhh", | ||
41 | .flags = IORESOURCE_MEM, | ||
42 | }, | ||
36 | { | 43 | { |
44 | .name = "tll", | ||
37 | .flags = IORESOURCE_MEM, | 45 | .flags = IORESOURCE_MEM, |
38 | }, | 46 | }, |
39 | { | 47 | { |
48 | .name = "ehci", | ||
40 | .flags = IORESOURCE_MEM, | 49 | .flags = IORESOURCE_MEM, |
41 | }, | 50 | }, |
42 | { | 51 | { |
52 | .name = "ehci-irq", | ||
53 | .flags = IORESOURCE_IRQ, | ||
54 | }, | ||
55 | { | ||
56 | .name = "ohci", | ||
43 | .flags = IORESOURCE_MEM, | 57 | .flags = IORESOURCE_MEM, |
44 | }, | 58 | }, |
45 | { /* general IRQ */ | 59 | { |
46 | .flags = IORESOURCE_IRQ, | 60 | .name = "ohci-irq", |
61 | .flags = IORESOURCE_IRQ, | ||
47 | } | 62 | } |
48 | }; | 63 | }; |
49 | 64 | ||
50 | static u64 ehci_dmamask = ~(u32)0; | 65 | static struct platform_device usbhs_device = { |
51 | static struct platform_device ehci_device = { | 66 | .name = OMAP_USBHS_DEVICE, |
52 | .name = "ehci-omap", | 67 | .id = 0, |
53 | .id = 0, | 68 | .num_resources = ARRAY_SIZE(usbhs_resources), |
54 | .dev = { | 69 | .resource = usbhs_resources, |
55 | .dma_mask = &ehci_dmamask, | ||
56 | .coherent_dma_mask = 0xffffffff, | ||
57 | .platform_data = NULL, | ||
58 | }, | ||
59 | .num_resources = ARRAY_SIZE(ehci_resources), | ||
60 | .resource = ehci_resources, | ||
61 | }; | 70 | }; |
62 | 71 | ||
72 | static struct usbhs_omap_platform_data usbhs_data; | ||
73 | static struct ehci_hcd_omap_platform_data ehci_data; | ||
74 | static struct ohci_hcd_omap_platform_data ohci_data; | ||
75 | |||
63 | /* MUX settings for EHCI pins */ | 76 | /* MUX settings for EHCI pins */ |
64 | /* | 77 | /* |
65 | * setup_ehci_io_mux - initialize IO pad mux for USBHOST | 78 | * setup_ehci_io_mux - initialize IO pad mux for USBHOST |
66 | */ | 79 | */ |
67 | static void setup_ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode) | 80 | static void setup_ehci_io_mux(const enum usbhs_omap_port_mode *port_mode) |
68 | { | 81 | { |
69 | switch (port_mode[0]) { | 82 | switch (port_mode[0]) { |
70 | case EHCI_HCD_OMAP_MODE_PHY: | 83 | case OMAP_EHCI_PORT_MODE_PHY: |
71 | omap_mux_init_signal("hsusb1_stp", OMAP_PIN_OUTPUT); | 84 | omap_mux_init_signal("hsusb1_stp", OMAP_PIN_OUTPUT); |
72 | omap_mux_init_signal("hsusb1_clk", OMAP_PIN_OUTPUT); | 85 | omap_mux_init_signal("hsusb1_clk", OMAP_PIN_OUTPUT); |
73 | omap_mux_init_signal("hsusb1_dir", OMAP_PIN_INPUT_PULLDOWN); | 86 | omap_mux_init_signal("hsusb1_dir", OMAP_PIN_INPUT_PULLDOWN); |
@@ -81,7 +94,7 @@ static void setup_ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode) | |||
81 | omap_mux_init_signal("hsusb1_data6", OMAP_PIN_INPUT_PULLDOWN); | 94 | omap_mux_init_signal("hsusb1_data6", OMAP_PIN_INPUT_PULLDOWN); |
82 | omap_mux_init_signal("hsusb1_data7", OMAP_PIN_INPUT_PULLDOWN); | 95 | omap_mux_init_signal("hsusb1_data7", OMAP_PIN_INPUT_PULLDOWN); |
83 | break; | 96 | break; |
84 | case EHCI_HCD_OMAP_MODE_TLL: | 97 | case OMAP_EHCI_PORT_MODE_TLL: |
85 | omap_mux_init_signal("hsusb1_tll_stp", | 98 | omap_mux_init_signal("hsusb1_tll_stp", |
86 | OMAP_PIN_INPUT_PULLUP); | 99 | OMAP_PIN_INPUT_PULLUP); |
87 | omap_mux_init_signal("hsusb1_tll_clk", | 100 | omap_mux_init_signal("hsusb1_tll_clk", |
@@ -107,14 +120,14 @@ static void setup_ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode) | |||
107 | omap_mux_init_signal("hsusb1_tll_data7", | 120 | omap_mux_init_signal("hsusb1_tll_data7", |
108 | OMAP_PIN_INPUT_PULLDOWN); | 121 | OMAP_PIN_INPUT_PULLDOWN); |
109 | break; | 122 | break; |
110 | case EHCI_HCD_OMAP_MODE_UNKNOWN: | 123 | case OMAP_USBHS_PORT_MODE_UNUSED: |
111 | /* FALLTHROUGH */ | 124 | /* FALLTHROUGH */ |
112 | default: | 125 | default: |
113 | break; | 126 | break; |
114 | } | 127 | } |
115 | 128 | ||
116 | switch (port_mode[1]) { | 129 | switch (port_mode[1]) { |
117 | case EHCI_HCD_OMAP_MODE_PHY: | 130 | case OMAP_EHCI_PORT_MODE_PHY: |
118 | omap_mux_init_signal("hsusb2_stp", OMAP_PIN_OUTPUT); | 131 | omap_mux_init_signal("hsusb2_stp", OMAP_PIN_OUTPUT); |
119 | omap_mux_init_signal("hsusb2_clk", OMAP_PIN_OUTPUT); | 132 | omap_mux_init_signal("hsusb2_clk", OMAP_PIN_OUTPUT); |
120 | omap_mux_init_signal("hsusb2_dir", OMAP_PIN_INPUT_PULLDOWN); | 133 | omap_mux_init_signal("hsusb2_dir", OMAP_PIN_INPUT_PULLDOWN); |
@@ -136,7 +149,7 @@ static void setup_ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode) | |||
136 | omap_mux_init_signal("hsusb2_data7", | 149 | omap_mux_init_signal("hsusb2_data7", |
137 | OMAP_PIN_INPUT_PULLDOWN); | 150 | OMAP_PIN_INPUT_PULLDOWN); |
138 | break; | 151 | break; |
139 | case EHCI_HCD_OMAP_MODE_TLL: | 152 | case OMAP_EHCI_PORT_MODE_TLL: |
140 | omap_mux_init_signal("hsusb2_tll_stp", | 153 | omap_mux_init_signal("hsusb2_tll_stp", |
141 | OMAP_PIN_INPUT_PULLUP); | 154 | OMAP_PIN_INPUT_PULLUP); |
142 | omap_mux_init_signal("hsusb2_tll_clk", | 155 | omap_mux_init_signal("hsusb2_tll_clk", |
@@ -162,17 +175,17 @@ static void setup_ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode) | |||
162 | omap_mux_init_signal("hsusb2_tll_data7", | 175 | omap_mux_init_signal("hsusb2_tll_data7", |
163 | OMAP_PIN_INPUT_PULLDOWN); | 176 | OMAP_PIN_INPUT_PULLDOWN); |
164 | break; | 177 | break; |
165 | case EHCI_HCD_OMAP_MODE_UNKNOWN: | 178 | case OMAP_USBHS_PORT_MODE_UNUSED: |
166 | /* FALLTHROUGH */ | 179 | /* FALLTHROUGH */ |
167 | default: | 180 | default: |
168 | break; | 181 | break; |
169 | } | 182 | } |
170 | 183 | ||
171 | switch (port_mode[2]) { | 184 | switch (port_mode[2]) { |
172 | case EHCI_HCD_OMAP_MODE_PHY: | 185 | case OMAP_EHCI_PORT_MODE_PHY: |
173 | printk(KERN_WARNING "Port3 can't be used in PHY mode\n"); | 186 | printk(KERN_WARNING "Port3 can't be used in PHY mode\n"); |
174 | break; | 187 | break; |
175 | case EHCI_HCD_OMAP_MODE_TLL: | 188 | case OMAP_EHCI_PORT_MODE_TLL: |
176 | omap_mux_init_signal("hsusb3_tll_stp", | 189 | omap_mux_init_signal("hsusb3_tll_stp", |
177 | OMAP_PIN_INPUT_PULLUP); | 190 | OMAP_PIN_INPUT_PULLUP); |
178 | omap_mux_init_signal("hsusb3_tll_clk", | 191 | omap_mux_init_signal("hsusb3_tll_clk", |
@@ -198,7 +211,7 @@ static void setup_ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode) | |||
198 | omap_mux_init_signal("hsusb3_tll_data7", | 211 | omap_mux_init_signal("hsusb3_tll_data7", |
199 | OMAP_PIN_INPUT_PULLDOWN); | 212 | OMAP_PIN_INPUT_PULLDOWN); |
200 | break; | 213 | break; |
201 | case EHCI_HCD_OMAP_MODE_UNKNOWN: | 214 | case OMAP_USBHS_PORT_MODE_UNUSED: |
202 | /* FALLTHROUGH */ | 215 | /* FALLTHROUGH */ |
203 | default: | 216 | default: |
204 | break; | 217 | break; |
@@ -207,10 +220,10 @@ static void setup_ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode) | |||
207 | return; | 220 | return; |
208 | } | 221 | } |
209 | 222 | ||
210 | static void setup_4430ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode) | 223 | static void setup_4430ehci_io_mux(const enum usbhs_omap_port_mode *port_mode) |
211 | { | 224 | { |
212 | switch (port_mode[0]) { | 225 | switch (port_mode[0]) { |
213 | case EHCI_HCD_OMAP_MODE_PHY: | 226 | case OMAP_EHCI_PORT_MODE_PHY: |
214 | omap_mux_init_signal("usbb1_ulpiphy_stp", | 227 | omap_mux_init_signal("usbb1_ulpiphy_stp", |
215 | OMAP_PIN_OUTPUT); | 228 | OMAP_PIN_OUTPUT); |
216 | omap_mux_init_signal("usbb1_ulpiphy_clk", | 229 | omap_mux_init_signal("usbb1_ulpiphy_clk", |
@@ -236,7 +249,7 @@ static void setup_4430ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode) | |||
236 | omap_mux_init_signal("usbb1_ulpiphy_dat7", | 249 | omap_mux_init_signal("usbb1_ulpiphy_dat7", |
237 | OMAP_PIN_INPUT_PULLDOWN); | 250 | OMAP_PIN_INPUT_PULLDOWN); |
238 | break; | 251 | break; |
239 | case EHCI_HCD_OMAP_MODE_TLL: | 252 | case OMAP_EHCI_PORT_MODE_TLL: |
240 | omap_mux_init_signal("usbb1_ulpitll_stp", | 253 | omap_mux_init_signal("usbb1_ulpitll_stp", |
241 | OMAP_PIN_INPUT_PULLUP); | 254 | OMAP_PIN_INPUT_PULLUP); |
242 | omap_mux_init_signal("usbb1_ulpitll_clk", | 255 | omap_mux_init_signal("usbb1_ulpitll_clk", |
@@ -262,12 +275,12 @@ static void setup_4430ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode) | |||
262 | omap_mux_init_signal("usbb1_ulpitll_dat7", | 275 | omap_mux_init_signal("usbb1_ulpitll_dat7", |
263 | OMAP_PIN_INPUT_PULLDOWN); | 276 | OMAP_PIN_INPUT_PULLDOWN); |
264 | break; | 277 | break; |
265 | case EHCI_HCD_OMAP_MODE_UNKNOWN: | 278 | case OMAP_USBHS_PORT_MODE_UNUSED: |
266 | default: | 279 | default: |
267 | break; | 280 | break; |
268 | } | 281 | } |
269 | switch (port_mode[1]) { | 282 | switch (port_mode[1]) { |
270 | case EHCI_HCD_OMAP_MODE_PHY: | 283 | case OMAP_EHCI_PORT_MODE_PHY: |
271 | omap_mux_init_signal("usbb2_ulpiphy_stp", | 284 | omap_mux_init_signal("usbb2_ulpiphy_stp", |
272 | OMAP_PIN_OUTPUT); | 285 | OMAP_PIN_OUTPUT); |
273 | omap_mux_init_signal("usbb2_ulpiphy_clk", | 286 | omap_mux_init_signal("usbb2_ulpiphy_clk", |
@@ -293,7 +306,7 @@ static void setup_4430ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode) | |||
293 | omap_mux_init_signal("usbb2_ulpiphy_dat7", | 306 | omap_mux_init_signal("usbb2_ulpiphy_dat7", |
294 | OMAP_PIN_INPUT_PULLDOWN); | 307 | OMAP_PIN_INPUT_PULLDOWN); |
295 | break; | 308 | break; |
296 | case EHCI_HCD_OMAP_MODE_TLL: | 309 | case OMAP_EHCI_PORT_MODE_TLL: |
297 | omap_mux_init_signal("usbb2_ulpitll_stp", | 310 | omap_mux_init_signal("usbb2_ulpitll_stp", |
298 | OMAP_PIN_INPUT_PULLUP); | 311 | OMAP_PIN_INPUT_PULLUP); |
299 | omap_mux_init_signal("usbb2_ulpitll_clk", | 312 | omap_mux_init_signal("usbb2_ulpitll_clk", |
@@ -319,90 +332,13 @@ static void setup_4430ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode) | |||
319 | omap_mux_init_signal("usbb2_ulpitll_dat7", | 332 | omap_mux_init_signal("usbb2_ulpitll_dat7", |
320 | OMAP_PIN_INPUT_PULLDOWN); | 333 | OMAP_PIN_INPUT_PULLDOWN); |
321 | break; | 334 | break; |
322 | case EHCI_HCD_OMAP_MODE_UNKNOWN: | 335 | case OMAP_USBHS_PORT_MODE_UNUSED: |
323 | default: | 336 | default: |
324 | break; | 337 | break; |
325 | } | 338 | } |
326 | } | 339 | } |
327 | 340 | ||
328 | void __init usb_ehci_init(const struct ehci_hcd_omap_platform_data *pdata) | 341 | static void setup_ohci_io_mux(const enum usbhs_omap_port_mode *port_mode) |
329 | { | ||
330 | platform_device_add_data(&ehci_device, pdata, sizeof(*pdata)); | ||
331 | |||
332 | /* Setup Pin IO MUX for EHCI */ | ||
333 | if (cpu_is_omap34xx()) { | ||
334 | ehci_resources[0].start = OMAP34XX_EHCI_BASE; | ||
335 | ehci_resources[0].end = OMAP34XX_EHCI_BASE + SZ_1K - 1; | ||
336 | ehci_resources[1].start = OMAP34XX_UHH_CONFIG_BASE; | ||
337 | ehci_resources[1].end = OMAP34XX_UHH_CONFIG_BASE + SZ_1K - 1; | ||
338 | ehci_resources[2].start = OMAP34XX_USBTLL_BASE; | ||
339 | ehci_resources[2].end = OMAP34XX_USBTLL_BASE + SZ_4K - 1; | ||
340 | ehci_resources[3].start = INT_34XX_EHCI_IRQ; | ||
341 | setup_ehci_io_mux(pdata->port_mode); | ||
342 | } else if (cpu_is_omap44xx()) { | ||
343 | ehci_resources[0].start = OMAP44XX_HSUSB_EHCI_BASE; | ||
344 | ehci_resources[0].end = OMAP44XX_HSUSB_EHCI_BASE + SZ_1K - 1; | ||
345 | ehci_resources[1].start = OMAP44XX_UHH_CONFIG_BASE; | ||
346 | ehci_resources[1].end = OMAP44XX_UHH_CONFIG_BASE + SZ_2K - 1; | ||
347 | ehci_resources[2].start = OMAP44XX_USBTLL_BASE; | ||
348 | ehci_resources[2].end = OMAP44XX_USBTLL_BASE + SZ_4K - 1; | ||
349 | ehci_resources[3].start = OMAP44XX_IRQ_EHCI; | ||
350 | setup_4430ehci_io_mux(pdata->port_mode); | ||
351 | } | ||
352 | |||
353 | if (platform_device_register(&ehci_device) < 0) { | ||
354 | printk(KERN_ERR "Unable to register HS-USB (EHCI) device\n"); | ||
355 | return; | ||
356 | } | ||
357 | } | ||
358 | |||
359 | #else | ||
360 | |||
361 | void __init usb_ehci_init(const struct ehci_hcd_omap_platform_data *pdata) | ||
362 | |||
363 | { | ||
364 | } | ||
365 | |||
366 | #endif /* CONFIG_USB_EHCI_HCD */ | ||
367 | |||
368 | #if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) | ||
369 | |||
370 | static struct resource ohci_resources[] = { | ||
371 | { | ||
372 | .start = OMAP34XX_OHCI_BASE, | ||
373 | .end = OMAP34XX_OHCI_BASE + SZ_1K - 1, | ||
374 | .flags = IORESOURCE_MEM, | ||
375 | }, | ||
376 | { | ||
377 | .start = OMAP34XX_UHH_CONFIG_BASE, | ||
378 | .end = OMAP34XX_UHH_CONFIG_BASE + SZ_1K - 1, | ||
379 | .flags = IORESOURCE_MEM, | ||
380 | }, | ||
381 | { | ||
382 | .start = OMAP34XX_USBTLL_BASE, | ||
383 | .end = OMAP34XX_USBTLL_BASE + SZ_4K - 1, | ||
384 | .flags = IORESOURCE_MEM, | ||
385 | }, | ||
386 | { /* general IRQ */ | ||
387 | .start = INT_34XX_OHCI_IRQ, | ||
388 | .flags = IORESOURCE_IRQ, | ||
389 | } | ||
390 | }; | ||
391 | |||
392 | static u64 ohci_dmamask = DMA_BIT_MASK(32); | ||
393 | |||
394 | static struct platform_device ohci_device = { | ||
395 | .name = "ohci-omap3", | ||
396 | .id = 0, | ||
397 | .dev = { | ||
398 | .dma_mask = &ohci_dmamask, | ||
399 | .coherent_dma_mask = 0xffffffff, | ||
400 | }, | ||
401 | .num_resources = ARRAY_SIZE(ohci_resources), | ||
402 | .resource = ohci_resources, | ||
403 | }; | ||
404 | |||
405 | static void setup_ohci_io_mux(const enum ohci_omap3_port_mode *port_mode) | ||
406 | { | 342 | { |
407 | switch (port_mode[0]) { | 343 | switch (port_mode[0]) { |
408 | case OMAP_OHCI_PORT_MODE_PHY_6PIN_DATSE0: | 344 | case OMAP_OHCI_PORT_MODE_PHY_6PIN_DATSE0: |
@@ -430,7 +366,7 @@ static void setup_ohci_io_mux(const enum ohci_omap3_port_mode *port_mode) | |||
430 | omap_mux_init_signal("mm1_txdat", | 366 | omap_mux_init_signal("mm1_txdat", |
431 | OMAP_PIN_INPUT_PULLDOWN); | 367 | OMAP_PIN_INPUT_PULLDOWN); |
432 | break; | 368 | break; |
433 | case OMAP_OHCI_PORT_MODE_UNUSED: | 369 | case OMAP_USBHS_PORT_MODE_UNUSED: |
434 | /* FALLTHROUGH */ | 370 | /* FALLTHROUGH */ |
435 | default: | 371 | default: |
436 | break; | 372 | break; |
@@ -461,7 +397,7 @@ static void setup_ohci_io_mux(const enum ohci_omap3_port_mode *port_mode) | |||
461 | omap_mux_init_signal("mm2_txdat", | 397 | omap_mux_init_signal("mm2_txdat", |
462 | OMAP_PIN_INPUT_PULLDOWN); | 398 | OMAP_PIN_INPUT_PULLDOWN); |
463 | break; | 399 | break; |
464 | case OMAP_OHCI_PORT_MODE_UNUSED: | 400 | case OMAP_USBHS_PORT_MODE_UNUSED: |
465 | /* FALLTHROUGH */ | 401 | /* FALLTHROUGH */ |
466 | default: | 402 | default: |
467 | break; | 403 | break; |
@@ -492,31 +428,147 @@ static void setup_ohci_io_mux(const enum ohci_omap3_port_mode *port_mode) | |||
492 | omap_mux_init_signal("mm3_txdat", | 428 | omap_mux_init_signal("mm3_txdat", |
493 | OMAP_PIN_INPUT_PULLDOWN); | 429 | OMAP_PIN_INPUT_PULLDOWN); |
494 | break; | 430 | break; |
495 | case OMAP_OHCI_PORT_MODE_UNUSED: | 431 | case OMAP_USBHS_PORT_MODE_UNUSED: |
496 | /* FALLTHROUGH */ | 432 | /* FALLTHROUGH */ |
497 | default: | 433 | default: |
498 | break; | 434 | break; |
499 | } | 435 | } |
500 | } | 436 | } |
501 | 437 | ||
502 | void __init usb_ohci_init(const struct ohci_hcd_omap_platform_data *pdata) | 438 | static void setup_4430ohci_io_mux(const enum usbhs_omap_port_mode *port_mode) |
503 | { | 439 | { |
504 | platform_device_add_data(&ohci_device, pdata, sizeof(*pdata)); | 440 | switch (port_mode[0]) { |
441 | case OMAP_OHCI_PORT_MODE_PHY_6PIN_DATSE0: | ||
442 | case OMAP_OHCI_PORT_MODE_PHY_6PIN_DPDM: | ||
443 | case OMAP_OHCI_PORT_MODE_TLL_6PIN_DATSE0: | ||
444 | case OMAP_OHCI_PORT_MODE_TLL_6PIN_DPDM: | ||
445 | omap_mux_init_signal("usbb1_mm_rxdp", | ||
446 | OMAP_PIN_INPUT_PULLDOWN); | ||
447 | omap_mux_init_signal("usbb1_mm_rxdm", | ||
448 | OMAP_PIN_INPUT_PULLDOWN); | ||
505 | 449 | ||
506 | /* Setup Pin IO MUX for OHCI */ | 450 | case OMAP_OHCI_PORT_MODE_PHY_4PIN_DPDM: |
507 | if (cpu_is_omap34xx()) | 451 | case OMAP_OHCI_PORT_MODE_TLL_4PIN_DPDM: |
452 | omap_mux_init_signal("usbb1_mm_rxrcv", | ||
453 | OMAP_PIN_INPUT_PULLDOWN); | ||
454 | |||
455 | case OMAP_OHCI_PORT_MODE_PHY_3PIN_DATSE0: | ||
456 | case OMAP_OHCI_PORT_MODE_TLL_3PIN_DATSE0: | ||
457 | omap_mux_init_signal("usbb1_mm_txen", | ||
458 | OMAP_PIN_INPUT_PULLDOWN); | ||
459 | |||
460 | |||
461 | case OMAP_OHCI_PORT_MODE_TLL_2PIN_DATSE0: | ||
462 | case OMAP_OHCI_PORT_MODE_TLL_2PIN_DPDM: | ||
463 | omap_mux_init_signal("usbb1_mm_txdat", | ||
464 | OMAP_PIN_INPUT_PULLDOWN); | ||
465 | omap_mux_init_signal("usbb1_mm_txse0", | ||
466 | OMAP_PIN_INPUT_PULLDOWN); | ||
467 | break; | ||
468 | |||
469 | case OMAP_USBHS_PORT_MODE_UNUSED: | ||
470 | default: | ||
471 | break; | ||
472 | } | ||
473 | |||
474 | switch (port_mode[1]) { | ||
475 | case OMAP_OHCI_PORT_MODE_PHY_6PIN_DATSE0: | ||
476 | case OMAP_OHCI_PORT_MODE_PHY_6PIN_DPDM: | ||
477 | case OMAP_OHCI_PORT_MODE_TLL_6PIN_DATSE0: | ||
478 | case OMAP_OHCI_PORT_MODE_TLL_6PIN_DPDM: | ||
479 | omap_mux_init_signal("usbb2_mm_rxdp", | ||
480 | OMAP_PIN_INPUT_PULLDOWN); | ||
481 | omap_mux_init_signal("usbb2_mm_rxdm", | ||
482 | OMAP_PIN_INPUT_PULLDOWN); | ||
483 | |||
484 | case OMAP_OHCI_PORT_MODE_PHY_4PIN_DPDM: | ||
485 | case OMAP_OHCI_PORT_MODE_TLL_4PIN_DPDM: | ||
486 | omap_mux_init_signal("usbb2_mm_rxrcv", | ||
487 | OMAP_PIN_INPUT_PULLDOWN); | ||
488 | |||
489 | case OMAP_OHCI_PORT_MODE_PHY_3PIN_DATSE0: | ||
490 | case OMAP_OHCI_PORT_MODE_TLL_3PIN_DATSE0: | ||
491 | omap_mux_init_signal("usbb2_mm_txen", | ||
492 | OMAP_PIN_INPUT_PULLDOWN); | ||
493 | |||
494 | |||
495 | case OMAP_OHCI_PORT_MODE_TLL_2PIN_DATSE0: | ||
496 | case OMAP_OHCI_PORT_MODE_TLL_2PIN_DPDM: | ||
497 | omap_mux_init_signal("usbb2_mm_txdat", | ||
498 | OMAP_PIN_INPUT_PULLDOWN); | ||
499 | omap_mux_init_signal("usbb2_mm_txse0", | ||
500 | OMAP_PIN_INPUT_PULLDOWN); | ||
501 | break; | ||
502 | |||
503 | case OMAP_USBHS_PORT_MODE_UNUSED: | ||
504 | default: | ||
505 | break; | ||
506 | } | ||
507 | } | ||
508 | |||
509 | void __init usbhs_init(const struct usbhs_omap_board_data *pdata) | ||
510 | { | ||
511 | int i; | ||
512 | |||
513 | for (i = 0; i < OMAP3_HS_USB_PORTS; i++) { | ||
514 | usbhs_data.port_mode[i] = pdata->port_mode[i]; | ||
515 | ohci_data.port_mode[i] = pdata->port_mode[i]; | ||
516 | ehci_data.port_mode[i] = pdata->port_mode[i]; | ||
517 | ehci_data.reset_gpio_port[i] = pdata->reset_gpio_port[i]; | ||
518 | ehci_data.regulator[i] = pdata->regulator[i]; | ||
519 | } | ||
520 | ehci_data.phy_reset = pdata->phy_reset; | ||
521 | ohci_data.es2_compatibility = pdata->es2_compatibility; | ||
522 | usbhs_data.ehci_data = &ehci_data; | ||
523 | usbhs_data.ohci_data = &ohci_data; | ||
524 | |||
525 | if (cpu_is_omap34xx()) { | ||
526 | usbhs_resources[0].start = OMAP34XX_UHH_CONFIG_BASE; | ||
527 | usbhs_resources[0].end = OMAP34XX_UHH_CONFIG_BASE + SZ_1K - 1; | ||
528 | usbhs_resources[1].start = OMAP34XX_USBTLL_BASE; | ||
529 | usbhs_resources[1].end = OMAP34XX_USBTLL_BASE + SZ_4K - 1; | ||
530 | usbhs_resources[2].start = OMAP34XX_EHCI_BASE; | ||
531 | usbhs_resources[2].end = OMAP34XX_EHCI_BASE + SZ_1K - 1; | ||
532 | usbhs_resources[3].start = INT_34XX_EHCI_IRQ; | ||
533 | usbhs_resources[4].start = OMAP34XX_OHCI_BASE; | ||
534 | usbhs_resources[4].end = OMAP34XX_OHCI_BASE + SZ_1K - 1; | ||
535 | usbhs_resources[5].start = INT_34XX_OHCI_IRQ; | ||
536 | setup_ehci_io_mux(pdata->port_mode); | ||
508 | setup_ohci_io_mux(pdata->port_mode); | 537 | setup_ohci_io_mux(pdata->port_mode); |
538 | } else if (cpu_is_omap44xx()) { | ||
539 | usbhs_resources[0].start = OMAP44XX_UHH_CONFIG_BASE; | ||
540 | usbhs_resources[0].end = OMAP44XX_UHH_CONFIG_BASE + SZ_1K - 1; | ||
541 | usbhs_resources[1].start = OMAP44XX_USBTLL_BASE; | ||
542 | usbhs_resources[1].end = OMAP44XX_USBTLL_BASE + SZ_4K - 1; | ||
543 | usbhs_resources[2].start = OMAP44XX_HSUSB_EHCI_BASE; | ||
544 | usbhs_resources[2].end = OMAP44XX_HSUSB_EHCI_BASE + SZ_1K - 1; | ||
545 | usbhs_resources[3].start = OMAP44XX_IRQ_EHCI; | ||
546 | usbhs_resources[4].start = OMAP44XX_HSUSB_OHCI_BASE; | ||
547 | usbhs_resources[4].end = OMAP44XX_HSUSB_OHCI_BASE + SZ_1K - 1; | ||
548 | usbhs_resources[5].start = OMAP44XX_IRQ_OHCI; | ||
549 | setup_4430ehci_io_mux(pdata->port_mode); | ||
550 | setup_4430ohci_io_mux(pdata->port_mode); | ||
551 | } | ||
509 | 552 | ||
510 | if (platform_device_register(&ohci_device) < 0) { | 553 | if (platform_device_add_data(&usbhs_device, |
511 | pr_err("Unable to register FS-USB (OHCI) device\n"); | 554 | &usbhs_data, sizeof(usbhs_data)) < 0) { |
512 | return; | 555 | printk(KERN_ERR "USBHS platform_device_add_data failed\n"); |
556 | goto init_end; | ||
513 | } | 557 | } |
558 | |||
559 | if (platform_device_register(&usbhs_device) < 0) | ||
560 | printk(KERN_ERR "USBHS platform_device_register failed\n"); | ||
561 | |||
562 | init_end: | ||
563 | return; | ||
514 | } | 564 | } |
515 | 565 | ||
516 | #else | 566 | #else |
517 | 567 | ||
518 | void __init usb_ohci_init(const struct ohci_hcd_omap_platform_data *pdata) | 568 | void __init usbhs_init(const struct usbhs_omap_board_data *pdata) |
519 | { | 569 | { |
520 | } | 570 | } |
521 | 571 | ||
522 | #endif /* CONFIG_USB_OHCI_HCD */ | 572 | #endif |
573 | |||
574 | |||
diff --git a/arch/arm/mach-omap2/usb-musb.c b/arch/arm/mach-omap2/usb-musb.c index 5298949d4b11..241fc94b4116 100644 --- a/arch/arm/mach-omap2/usb-musb.c +++ b/arch/arm/mach-omap2/usb-musb.c | |||
@@ -214,6 +214,10 @@ void __init usb_musb_init(struct omap_musb_board_data *board_data) | |||
214 | 214 | ||
215 | if (platform_device_register(&musb_device) < 0) | 215 | if (platform_device_register(&musb_device) < 0) |
216 | printk(KERN_ERR "Unable to register HS-USB (MUSB) device\n"); | 216 | printk(KERN_ERR "Unable to register HS-USB (MUSB) device\n"); |
217 | |||
218 | if (cpu_is_omap44xx()) | ||
219 | omap4430_phy_init(dev); | ||
220 | |||
217 | } | 221 | } |
218 | 222 | ||
219 | #else | 223 | #else |
diff --git a/arch/arm/mach-omap2/voltage.c b/arch/arm/mach-omap2/voltage.c index ed6079c94c57..12be525b8df4 100644 --- a/arch/arm/mach-omap2/voltage.c +++ b/arch/arm/mach-omap2/voltage.c | |||
@@ -471,6 +471,7 @@ static void __init vdd_debugfs_init(struct omap_vdd_info *vdd) | |||
471 | strcat(name, vdd->voltdm.name); | 471 | strcat(name, vdd->voltdm.name); |
472 | 472 | ||
473 | vdd->debug_dir = debugfs_create_dir(name, voltage_dir); | 473 | vdd->debug_dir = debugfs_create_dir(name, voltage_dir); |
474 | kfree(name); | ||
474 | if (IS_ERR(vdd->debug_dir)) { | 475 | if (IS_ERR(vdd->debug_dir)) { |
475 | pr_warning("%s: Unable to create debugfs directory for" | 476 | pr_warning("%s: Unable to create debugfs directory for" |
476 | " vdd_%s\n", __func__, vdd->voltdm.name); | 477 | " vdd_%s\n", __func__, vdd->voltdm.name); |