mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 00:36:39 +07:00
serial: 8250_omap: refactor mdr1 update
The silicon errata[1] workaround implemented in a follow-on patch, "serial: 8250_omap: workaround errata on disabling UART after using DMA", requires MDR1 register programming. Extract MDR1 register update into helper function, omap8250_update_mdr1() to help with that. [1] Advisory 21 in http://www.ti.com/lit/er/sprz408b/sprz408b.pdf Signed-off-by: Sekhar Nori <nsekhar@ti.com> Acked-by: Tony Lindgren <tony@atomide.com> Reviewed-by: Peter Hurley <peter@hurleysoftware.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d879aeaa41
commit
6f03541f6b
@ -232,6 +232,15 @@ static void omap8250_update_scr(struct uart_8250_port *up,
|
||||
serial_out(up, UART_OMAP_SCR, priv->scr);
|
||||
}
|
||||
|
||||
static void omap8250_update_mdr1(struct uart_8250_port *up,
|
||||
struct omap8250_priv *priv)
|
||||
{
|
||||
if (priv->habit & UART_ERRATA_i202_MDR1_ACCESS)
|
||||
omap_8250_mdr1_errataset(up, priv);
|
||||
else
|
||||
serial_out(up, UART_OMAP_MDR1, priv->mdr1);
|
||||
}
|
||||
|
||||
static void omap8250_restore_regs(struct uart_8250_port *up)
|
||||
{
|
||||
struct omap8250_priv *priv = up->port.private_data;
|
||||
@ -282,11 +291,9 @@ static void omap8250_restore_regs(struct uart_8250_port *up)
|
||||
serial_out(up, UART_XOFF1, priv->xoff);
|
||||
|
||||
serial_out(up, UART_LCR, up->lcr);
|
||||
/* need mode A for FCR */
|
||||
if (priv->habit & UART_ERRATA_i202_MDR1_ACCESS)
|
||||
omap_8250_mdr1_errataset(up, priv);
|
||||
else
|
||||
serial_out(up, UART_OMAP_MDR1, priv->mdr1);
|
||||
|
||||
omap8250_update_mdr1(up, priv);
|
||||
|
||||
up->port.ops->set_mctrl(&up->port, up->port.mctrl);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user