X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=drivers%2Fserial%2Fserial_bcm6345.c;h=8838c41b7ce0fd8bff2d98f11401226851d6d909;hb=c4ded03ef608be37db105200010d2f3f88195bd6;hp=db270e3b21bd1cdc76b3fa9dad98b878ddc9f3f5;hpb=1f5541c8818d3ecd243f9bbf58db9ea5f55a3195;p=u-boot diff --git a/drivers/serial/serial_bcm6345.c b/drivers/serial/serial_bcm6345.c index db270e3b21..8838c41b7c 100644 --- a/drivers/serial/serial_bcm6345.c +++ b/drivers/serial/serial_bcm6345.c @@ -1,19 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (C) 2017 Álvaro Fernández Rojas * * Derived from linux/drivers/tty/serial/bcm63xx_uart.c: * Copyright (C) 2008 Maxime Bizon - * - * SPDX-License-Identifier: GPL-2.0+ */ #include +#include #include #include #include #include #include -#include /* UART Control register */ #define UART_CTL_REG 0x0 @@ -141,6 +140,8 @@ static int bcm6345_serial_init(void __iomem *base, ulong clk, u32 baudrate) UART_CTL_RXTIMEOUT_5 | /* set 8 bits/symbol */ UART_CTL_BITSPERSYM_8 | + /* set 1 stop bit */ + UART_CTL_STOPBITS_1 | /* set parity to even */ UART_CTL_RXPAREVEN_MASK | UART_CTL_TXPAREVEN_MASK); @@ -155,11 +156,11 @@ static int bcm6345_serial_init(void __iomem *base, ulong clk, u32 baudrate) UART_FIFO_CFG_TX_4); /* set baud rate */ - val = (clk / baudrate) / 16; + val = ((clk / baudrate) >> 4); if (val & 0x1) - val = val; + val = (val >> 1); else - val = val / 2 - 1; + val = (val >> 1) - 1; writel_be(val, base + UART_BAUD_REG); /* clear interrupts */ @@ -231,7 +232,7 @@ static int bcm6345_serial_probe(struct udevice *dev) int ret; /* get address */ - addr = dev_get_addr_size_index(dev, 0, &size); + addr = devfdt_get_addr_size_index(dev, 0, &size); if (addr == FDT_ADDR_T_NONE) return -EINVAL; @@ -241,7 +242,7 @@ static int bcm6345_serial_probe(struct udevice *dev) ret = clk_get_by_index(dev, 0, &clk); if (ret < 0) return ret; - priv->uartclk = clk_get_rate(&clk) / 2; + priv->uartclk = clk_get_rate(&clk); clk_free(&clk); /* initialize serial */