TTY/Serial fixes for 4.1-rc2
Here are some small tty/serial driver fixes for 4.1-rc2. They include some minor fixes that resolve reported issues, and a new device quirk. All have been in linux-next succesfully. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEYEABECAAYFAlVCMgMACgkQMUfUDdst+ylmRwCgzADm9JPmMS7DX0g21mfVSeQK nI0AoIiYm3HHxu7wma7o3DowGLvuScwt =8lGO -----END PGP SIGNATURE----- Merge tag 'tty-4.1-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty Pull tty/serial fixes from Greg KH: "Here are some small tty/serial driver fixes for 4.1-rc2. They include some minor fixes that resolve reported issues, and a new device quirk. All have been in linux-next succesfully" * tag 'tty-4.1-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: serial: 8250_pci: Add support for 16 port Exar boards serial: samsung: fix serial console break tty/serial: at91: maxburst was missing for dma transfers serial: of-serial: Remove device_type = "serial" registration serial: xilinx: Use platform_get_irq to get irq description structure serial: core: Fix kernel-doc build warnings tty: Re-add external interface for tty_set_termios()
This commit is contained in:
commit
9263a06a58
|
@ -1998,6 +1998,8 @@ pci_wch_ch38x_setup(struct serial_private *priv,
|
|||
#define PCIE_DEVICE_ID_WCH_CH382_2S1P 0x3250
|
||||
#define PCIE_DEVICE_ID_WCH_CH384_4S 0x3470
|
||||
|
||||
#define PCI_DEVICE_ID_EXAR_XR17V8358 0x8358
|
||||
|
||||
/* Unknown vendors/cards - this should not be in linux/pci_ids.h */
|
||||
#define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584
|
||||
#define PCI_SUBDEVICE_ID_UNKNOWN_0x1588 0x1588
|
||||
|
@ -2520,6 +2522,13 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
|
|||
.subdevice = PCI_ANY_ID,
|
||||
.setup = pci_xr17v35x_setup,
|
||||
},
|
||||
{
|
||||
.vendor = PCI_VENDOR_ID_EXAR,
|
||||
.device = PCI_DEVICE_ID_EXAR_XR17V8358,
|
||||
.subvendor = PCI_ANY_ID,
|
||||
.subdevice = PCI_ANY_ID,
|
||||
.setup = pci_xr17v35x_setup,
|
||||
},
|
||||
/*
|
||||
* Xircom cards
|
||||
*/
|
||||
|
@ -2999,6 +3008,7 @@ enum pci_board_num_t {
|
|||
pbn_exar_XR17V352,
|
||||
pbn_exar_XR17V354,
|
||||
pbn_exar_XR17V358,
|
||||
pbn_exar_XR17V8358,
|
||||
pbn_exar_ibm_saturn,
|
||||
pbn_pasemi_1682M,
|
||||
pbn_ni8430_2,
|
||||
|
@ -3685,6 +3695,14 @@ static struct pciserial_board pci_boards[] = {
|
|||
.reg_shift = 0,
|
||||
.first_offset = 0,
|
||||
},
|
||||
[pbn_exar_XR17V8358] = {
|
||||
.flags = FL_BASE0,
|
||||
.num_ports = 16,
|
||||
.base_baud = 7812500,
|
||||
.uart_offset = 0x400,
|
||||
.reg_shift = 0,
|
||||
.first_offset = 0,
|
||||
},
|
||||
[pbn_exar_ibm_saturn] = {
|
||||
.flags = FL_BASE0,
|
||||
.num_ports = 1,
|
||||
|
@ -5080,7 +5098,7 @@ static struct pci_device_id serial_pci_tbl[] = {
|
|||
0,
|
||||
0, pbn_exar_XR17C158 },
|
||||
/*
|
||||
* Exar Corp. XR17V35[248] Dual/Quad/Octal PCIe UARTs
|
||||
* Exar Corp. XR17V[48]35[248] Dual/Quad/Octal/Hexa PCIe UARTs
|
||||
*/
|
||||
{ PCI_VENDOR_ID_EXAR, PCI_DEVICE_ID_EXAR_XR17V352,
|
||||
PCI_ANY_ID, PCI_ANY_ID,
|
||||
|
@ -5094,7 +5112,10 @@ static struct pci_device_id serial_pci_tbl[] = {
|
|||
PCI_ANY_ID, PCI_ANY_ID,
|
||||
0,
|
||||
0, pbn_exar_XR17V358 },
|
||||
|
||||
{ PCI_VENDOR_ID_EXAR, PCI_DEVICE_ID_EXAR_XR17V8358,
|
||||
PCI_ANY_ID, PCI_ANY_ID,
|
||||
0,
|
||||
0, pbn_exar_XR17V8358 },
|
||||
/*
|
||||
* Topic TP560 Data/Fax/Voice 56k modem (reported by Evan Clarke)
|
||||
*/
|
||||
|
|
|
@ -880,6 +880,7 @@ static int atmel_prepare_tx_dma(struct uart_port *port)
|
|||
config.direction = DMA_MEM_TO_DEV;
|
||||
config.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;
|
||||
config.dst_addr = port->mapbase + ATMEL_US_THR;
|
||||
config.dst_maxburst = 1;
|
||||
|
||||
ret = dmaengine_slave_config(atmel_port->chan_tx,
|
||||
&config);
|
||||
|
@ -1059,6 +1060,7 @@ static int atmel_prepare_rx_dma(struct uart_port *port)
|
|||
config.direction = DMA_DEV_TO_MEM;
|
||||
config.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;
|
||||
config.src_addr = port->mapbase + ATMEL_US_RHR;
|
||||
config.src_maxburst = 1;
|
||||
|
||||
ret = dmaengine_slave_config(atmel_port->chan_rx,
|
||||
&config);
|
||||
|
|
|
@ -346,7 +346,6 @@ static const struct of_device_id of_platform_serial_table[] = {
|
|||
{ .compatible = "ibm,qpace-nwp-serial",
|
||||
.data = (void *)PORT_NWPSERIAL, },
|
||||
#endif
|
||||
{ .type = "serial", .data = (void *)PORT_UNKNOWN, },
|
||||
{ /* end of list */ },
|
||||
};
|
||||
|
||||
|
|
|
@ -1068,8 +1068,9 @@ static int s3c64xx_serial_startup(struct uart_port *port)
|
|||
spin_lock_irqsave(&port->lock, flags);
|
||||
|
||||
ufcon = rd_regl(port, S3C2410_UFCON);
|
||||
ufcon |= S3C2410_UFCON_RESETRX | S3C2410_UFCON_RESETTX |
|
||||
S5PV210_UFCON_RXTRIG8;
|
||||
ufcon |= S3C2410_UFCON_RESETRX | S5PV210_UFCON_RXTRIG8;
|
||||
if (!uart_console(port))
|
||||
ufcon |= S3C2410_UFCON_RESETTX;
|
||||
wr_regl(port, S3C2410_UFCON, ufcon);
|
||||
|
||||
enable_rx_pio(ourport);
|
||||
|
|
|
@ -1770,7 +1770,7 @@ static const struct file_operations uart_proc_fops = {
|
|||
* @port: the port to write the message
|
||||
* @s: array of characters
|
||||
* @count: number of characters in string to write
|
||||
* @write: function to write character to port
|
||||
* @putchar: function to write character to port
|
||||
*/
|
||||
void uart_console_write(struct uart_port *port, const char *s,
|
||||
unsigned int count,
|
||||
|
|
|
@ -632,7 +632,8 @@ MODULE_DEVICE_TABLE(of, ulite_of_match);
|
|||
|
||||
static int ulite_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct resource *res, *res2;
|
||||
struct resource *res;
|
||||
int irq;
|
||||
int id = pdev->id;
|
||||
#ifdef CONFIG_OF
|
||||
const __be32 *prop;
|
||||
|
@ -646,11 +647,11 @@ static int ulite_probe(struct platform_device *pdev)
|
|||
if (!res)
|
||||
return -ENODEV;
|
||||
|
||||
res2 = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||
if (!res2)
|
||||
return -ENODEV;
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (irq <= 0)
|
||||
return -ENXIO;
|
||||
|
||||
return ulite_assign(&pdev->dev, id, res->start, res2->start);
|
||||
return ulite_assign(&pdev->dev, id, res->start, irq);
|
||||
}
|
||||
|
||||
static int ulite_remove(struct platform_device *pdev)
|
||||
|
|
|
@ -1331,9 +1331,9 @@ static SIMPLE_DEV_PM_OPS(cdns_uart_dev_pm_ops, cdns_uart_suspend,
|
|||
*/
|
||||
static int cdns_uart_probe(struct platform_device *pdev)
|
||||
{
|
||||
int rc, id;
|
||||
int rc, id, irq;
|
||||
struct uart_port *port;
|
||||
struct resource *res, *res2;
|
||||
struct resource *res;
|
||||
struct cdns_uart *cdns_uart_data;
|
||||
|
||||
cdns_uart_data = devm_kzalloc(&pdev->dev, sizeof(*cdns_uart_data),
|
||||
|
@ -1380,9 +1380,9 @@ static int cdns_uart_probe(struct platform_device *pdev)
|
|||
goto err_out_clk_disable;
|
||||
}
|
||||
|
||||
res2 = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||
if (!res2) {
|
||||
rc = -ENODEV;
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (irq <= 0) {
|
||||
rc = -ENXIO;
|
||||
goto err_out_clk_disable;
|
||||
}
|
||||
|
||||
|
@ -1411,7 +1411,7 @@ static int cdns_uart_probe(struct platform_device *pdev)
|
|||
* and triggers invocation of the config_port() entry point.
|
||||
*/
|
||||
port->mapbase = res->start;
|
||||
port->irq = res2->start;
|
||||
port->irq = irq;
|
||||
port->dev = &pdev->dev;
|
||||
port->uartclk = clk_get_rate(cdns_uart_data->uartclk);
|
||||
port->private_data = cdns_uart_data;
|
||||
|
|
|
@ -536,7 +536,7 @@ EXPORT_SYMBOL(tty_termios_hw_change);
|
|||
* Locking: termios_rwsem
|
||||
*/
|
||||
|
||||
static int tty_set_termios(struct tty_struct *tty, struct ktermios *new_termios)
|
||||
int tty_set_termios(struct tty_struct *tty, struct ktermios *new_termios)
|
||||
{
|
||||
struct ktermios old_termios;
|
||||
struct tty_ldisc *ld;
|
||||
|
@ -569,6 +569,7 @@ static int tty_set_termios(struct tty_struct *tty, struct ktermios *new_termios)
|
|||
up_write(&tty->termios_rwsem);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tty_set_termios);
|
||||
|
||||
/**
|
||||
* set_termios - set termios values for a tty
|
||||
|
|
|
@ -491,6 +491,7 @@ static inline speed_t tty_get_baud_rate(struct tty_struct *tty)
|
|||
|
||||
extern void tty_termios_copy_hw(struct ktermios *new, struct ktermios *old);
|
||||
extern int tty_termios_hw_change(struct ktermios *a, struct ktermios *b);
|
||||
extern int tty_set_termios(struct tty_struct *tty, struct ktermios *kt);
|
||||
|
||||
extern struct tty_ldisc *tty_ldisc_ref(struct tty_struct *);
|
||||
extern void tty_ldisc_deref(struct tty_ldisc *);
|
||||
|
|
Loading…
Reference in New Issue