Commit 4ebaf075 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge tag 'tty-4.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty

I wrote:
  "Serial driver fixes for 4.19-rc7

   Here are 3 small serial driver fixes for 4.19-rc7
    - 2 sh-sci bugfixes for reported issues
    - a revert of the PM handling for the 8250_dw code

   All of these have been in linux-next with no reported issues."

* tag 'tty-4.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
  Revert "serial: sh-sci: Allow for compressed SCIF address"
  Revert "serial: sh-sci: Remove SCIx_RZ_SCIFA_REGTYPE"
  Revert "serial: 8250_dw: Fix runtime PM handling"
parents cc02f852 5b162cc4
...@@ -630,10 +630,6 @@ static int dw8250_probe(struct platform_device *pdev) ...@@ -630,10 +630,6 @@ static int dw8250_probe(struct platform_device *pdev)
if (!data->skip_autocfg) if (!data->skip_autocfg)
dw8250_setup_port(p); dw8250_setup_port(p);
#ifdef CONFIG_PM
uart.capabilities |= UART_CAP_RPM;
#endif
/* If we have a valid fifosize, try hooking up DMA */ /* If we have a valid fifosize, try hooking up DMA */
if (p->fifosize) { if (p->fifosize) {
data->dma.rxconf.src_maxburst = p->fifosize / 4; data->dma.rxconf.src_maxburst = p->fifosize / 4;
......
...@@ -291,6 +291,33 @@ static const struct sci_port_params sci_port_params[SCIx_NR_REGTYPES] = { ...@@ -291,6 +291,33 @@ static const struct sci_port_params sci_port_params[SCIx_NR_REGTYPES] = {
.error_clear = SCIF_ERROR_CLEAR, .error_clear = SCIF_ERROR_CLEAR,
}, },
/*
* The "SCIFA" that is in RZ/T and RZ/A2.
* It looks like a normal SCIF with FIFO data, but with a
* compressed address space. Also, the break out of interrupts
* are different: ERI/BRI, RXI, TXI, TEI, DRI.
*/
[SCIx_RZ_SCIFA_REGTYPE] = {
.regs = {
[SCSMR] = { 0x00, 16 },
[SCBRR] = { 0x02, 8 },
[SCSCR] = { 0x04, 16 },
[SCxTDR] = { 0x06, 8 },
[SCxSR] = { 0x08, 16 },
[SCxRDR] = { 0x0A, 8 },
[SCFCR] = { 0x0C, 16 },
[SCFDR] = { 0x0E, 16 },
[SCSPTR] = { 0x10, 16 },
[SCLSR] = { 0x12, 16 },
},
.fifosize = 16,
.overrun_reg = SCLSR,
.overrun_mask = SCLSR_ORER,
.sampling_rate_mask = SCI_SR(32),
.error_mask = SCIF_DEFAULT_ERROR_MASK,
.error_clear = SCIF_ERROR_CLEAR,
},
/* /*
* Common SH-3 SCIF definitions. * Common SH-3 SCIF definitions.
*/ */
...@@ -319,15 +346,15 @@ static const struct sci_port_params sci_port_params[SCIx_NR_REGTYPES] = { ...@@ -319,15 +346,15 @@ static const struct sci_port_params sci_port_params[SCIx_NR_REGTYPES] = {
[SCIx_SH4_SCIF_REGTYPE] = { [SCIx_SH4_SCIF_REGTYPE] = {
.regs = { .regs = {
[SCSMR] = { 0x00, 16 }, [SCSMR] = { 0x00, 16 },
[SCBRR] = { 0x02, 8 }, [SCBRR] = { 0x04, 8 },
[SCSCR] = { 0x04, 16 }, [SCSCR] = { 0x08, 16 },
[SCxTDR] = { 0x06, 8 }, [SCxTDR] = { 0x0c, 8 },
[SCxSR] = { 0x08, 16 }, [SCxSR] = { 0x10, 16 },
[SCxRDR] = { 0x0a, 8 }, [SCxRDR] = { 0x14, 8 },
[SCFCR] = { 0x0c, 16 }, [SCFCR] = { 0x18, 16 },
[SCFDR] = { 0x0e, 16 }, [SCFDR] = { 0x1c, 16 },
[SCSPTR] = { 0x10, 16 }, [SCSPTR] = { 0x20, 16 },
[SCLSR] = { 0x12, 16 }, [SCLSR] = { 0x24, 16 },
}, },
.fifosize = 16, .fifosize = 16,
.overrun_reg = SCLSR, .overrun_reg = SCLSR,
...@@ -2810,7 +2837,7 @@ static int sci_init_single(struct platform_device *dev, ...@@ -2810,7 +2837,7 @@ static int sci_init_single(struct platform_device *dev,
{ {
struct uart_port *port = &sci_port->port; struct uart_port *port = &sci_port->port;
const struct resource *res; const struct resource *res;
unsigned int i, regtype; unsigned int i;
int ret; int ret;
sci_port->cfg = p; sci_port->cfg = p;
...@@ -2847,7 +2874,6 @@ static int sci_init_single(struct platform_device *dev, ...@@ -2847,7 +2874,6 @@ static int sci_init_single(struct platform_device *dev,
if (unlikely(sci_port->params == NULL)) if (unlikely(sci_port->params == NULL))
return -EINVAL; return -EINVAL;
regtype = sci_port->params - sci_port_params;
switch (p->type) { switch (p->type) {
case PORT_SCIFB: case PORT_SCIFB:
sci_port->rx_trigger = 48; sci_port->rx_trigger = 48;
...@@ -2902,10 +2928,6 @@ static int sci_init_single(struct platform_device *dev, ...@@ -2902,10 +2928,6 @@ static int sci_init_single(struct platform_device *dev,
port->regshift = 1; port->regshift = 1;
} }
if (regtype == SCIx_SH4_SCIF_REGTYPE)
if (sci_port->reg_size >= 0x20)
port->regshift = 1;
/* /*
* The UART port needs an IRQ value, so we peg this to the RX IRQ * The UART port needs an IRQ value, so we peg this to the RX IRQ
* for the multi-IRQ ports, which is where we are primarily * for the multi-IRQ ports, which is where we are primarily
...@@ -3110,6 +3132,10 @@ static const struct of_device_id of_sci_match[] = { ...@@ -3110,6 +3132,10 @@ static const struct of_device_id of_sci_match[] = {
.compatible = "renesas,scif-r7s72100", .compatible = "renesas,scif-r7s72100",
.data = SCI_OF_DATA(PORT_SCIF, SCIx_SH2_SCIF_FIFODATA_REGTYPE), .data = SCI_OF_DATA(PORT_SCIF, SCIx_SH2_SCIF_FIFODATA_REGTYPE),
}, },
{
.compatible = "renesas,scif-r7s9210",
.data = SCI_OF_DATA(PORT_SCIF, SCIx_RZ_SCIFA_REGTYPE),
},
/* Family-specific types */ /* Family-specific types */
{ {
.compatible = "renesas,rcar-gen1-scif", .compatible = "renesas,rcar-gen1-scif",
......
...@@ -36,6 +36,7 @@ enum { ...@@ -36,6 +36,7 @@ enum {
SCIx_SH4_SCIF_FIFODATA_REGTYPE, SCIx_SH4_SCIF_FIFODATA_REGTYPE,
SCIx_SH7705_SCIF_REGTYPE, SCIx_SH7705_SCIF_REGTYPE,
SCIx_HSCIF_REGTYPE, SCIx_HSCIF_REGTYPE,
SCIx_RZ_SCIFA_REGTYPE,
SCIx_NR_REGTYPES, SCIx_NR_REGTYPES,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment