]> Git Repo - J-u-boot.git/blobdiff - drivers/serial/serial_arc.c
pinctrl: renesas: Minimize R8A77970 V3M PFC tables
[J-u-boot.git] / drivers / serial / serial_arc.c
index 70dbc6d6b53f50eaaceba28d47e528fa95363fac..a7e566bd23fbea3875f9e18eb85e3ec351ee915d 100644 (file)
@@ -7,9 +7,9 @@
  *
  */
 
-#include <common.h>
 #include <dm.h>
 #include <serial.h>
+#include <asm/global_data.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -24,8 +24,7 @@ struct arc_serial_regs {
        unsigned int baudh;
 };
 
-
-struct arc_serial_platdata {
+struct arc_serial_plat {
        struct arc_serial_regs *reg;
        unsigned int uartclk;
 };
@@ -37,7 +36,7 @@ struct arc_serial_platdata {
 
 static int arc_serial_setbrg(struct udevice *dev, int baudrate)
 {
-       struct arc_serial_platdata *plat = dev->platdata;
+       struct arc_serial_plat *plat = dev_get_plat(dev);
        struct arc_serial_regs *const regs = plat->reg;
        int arc_console_baud = gd->cpu_clk / (baudrate * 4) - 1;
 
@@ -49,11 +48,11 @@ static int arc_serial_setbrg(struct udevice *dev, int baudrate)
 
 static int arc_serial_putc(struct udevice *dev, const char c)
 {
-       struct arc_serial_platdata *plat = dev->platdata;
+       struct arc_serial_plat *plat = dev_get_plat(dev);
        struct arc_serial_regs *const regs = plat->reg;
 
-       while (!(readb(&regs->status) & UART_TXEMPTY))
-               ;
+       if (!(readb(&regs->status) & UART_TXEMPTY))
+               return -EAGAIN;
 
        writeb(c, &regs->data);
 
@@ -67,7 +66,7 @@ static int arc_serial_tstc(struct arc_serial_regs *const regs)
 
 static int arc_serial_pending(struct udevice *dev, bool input)
 {
-       struct arc_serial_platdata *plat = dev->platdata;
+       struct arc_serial_plat *plat = dev_get_plat(dev);
        struct arc_serial_regs *const regs = plat->reg;
        uint32_t status = readb(&regs->status);
 
@@ -79,11 +78,11 @@ static int arc_serial_pending(struct udevice *dev, bool input)
 
 static int arc_serial_getc(struct udevice *dev)
 {
-       struct arc_serial_platdata *plat = dev->platdata;
+       struct arc_serial_plat *plat = dev_get_plat(dev);
        struct arc_serial_regs *const regs = plat->reg;
 
-       while (!arc_serial_tstc(regs))
-               ;
+       if (!arc_serial_tstc(regs))
+               return -EAGAIN;
 
        /* Check for overflow errors */
        if (readb(&regs->status) & UART_OVERFLOW_ERR)
@@ -109,12 +108,12 @@ static const struct udevice_id arc_serial_ids[] = {
        { }
 };
 
-static int arc_serial_ofdata_to_platdata(struct udevice *dev)
+static int arc_serial_of_to_plat(struct udevice *dev)
 {
-       struct arc_serial_platdata *plat = dev_get_platdata(dev);
+       struct arc_serial_plat *plat = dev_get_plat(dev);
        DECLARE_GLOBAL_DATA_PTR;
 
-       plat->reg = (struct arc_serial_regs *)devfdt_get_addr(dev);
+       plat->reg = dev_read_addr_ptr(dev);
        plat->uartclk = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev),
                                       "clock-frequency", 0);
 
@@ -125,8 +124,8 @@ U_BOOT_DRIVER(serial_arc) = {
        .name   = "serial_arc",
        .id     = UCLASS_SERIAL,
        .of_match = arc_serial_ids,
-       .ofdata_to_platdata = arc_serial_ofdata_to_platdata,
-       .platdata_auto_alloc_size = sizeof(struct arc_serial_platdata),
+       .of_to_plat = arc_serial_of_to_plat,
+       .plat_auto      = sizeof(struct arc_serial_plat),
        .probe = arc_serial_probe,
        .ops    = &arc_serial_ops,
 };
@@ -136,7 +135,7 @@ U_BOOT_DRIVER(serial_arc) = {
 
 static inline void _debug_uart_init(void)
 {
-       struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_DEBUG_UART_BASE;
+       struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_VAL(DEBUG_UART_BASE);
        int arc_console_baud = CONFIG_DEBUG_UART_CLOCK / (CONFIG_BAUDRATE * 4) - 1;
 
        writeb(arc_console_baud & 0xff, &regs->baudl);
@@ -145,7 +144,7 @@ static inline void _debug_uart_init(void)
 
 static inline void _debug_uart_putc(int c)
 {
-       struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_DEBUG_UART_BASE;
+       struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_VAL(DEBUG_UART_BASE);
 
        while (!(readb(&regs->status) & UART_TXEMPTY))
                ;
This page took 0.026119 seconds and 4 git commands to generate.