Serial/TTY fixes for the 3.3-rc3 tree
Just a few new device ids, omap serial driver regression fixes, and a build fix for the 8250 driver movement. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) iEYEABECAAYFAk80KZgACgkQMUfUDdst+yk0HgCeIdU3VTWqdxZDXp3G1sFIXZ1b 47YAnRAMAar+/aLaNhqGrcz7aa5y2cUU =8sr8 -----END PGP SIGNATURE----- Merge tag 'tty-3.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty Serial/TTY fixes for the 3.3-rc3 tree Just a few new device ids, omap serial driver regression fixes, and a build fix for the 8250 driver movement. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> * tag 'tty-3.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: tty: serial: omap-serial: wakeup latency constraint is in microseconds, not milliseconds tty: serial: OMAP: block idle while the UART is transferring data in PIO mode tty: serial: OMAP: use a 1-byte RX FIFO threshold in PIO mode m32r: relocate drivers back out of 8250 dir tty: fix a build failure on sparc serial: samsung: Add support for EXYNOS5250 serial: samsung: Add support for EXYNOS4212 and EXYNOS4412 drivers/tty/vt/vt_ioctl.c: fix KDFONTOP 32bit compatibility layer
This commit is contained in:
commit
19e00f2f1d
@ -107,18 +107,18 @@ static void omap_uart_set_noidle(struct platform_device *pdev)
|
||||
omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_NO);
|
||||
}
|
||||
|
||||
static void omap_uart_set_forceidle(struct platform_device *pdev)
|
||||
static void omap_uart_set_smartidle(struct platform_device *pdev)
|
||||
{
|
||||
struct omap_device *od = to_omap_device(pdev);
|
||||
|
||||
omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_FORCE);
|
||||
omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_SMART);
|
||||
}
|
||||
|
||||
#else
|
||||
static void omap_uart_enable_wakeup(struct platform_device *pdev, bool enable)
|
||||
{}
|
||||
static void omap_uart_set_noidle(struct platform_device *pdev) {}
|
||||
static void omap_uart_set_forceidle(struct platform_device *pdev) {}
|
||||
static void omap_uart_set_smartidle(struct platform_device *pdev) {}
|
||||
#endif /* CONFIG_PM */
|
||||
|
||||
#ifdef CONFIG_OMAP_MUX
|
||||
@ -349,7 +349,7 @@ void __init omap_serial_init_port(struct omap_board_data *bdata,
|
||||
omap_up.uartclk = OMAP24XX_BASE_BAUD * 16;
|
||||
omap_up.flags = UPF_BOOT_AUTOCONF;
|
||||
omap_up.get_context_loss_count = omap_pm_get_dev_context_loss_count;
|
||||
omap_up.set_forceidle = omap_uart_set_forceidle;
|
||||
omap_up.set_forceidle = omap_uart_set_smartidle;
|
||||
omap_up.set_noidle = omap_uart_set_noidle;
|
||||
omap_up.enable_wakeup = omap_uart_enable_wakeup;
|
||||
omap_up.dma_rx_buf_size = info->dma_rx_buf_size;
|
||||
|
@ -45,7 +45,7 @@
|
||||
#include "8250.h"
|
||||
|
||||
#ifdef CONFIG_SPARC
|
||||
#include "suncore.h"
|
||||
#include "../suncore.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -46,6 +46,13 @@
|
||||
|
||||
#define DEFAULT_CLK_SPEED 48000000 /* 48Mhz*/
|
||||
|
||||
/* SCR register bitmasks */
|
||||
#define OMAP_UART_SCR_RX_TRIG_GRANU1_MASK (1 << 7)
|
||||
|
||||
/* FCR register bitmasks */
|
||||
#define OMAP_UART_FCR_RX_FIFO_TRIG_SHIFT 6
|
||||
#define OMAP_UART_FCR_RX_FIFO_TRIG_MASK (0x3 << 6)
|
||||
|
||||
static struct uart_omap_port *ui[OMAP_MAX_HSUART_PORTS];
|
||||
|
||||
/* Forward declaration of functions */
|
||||
@ -129,6 +136,7 @@ static void serial_omap_enable_ms(struct uart_port *port)
|
||||
static void serial_omap_stop_tx(struct uart_port *port)
|
||||
{
|
||||
struct uart_omap_port *up = (struct uart_omap_port *)port;
|
||||
struct omap_uart_port_info *pdata = up->pdev->dev.platform_data;
|
||||
|
||||
if (up->use_dma &&
|
||||
up->uart_dma.tx_dma_channel != OMAP_UART_DMA_CH_FREE) {
|
||||
@ -151,6 +159,9 @@ static void serial_omap_stop_tx(struct uart_port *port)
|
||||
serial_out(up, UART_IER, up->ier);
|
||||
}
|
||||
|
||||
if (!up->use_dma && pdata->set_forceidle)
|
||||
pdata->set_forceidle(up->pdev);
|
||||
|
||||
pm_runtime_mark_last_busy(&up->pdev->dev);
|
||||
pm_runtime_put_autosuspend(&up->pdev->dev);
|
||||
}
|
||||
@ -279,6 +290,7 @@ static inline void serial_omap_enable_ier_thri(struct uart_omap_port *up)
|
||||
static void serial_omap_start_tx(struct uart_port *port)
|
||||
{
|
||||
struct uart_omap_port *up = (struct uart_omap_port *)port;
|
||||
struct omap_uart_port_info *pdata = up->pdev->dev.platform_data;
|
||||
struct circ_buf *xmit;
|
||||
unsigned int start;
|
||||
int ret = 0;
|
||||
@ -286,6 +298,8 @@ static void serial_omap_start_tx(struct uart_port *port)
|
||||
if (!up->use_dma) {
|
||||
pm_runtime_get_sync(&up->pdev->dev);
|
||||
serial_omap_enable_ier_thri(up);
|
||||
if (pdata->set_noidle)
|
||||
pdata->set_noidle(up->pdev);
|
||||
pm_runtime_mark_last_busy(&up->pdev->dev);
|
||||
pm_runtime_put_autosuspend(&up->pdev->dev);
|
||||
return;
|
||||
@ -726,8 +740,7 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
|
||||
quot = serial_omap_get_divisor(port, baud);
|
||||
|
||||
/* calculate wakeup latency constraint */
|
||||
up->calc_latency = (1000000 * up->port.fifosize) /
|
||||
(1000 * baud / 8);
|
||||
up->calc_latency = (USEC_PER_SEC * up->port.fifosize) / (baud / 8);
|
||||
up->latency = up->calc_latency;
|
||||
schedule_work(&up->qos_work);
|
||||
|
||||
@ -811,14 +824,21 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
|
||||
up->mcr = serial_in(up, UART_MCR);
|
||||
serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR);
|
||||
/* FIFO ENABLE, DMA MODE */
|
||||
serial_out(up, UART_FCR, up->fcr);
|
||||
serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
|
||||
|
||||
up->scr |= OMAP_UART_SCR_RX_TRIG_GRANU1_MASK;
|
||||
|
||||
if (up->use_dma) {
|
||||
serial_out(up, UART_TI752_TLR, 0);
|
||||
up->scr |= (UART_FCR_TRIGGER_4 | UART_FCR_TRIGGER_8);
|
||||
up->scr |= UART_FCR_TRIGGER_4;
|
||||
} else {
|
||||
/* Set receive FIFO threshold to 1 byte */
|
||||
up->fcr &= ~OMAP_UART_FCR_RX_FIFO_TRIG_MASK;
|
||||
up->fcr |= (0x1 << OMAP_UART_FCR_RX_FIFO_TRIG_SHIFT);
|
||||
}
|
||||
|
||||
serial_out(up, UART_FCR, up->fcr);
|
||||
serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
|
||||
|
||||
serial_out(up, UART_OMAP_SCR, up->scr);
|
||||
|
||||
serial_out(up, UART_EFR, up->efr);
|
||||
|
@ -1593,7 +1593,8 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
|
||||
#define S5PV210_SERIAL_DRV_DATA (kernel_ulong_t)NULL
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_EXYNOS4210
|
||||
#if defined(CONFIG_CPU_EXYNOS4210) || defined(CONFIG_SOC_EXYNOS4212) || \
|
||||
defined(CONFIG_SOC_EXYNOS4412) || defined(CONFIG_SOC_EXYNOS5250)
|
||||
static struct s3c24xx_serial_drv_data exynos4210_serial_drv_data = {
|
||||
.info = &(struct s3c24xx_uart_info) {
|
||||
.name = "Samsung Exynos4 UART",
|
||||
|
Loading…
Reference in New Issue
Block a user