Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a43140c authored by Noam Camus's avatar Noam Camus Committed by Greg Kroah-Hartman
Browse files

serial: 8250_dw: Do not use readl/writel before checking port iotype



Direct call to readl()/writel() is checked against iotype
and in case of UPIO_MEM32BE we use ioread32be()/iowrite32be()
instead of them.

Signed-off-by: default avatarNoam Camus <noamc@ezchip.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 46250901
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -114,6 +114,8 @@ static void dw8250_check_lcr(struct uart_port *p, int value)
#else
		if (p->iotype == UPIO_MEM32)
			writel(value, offset);
		else if (p->iotype == UPIO_MEM32BE)
			iowrite32be(value, offset);
		else
			writeb(value, offset);
#endif
@@ -327,6 +329,9 @@ static void dw8250_setup_port(struct uart_port *p)
	 * If the Component Version Register returns zero, we know that
	 * ADDITIONAL_FEATURES are not enabled. No need to go any further.
	 */
	if (p->iotype == UPIO_MEM32BE)
		reg = ioread32be(p->membase + DW_UART_UCV);
	else
		reg = readl(p->membase + DW_UART_UCV);
	if (!reg)
		return;
@@ -334,6 +339,9 @@ static void dw8250_setup_port(struct uart_port *p)
	dev_dbg(p->dev, "Designware UART version %c.%c%c\n",
		(reg >> 24) & 0xff, (reg >> 16) & 0xff, (reg >> 8) & 0xff);

	if (p->iotype == UPIO_MEM32BE)
		reg = ioread32be(p->membase + DW_UART_CPR);
	else
		reg = readl(p->membase + DW_UART_CPR);
	if (!reg)
		return;