mmc: fsl_esdhc: workaround for hardware 3.3v IO reliability issue
[oweals/u-boot.git] / drivers / reset / reset-bcm6345.c
index 774c2a7538d47da58cd7171b2ccd0f0291fad80d..156703e084301b93b26f936e32006e4db445298c 100644 (file)
@@ -1,17 +1,20 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com>
  *
  * Derived from linux/arch/mips/bcm63xx/reset.c:
  *     Copyright (C) 2012 Jonas Gorski <jonas.gorski@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
 #include <dm.h>
 #include <errno.h>
+#include <log.h>
+#include <malloc.h>
 #include <reset-uclass.h>
 #include <asm/io.h>
+#include <linux/bitops.h>
+#include <linux/delay.h>
 
 #define MAX_RESETS     32
 
@@ -53,7 +56,7 @@ static int bcm6345_reset_request(struct reset_ctl *rst)
 }
 
 struct reset_ops bcm6345_reset_reset_ops = {
-       .free = bcm6345_reset_free,
+       .rfree = bcm6345_reset_free,
        .request = bcm6345_reset_request,
        .rst_assert = bcm6345_reset_assert,
        .rst_deassert = bcm6345_reset_deassert,
@@ -67,15 +70,11 @@ static const struct udevice_id bcm6345_reset_ids[] = {
 static int bcm6345_reset_probe(struct udevice *dev)
 {
        struct bcm6345_reset_priv *priv = dev_get_priv(dev);
-       fdt_addr_t addr;
-       fdt_size_t size;
 
-       addr = dev_get_addr_size_index(dev, 0, &size);
-       if (addr == FDT_ADDR_T_NONE)
+       priv->regs = dev_remap_addr(dev);
+       if (!priv->regs)
                return -EINVAL;
 
-       priv->regs = ioremap(addr, size);
-
        return 0;
 }