diff options
Diffstat (limited to 'arch/arm/mach-omap2/serial.c')
| -rw-r--r-- | arch/arm/mach-omap2/serial.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index c1b93c752d70..0405c8190803 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c | |||
| @@ -29,11 +29,11 @@ | |||
| 29 | 29 | ||
| 30 | #include <plat/omap-serial.h> | 30 | #include <plat/omap-serial.h> |
| 31 | #include "common.h" | 31 | #include "common.h" |
| 32 | #include <plat/board.h> | ||
| 33 | #include <plat/dma.h> | 32 | #include <plat/dma.h> |
| 34 | #include <plat/omap_hwmod.h> | 33 | #include <plat/omap_hwmod.h> |
| 35 | #include <plat/omap_device.h> | 34 | #include <plat/omap_device.h> |
| 36 | #include <plat/omap-pm.h> | 35 | #include <plat/omap-pm.h> |
| 36 | #include <plat/serial.h> | ||
| 37 | 37 | ||
| 38 | #include "prm2xxx_3xxx.h" | 38 | #include "prm2xxx_3xxx.h" |
| 39 | #include "pm.h" | 39 | #include "pm.h" |
| @@ -81,8 +81,9 @@ static struct omap_uart_port_info omap_serial_default_info[] __initdata = { | |||
| 81 | }; | 81 | }; |
| 82 | 82 | ||
| 83 | #ifdef CONFIG_PM | 83 | #ifdef CONFIG_PM |
| 84 | static void omap_uart_enable_wakeup(struct platform_device *pdev, bool enable) | 84 | static void omap_uart_enable_wakeup(struct device *dev, bool enable) |
| 85 | { | 85 | { |
| 86 | struct platform_device *pdev = to_platform_device(dev); | ||
| 86 | struct omap_device *od = to_omap_device(pdev); | 87 | struct omap_device *od = to_omap_device(pdev); |
| 87 | 88 | ||
| 88 | if (!od) | 89 | if (!od) |
| @@ -99,15 +100,17 @@ static void omap_uart_enable_wakeup(struct platform_device *pdev, bool enable) | |||
| 99 | * in Smartidle Mode When Configured for DMA Operations. | 100 | * in Smartidle Mode When Configured for DMA Operations. |
| 100 | * WA: configure uart in force idle mode. | 101 | * WA: configure uart in force idle mode. |
| 101 | */ | 102 | */ |
| 102 | static void omap_uart_set_noidle(struct platform_device *pdev) | 103 | static void omap_uart_set_noidle(struct device *dev) |
| 103 | { | 104 | { |
| 105 | struct platform_device *pdev = to_platform_device(dev); | ||
| 104 | struct omap_device *od = to_omap_device(pdev); | 106 | struct omap_device *od = to_omap_device(pdev); |
| 105 | 107 | ||
| 106 | omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_NO); | 108 | omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_NO); |
| 107 | } | 109 | } |
| 108 | 110 | ||
| 109 | static void omap_uart_set_smartidle(struct platform_device *pdev) | 111 | static void omap_uart_set_smartidle(struct device *dev) |
| 110 | { | 112 | { |
| 113 | struct platform_device *pdev = to_platform_device(dev); | ||
| 111 | struct omap_device *od = to_omap_device(pdev); | 114 | struct omap_device *od = to_omap_device(pdev); |
| 112 | u8 idlemode; | 115 | u8 idlemode; |
| 113 | 116 | ||
| @@ -120,10 +123,10 @@ static void omap_uart_set_smartidle(struct platform_device *pdev) | |||
| 120 | } | 123 | } |
| 121 | 124 | ||
| 122 | #else | 125 | #else |
| 123 | static void omap_uart_enable_wakeup(struct platform_device *pdev, bool enable) | 126 | static void omap_uart_enable_wakeup(struct device *dev, bool enable) |
| 124 | {} | 127 | {} |
| 125 | static void omap_uart_set_noidle(struct platform_device *pdev) {} | 128 | static void omap_uart_set_noidle(struct device *dev) {} |
| 126 | static void omap_uart_set_smartidle(struct platform_device *pdev) {} | 129 | static void omap_uart_set_smartidle(struct device *dev) {} |
| 127 | #endif /* CONFIG_PM */ | 130 | #endif /* CONFIG_PM */ |
| 128 | 131 | ||
| 129 | #ifdef CONFIG_OMAP_MUX | 132 | #ifdef CONFIG_OMAP_MUX |
| @@ -229,9 +232,8 @@ static int __init omap_serial_early_init(void) | |||
| 229 | 232 | ||
| 230 | if (console_loglevel >= 10) { | 233 | if (console_loglevel >= 10) { |
| 231 | uart_debug = true; | 234 | uart_debug = true; |
| 232 | pr_info("%s used as console in debug mode" | 235 | pr_info("%s used as console in debug mode: uart%d clocks will not be gated", |
| 233 | " uart%d clocks will not be" | 236 | uart_name, uart->num); |
| 234 | " gated", uart_name, uart->num); | ||
| 235 | } | 237 | } |
| 236 | 238 | ||
| 237 | if (cmdline_find_option("no_console_suspend")) | 239 | if (cmdline_find_option("no_console_suspend")) |
| @@ -304,6 +306,9 @@ void __init omap_serial_init_port(struct omap_board_data *bdata, | |||
| 304 | omap_up.dma_rx_timeout = info->dma_rx_timeout; | 306 | omap_up.dma_rx_timeout = info->dma_rx_timeout; |
| 305 | omap_up.dma_rx_poll_rate = info->dma_rx_poll_rate; | 307 | omap_up.dma_rx_poll_rate = info->dma_rx_poll_rate; |
| 306 | omap_up.autosuspend_timeout = info->autosuspend_timeout; | 308 | omap_up.autosuspend_timeout = info->autosuspend_timeout; |
| 309 | omap_up.DTR_gpio = info->DTR_gpio; | ||
| 310 | omap_up.DTR_inverted = info->DTR_inverted; | ||
| 311 | omap_up.DTR_present = info->DTR_present; | ||
| 307 | 312 | ||
| 308 | pdata = &omap_up; | 313 | pdata = &omap_up; |
| 309 | pdata_size = sizeof(struct omap_uart_port_info); | 314 | pdata_size = sizeof(struct omap_uart_port_info); |
| @@ -313,8 +318,11 @@ void __init omap_serial_init_port(struct omap_board_data *bdata, | |||
| 313 | 318 | ||
| 314 | pdev = omap_device_build(name, uart->num, oh, pdata, pdata_size, | 319 | pdev = omap_device_build(name, uart->num, oh, pdata, pdata_size, |
| 315 | NULL, 0, false); | 320 | NULL, 0, false); |
| 316 | WARN(IS_ERR(pdev), "Could not build omap_device for %s: %s.\n", | 321 | if (IS_ERR(pdev)) { |
| 317 | name, oh->name); | 322 | WARN(1, "Could not build omap_device for %s: %s.\n", name, |
| 323 | oh->name); | ||
| 324 | return; | ||
| 325 | } | ||
| 318 | 326 | ||
| 319 | if ((console_uart_id == bdata->id) && no_console_suspend) | 327 | if ((console_uart_id == bdata->id) && no_console_suspend) |
| 320 | omap_device_disable_idle_on_suspend(pdev); | 328 | omap_device_disable_idle_on_suspend(pdev); |
