Merge https://gitlab.denx.de/u-boot/custodians/u-boot-mpc85xx
[oweals/u-boot.git] / drivers / spi / exynos_spi.c
index f078973531c1d960e5635a485e50c42170b45d80..746686a18afa783b595daf9ca54a5e48e4005646 100644 (file)
@@ -1,23 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * (C) Copyright 2012 SAMSUNG Electronics
  * Padmavathi Venna <padma.v@samsung.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
 #include <dm.h>
 #include <errno.h>
+#include <log.h>
 #include <malloc.h>
 #include <spi.h>
 #include <fdtdec.h>
+#include <time.h>
 #include <asm/arch/clk.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/pinmux.h>
-#include <asm/arch-exynos/spi.h>
+#include <asm/arch/spi.h>
 #include <asm/io.h>
+#include <linux/delay.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -190,9 +192,9 @@ static int spi_rx_tx(struct exynos_spi_priv *priv, int todo,
                        spi_request_bytes(regs, toread, step);
                }
                if (priv->skip_preamble && get_timer(start) > 100) {
-                       printf("SPI timeout: in_bytes=%d, out_bytes=%d, ",
-                              in_bytes, out_bytes);
-                       return -1;
+                       debug("SPI timeout: in_bytes=%d, out_bytes=%d, ",
+                             in_bytes, out_bytes);
+                       return -ETIMEDOUT;
                }
        }
 
@@ -253,9 +255,9 @@ static int exynos_spi_ofdata_to_platdata(struct udevice *bus)
 {
        struct exynos_spi_platdata *plat = bus->platdata;
        const void *blob = gd->fdt_blob;
-       int node = bus->of_offset;
+       int node = dev_of_offset(bus);
 
-       plat->regs = (struct exynos_spi *)fdtdec_get_addr(blob, node, "reg");
+       plat->regs = (struct exynos_spi *)devfdt_get_addr(bus);
        plat->periph_id = pinmux_decode_periph_id(blob, node);
 
        if (plat->periph_id == PERIPH_ID_NONE) {
@@ -296,8 +298,9 @@ static int exynos_spi_probe(struct udevice *bus)
        return 0;
 }
 
-static int exynos_spi_claim_bus(struct udevice *bus)
+static int exynos_spi_claim_bus(struct udevice *dev)
 {
+       struct udevice *bus = dev->parent;
        struct exynos_spi_priv *priv = dev_get_priv(bus);
 
        exynos_pinmux_config(priv->periph_id, PINMUX_FLAG_NONE);
@@ -308,8 +311,9 @@ static int exynos_spi_claim_bus(struct udevice *bus)
        return 0;
 }
 
-static int exynos_spi_release_bus(struct udevice *bus)
+static int exynos_spi_release_bus(struct udevice *dev)
 {
+       struct udevice *bus = dev->parent;
        struct exynos_spi_priv *priv = dev_get_priv(bus);
 
        spi_flush_fifo(priv->regs);
@@ -425,6 +429,5 @@ U_BOOT_DRIVER(exynos_spi) = {
        .ofdata_to_platdata = exynos_spi_ofdata_to_platdata,
        .platdata_auto_alloc_size = sizeof(struct exynos_spi_platdata),
        .priv_auto_alloc_size = sizeof(struct exynos_spi_priv),
-       .per_child_auto_alloc_size      = sizeof(struct spi_slave),
        .probe  = exynos_spi_probe,
 };