arm: dra7xx: Hang on any failure during IOdelay recalibration
[oweals/u-boot.git] / drivers / serial / serial_ar933x.c
index d43f9c97d702a29613920ee8fb083b6d86bcdcd1..5249c553987112e07a61e925b18ce2fe73641c24 100644 (file)
@@ -1,7 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (C) 2015-2016 Wills Wang <wills.wang@live.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
  */
 
 #include <common.h>
@@ -38,6 +37,7 @@ struct ar933x_serial_priv {
 };
 
 /*
+ * Baudrate algorithm come from Linux/drivers/tty/serial/ar933x_uart.c
  * baudrate = (clk / (scale + 1)) * (step * (1 / 2^17))
  */
 static u32 ar933x_serial_get_baud(u32 clk, u32 scale, u32 step)
@@ -145,27 +145,14 @@ static int ar933x_serial_pending(struct udevice *dev, bool input)
 static int ar933x_serial_probe(struct udevice *dev)
 {
        struct ar933x_serial_priv *priv = dev_get_priv(dev);
-       struct udevice *pinctrl;
        fdt_addr_t addr;
        u32 val;
-       int ret;
-
-       ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl);
-       if (ret)
-               return ret;
-       ret = pinctrl_get_periph_id(pinctrl, dev);
-       if (ret < 0)
-               return ret;
-       ret = pinctrl_request(pinctrl, ret, 0);
-       if (ret < 0)
-               return ret;
-
-       addr = dev_get_addr(dev);
+
+       addr = devfdt_get_addr(dev);
        if (addr == FDT_ADDR_T_NONE)
                return -EINVAL;
 
-       priv->regs = map_physmem(addr,
-                                AR933X_UART_SIZE,
+       priv->regs = map_physmem(addr, AR933X_UART_SIZE,
                                 MAP_NOCACHE);
 
        /*
@@ -202,7 +189,6 @@ U_BOOT_DRIVER(serial_ar933x) = {
        .priv_auto_alloc_size = sizeof(struct ar933x_serial_priv),
        .probe = ar933x_serial_probe,
        .ops    = &ar933x_serial_ops,
-       .flags = DM_FLAG_PRE_RELOC,
 };
 
 #ifdef CONFIG_DEBUG_UART_AR933X