dt-bindings: pinctrl: k3: Synchronize with v5.14 kernel
[platform/kernel/u-boot.git] / drivers / serial / serial_omap.c
index af3c755..ee938f6 100644 (file)
@@ -7,12 +7,13 @@
  */
 
 #include <common.h>
-#include <debug_uart.h>
 #include <dm.h>
 #include <dt-structs.h>
+#include <log.h>
 #include <ns16550.h>
 #include <serial.h>
 #include <clk.h>
+#include <linux/err.h>
 
 #ifndef CONFIG_SYS_NS16550_CLK
 #define CONFIG_SYS_NS16550_CLK  0
 
 #ifdef CONFIG_DEBUG_UART_OMAP
 
+#ifndef CONFIG_SYS_NS16550_IER
+#define CONFIG_SYS_NS16550_IER  0x00
+#endif
+
+#define UART_MCRVAL 0x00
+#define UART_LCRVAL UART_LCR_8N1
+
+static inline void serial_out_shift(void *addr, int shift, int value)
+{
+#ifdef CONFIG_SYS_NS16550_PORT_MAPPED
+       outb(value, (ulong)addr);
+#elif defined(CONFIG_SYS_NS16550_MEM32) && defined(CONFIG_SYS_LITTLE_ENDIAN)
+       out_le32(addr, value);
+#elif defined(CONFIG_SYS_NS16550_MEM32) && defined(CONFIG_SYS_BIG_ENDIAN)
+       out_be32(addr, value);
+#elif defined(CONFIG_SYS_NS16550_MEM32)
+       writel(value, addr);
+#elif defined(CONFIG_SYS_BIG_ENDIAN)
+       writeb(value, addr + (1 << shift) - 1);
+#else
+       writeb(value, addr);
+#endif
+}
+
+static inline int serial_in_shift(void *addr, int shift)
+{
+#ifdef CONFIG_SYS_NS16550_PORT_MAPPED
+       return inb((ulong)addr);
+#elif defined(CONFIG_SYS_NS16550_MEM32) && defined(CONFIG_SYS_LITTLE_ENDIAN)
+       return in_le32(addr);
+#elif defined(CONFIG_SYS_NS16550_MEM32) && defined(CONFIG_SYS_BIG_ENDIAN)
+       return in_be32(addr);
+#elif defined(CONFIG_SYS_NS16550_MEM32)
+       return readl(addr);
+#elif defined(CONFIG_SYS_BIG_ENDIAN)
+       return readb(addr + (1 << shift) - 1);
+#else
+       return readb(addr);
+#endif
+}
+
 #include <debug_uart.h>
 
 static inline void _debug_uart_init(void)
 {
-       struct NS16550 *com_port = (struct NS16550 *)CONFIG_DEBUG_UART_BASE;
+       struct ns16550 *com_port = (struct ns16550 *)CONFIG_DEBUG_UART_BASE;
        int baud_divisor;
 
        baud_divisor = ns16550_calc_divisor(com_port, CONFIG_DEBUG_UART_CLOCK,
@@ -43,7 +85,7 @@ static inline void _debug_uart_init(void)
 
 static inline void _debug_uart_putc(int ch)
 {
-       struct NS16550 *com_port = (struct NS16550 *)CONFIG_DEBUG_UART_BASE;
+       struct ns16550 *com_port = (struct ns16550 *)CONFIG_DEBUG_UART_BASE;
 
        while (!(serial_din(&com_port->lsr) & UART_LSR_THRE))
                ;
@@ -56,10 +98,10 @@ DEBUG_UART_FUNCS
 
 #if CONFIG_IS_ENABLED(DM_SERIAL)
 
-#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
-static int omap_serial_ofdata_to_platdata(struct udevice *dev)
+#if CONFIG_IS_ENABLED(OF_REAL)
+static int omap_serial_of_to_plat(struct udevice *dev)
 {
-       struct ns16550_platdata *plat = dev->platdata;
+       struct ns16550_plat *plat = dev_get_plat(dev);
        fdt_addr_t addr;
        struct clk clk;
        int err;
@@ -107,21 +149,23 @@ static const struct udevice_id omap_serial_ids[] = {
        { .compatible = "ti,am654-uart", },
        {}
 };
-#endif /* OF_CONTROL && !OF_PLATDATA */
+#endif /* OF_REAL */
 
 #if CONFIG_IS_ENABLED(SERIAL_PRESENT)
 U_BOOT_DRIVER(omap_serial) = {
        .name   = "omap_serial",
        .id     = UCLASS_SERIAL,
-#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
+#if CONFIG_IS_ENABLED(OF_REAL)
        .of_match = omap_serial_ids,
-       .ofdata_to_platdata = omap_serial_ofdata_to_platdata,
-       .platdata_auto_alloc_size = sizeof(struct ns16550_platdata),
+       .of_to_plat = omap_serial_of_to_plat,
+       .plat_auto      = sizeof(struct ns16550_plat),
 #endif
-       .priv_auto_alloc_size = sizeof(struct NS16550),
+       .priv_auto      = sizeof(struct ns16550),
        .probe = ns16550_serial_probe,
        .ops    = &ns16550_serial_ops,
+#if !CONFIG_IS_ENABLED(OF_CONTROL)
        .flags  = DM_FLAG_PRE_RELOC,
+#endif
 };
 #endif
 #endif /* DM_SERIAL */