Skip to content

Commit 6f03541

Browse files
nsekhargregkh
authored andcommitted
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>
1 parent d879aea commit 6f03541

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

drivers/tty/serial/8250/8250_omap.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,15 @@ static void omap8250_update_scr(struct uart_8250_port *up,
232232
serial_out(up, UART_OMAP_SCR, priv->scr);
233233
}
234234

235+
static void omap8250_update_mdr1(struct uart_8250_port *up,
236+
struct omap8250_priv *priv)
237+
{
238+
if (priv->habit & UART_ERRATA_i202_MDR1_ACCESS)
239+
omap_8250_mdr1_errataset(up, priv);
240+
else
241+
serial_out(up, UART_OMAP_MDR1, priv->mdr1);
242+
}
243+
235244
static void omap8250_restore_regs(struct uart_8250_port *up)
236245
{
237246
struct omap8250_priv *priv = up->port.private_data;
@@ -282,11 +291,9 @@ static void omap8250_restore_regs(struct uart_8250_port *up)
282291
serial_out(up, UART_XOFF1, priv->xoff);
283292

284293
serial_out(up, UART_LCR, up->lcr);
285-
/* need mode A for FCR */
286-
if (priv->habit & UART_ERRATA_i202_MDR1_ACCESS)
287-
omap_8250_mdr1_errataset(up, priv);
288-
else
289-
serial_out(up, UART_OMAP_MDR1, priv->mdr1);
294+
295+
omap8250_update_mdr1(up, priv);
296+
290297
up->port.ops->set_mctrl(&up->port, up->port.mctrl);
291298
}
292299

0 commit comments

Comments
 (0)