diff options
| -rw-r--r-- | drivers/tty/serial/imx.c | 1 | ||||
| -rw-r--r-- | drivers/tty/serial/max310x.c | 2 | ||||
| -rw-r--r-- | drivers/tty/serial/msm_serial.c | 5 | ||||
| -rw-r--r-- | drivers/tty/serial/sh-sci.c | 7 | ||||
| -rw-r--r-- | drivers/tty/vt/vt.c | 11 | ||||
| -rw-r--r-- | drivers/video/fbdev/core/fbcon.c | 2 |
6 files changed, 22 insertions, 6 deletions
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index dff75dc94731..8b752e895053 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c | |||
| @@ -1165,7 +1165,6 @@ static void imx_uart_clear_rx_errors(struct imx_port *sport) | |||
| 1165 | sport->port.icount.buf_overrun++; | 1165 | sport->port.icount.buf_overrun++; |
| 1166 | tty_flip_buffer_push(port); | 1166 | tty_flip_buffer_push(port); |
| 1167 | } else { | 1167 | } else { |
| 1168 | dev_err(sport->port.dev, "DMA transaction error.\n"); | ||
| 1169 | if (usr1 & USR1_FRAMERR) { | 1168 | if (usr1 & USR1_FRAMERR) { |
| 1170 | sport->port.icount.frame++; | 1169 | sport->port.icount.frame++; |
| 1171 | imx_uart_writel(sport, USR1_FRAMERR, USR1); | 1170 | imx_uart_writel(sport, USR1_FRAMERR, USR1); |
diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c index 450ba6d7996c..e5aebbf5f302 100644 --- a/drivers/tty/serial/max310x.c +++ b/drivers/tty/serial/max310x.c | |||
| @@ -581,7 +581,7 @@ static int max310x_set_ref_clk(struct device *dev, struct max310x_port *s, | |||
| 581 | } | 581 | } |
| 582 | 582 | ||
| 583 | /* Configure clock source */ | 583 | /* Configure clock source */ |
| 584 | clksrc = xtal ? MAX310X_CLKSRC_CRYST_BIT : MAX310X_CLKSRC_EXTCLK_BIT; | 584 | clksrc = MAX310X_CLKSRC_EXTCLK_BIT | (xtal ? MAX310X_CLKSRC_CRYST_BIT : 0); |
| 585 | 585 | ||
| 586 | /* Configure PLL */ | 586 | /* Configure PLL */ |
| 587 | if (pllcfg) { | 587 | if (pllcfg) { |
diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c index 109096033bb1..23833ad952ba 100644 --- a/drivers/tty/serial/msm_serial.c +++ b/drivers/tty/serial/msm_serial.c | |||
| @@ -860,6 +860,7 @@ static void msm_handle_tx(struct uart_port *port) | |||
| 860 | struct circ_buf *xmit = &msm_port->uart.state->xmit; | 860 | struct circ_buf *xmit = &msm_port->uart.state->xmit; |
| 861 | struct msm_dma *dma = &msm_port->tx_dma; | 861 | struct msm_dma *dma = &msm_port->tx_dma; |
| 862 | unsigned int pio_count, dma_count, dma_min; | 862 | unsigned int pio_count, dma_count, dma_min; |
| 863 | char buf[4] = { 0 }; | ||
| 863 | void __iomem *tf; | 864 | void __iomem *tf; |
| 864 | int err = 0; | 865 | int err = 0; |
| 865 | 866 | ||
| @@ -869,10 +870,12 @@ static void msm_handle_tx(struct uart_port *port) | |||
| 869 | else | 870 | else |
| 870 | tf = port->membase + UART_TF; | 871 | tf = port->membase + UART_TF; |
| 871 | 872 | ||
| 873 | buf[0] = port->x_char; | ||
| 874 | |||
| 872 | if (msm_port->is_uartdm) | 875 | if (msm_port->is_uartdm) |
| 873 | msm_reset_dm_count(port, 1); | 876 | msm_reset_dm_count(port, 1); |
| 874 | 877 | ||
| 875 | iowrite8_rep(tf, &port->x_char, 1); | 878 | iowrite32_rep(tf, buf, 1); |
| 876 | port->icount.tx++; | 879 | port->icount.tx++; |
| 877 | port->x_char = 0; | 880 | port->x_char = 0; |
| 878 | return; | 881 | return; |
diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index 3cd139752d3f..abc705716aa0 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c | |||
| @@ -1557,6 +1557,13 @@ static void sci_request_dma(struct uart_port *port) | |||
| 1557 | 1557 | ||
| 1558 | dev_dbg(port->dev, "%s: port %d\n", __func__, port->line); | 1558 | dev_dbg(port->dev, "%s: port %d\n", __func__, port->line); |
| 1559 | 1559 | ||
| 1560 | /* | ||
| 1561 | * DMA on console may interfere with Kernel log messages which use | ||
| 1562 | * plain putchar(). So, simply don't use it with a console. | ||
| 1563 | */ | ||
| 1564 | if (uart_console(port)) | ||
| 1565 | return; | ||
| 1566 | |||
| 1560 | if (!port->dev->of_node) | 1567 | if (!port->dev->of_node) |
| 1561 | return; | 1568 | return; |
| 1562 | 1569 | ||
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index fdd12f8c3deb..5c0ca1c24b6f 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c | |||
| @@ -1056,6 +1056,13 @@ static void visual_init(struct vc_data *vc, int num, int init) | |||
| 1056 | vc->vc_screenbuf_size = vc->vc_rows * vc->vc_size_row; | 1056 | vc->vc_screenbuf_size = vc->vc_rows * vc->vc_size_row; |
| 1057 | } | 1057 | } |
| 1058 | 1058 | ||
| 1059 | |||
| 1060 | static void visual_deinit(struct vc_data *vc) | ||
| 1061 | { | ||
| 1062 | vc->vc_sw->con_deinit(vc); | ||
| 1063 | module_put(vc->vc_sw->owner); | ||
| 1064 | } | ||
| 1065 | |||
| 1059 | int vc_allocate(unsigned int currcons) /* return 0 on success */ | 1066 | int vc_allocate(unsigned int currcons) /* return 0 on success */ |
| 1060 | { | 1067 | { |
| 1061 | struct vt_notifier_param param; | 1068 | struct vt_notifier_param param; |
| @@ -1103,6 +1110,7 @@ int vc_allocate(unsigned int currcons) /* return 0 on success */ | |||
| 1103 | 1110 | ||
| 1104 | return 0; | 1111 | return 0; |
| 1105 | err_free: | 1112 | err_free: |
| 1113 | visual_deinit(vc); | ||
| 1106 | kfree(vc); | 1114 | kfree(vc); |
| 1107 | vc_cons[currcons].d = NULL; | 1115 | vc_cons[currcons].d = NULL; |
| 1108 | return -ENOMEM; | 1116 | return -ENOMEM; |
| @@ -1331,9 +1339,8 @@ struct vc_data *vc_deallocate(unsigned int currcons) | |||
| 1331 | param.vc = vc = vc_cons[currcons].d; | 1339 | param.vc = vc = vc_cons[currcons].d; |
| 1332 | atomic_notifier_call_chain(&vt_notifier_list, VT_DEALLOCATE, ¶m); | 1340 | atomic_notifier_call_chain(&vt_notifier_list, VT_DEALLOCATE, ¶m); |
| 1333 | vcs_remove_sysfs(currcons); | 1341 | vcs_remove_sysfs(currcons); |
| 1334 | vc->vc_sw->con_deinit(vc); | 1342 | visual_deinit(vc); |
| 1335 | put_pid(vc->vt_pid); | 1343 | put_pid(vc->vt_pid); |
| 1336 | module_put(vc->vc_sw->owner); | ||
| 1337 | vc_uniscr_set(vc, NULL); | 1344 | vc_uniscr_set(vc, NULL); |
| 1338 | kfree(vc->vc_screenbuf); | 1345 | kfree(vc->vc_screenbuf); |
| 1339 | vc_cons[currcons].d = NULL; | 1346 | vc_cons[currcons].d = NULL; |
diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index 786f9aab55df..a9c69ae30878 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c | |||
| @@ -1248,7 +1248,7 @@ finished: | |||
| 1248 | if (free_font) | 1248 | if (free_font) |
| 1249 | vc->vc_font.data = NULL; | 1249 | vc->vc_font.data = NULL; |
| 1250 | 1250 | ||
| 1251 | if (vc->vc_hi_font_mask) | 1251 | if (vc->vc_hi_font_mask && vc->vc_screenbuf) |
| 1252 | set_vc_hi_font(vc, false); | 1252 | set_vc_hi_font(vc, false); |
| 1253 | 1253 | ||
| 1254 | if (!con_is_bound(&fb_con)) | 1254 | if (!con_is_bound(&fb_con)) |
