]> git.sur5r.net Git - u-boot/blobdiff - drivers/gpio/bcm6345_gpio.c
mtd: nand: mxs_nand: use self init
[u-boot] / drivers / gpio / bcm6345_gpio.c
index 1c46020aa4d6ca3ba12bd6aaea6ba379d1f9c0a3..d1f6cfa8405d6f0e4ae9ff184f8fc3dfa37e7904 100644 (file)
@@ -1,20 +1,17 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com>
  *
  * Derived from linux/arch/mips/bcm63xx/gpio.c:
  *     Copyright (C) 2008 Maxime Bizon <mbizon@freebox.fr>
  *     Copyright (C) 2008-2011 Florian Fainelli <florian@openwrt.org>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
+#include <dm.h>
 #include <errno.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <dm/device.h>
-
-DECLARE_GLOBAL_DATA_PTR;
 
 struct bcm6345_gpio_priv {
        void __iomem *reg_dirout;
@@ -64,6 +61,8 @@ static int bcm6345_gpio_direction_output(struct udevice *dev, unsigned offset,
 {
        struct bcm6345_gpio_priv *priv = dev_get_priv(dev);
 
+       bcm6345_gpio_set_value(dev, offset, value);
+
        return bcm6345_gpio_set_direction(priv->reg_dirout, offset, 0);
 }
 
@@ -89,22 +88,16 @@ static int bcm6345_gpio_probe(struct udevice *dev)
 {
        struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
        struct bcm6345_gpio_priv *priv = dev_get_priv(dev);
-       fdt_addr_t data_addr, dirout_addr;
-       fdt_size_t data_size, dirout_size;
 
-       dirout_addr = dev_get_addr_size_index(dev, 0, &dirout_size);
-       if (dirout_addr == FDT_ADDR_T_NONE)
+       priv->reg_dirout = dev_remap_addr_index(dev, 0);
+       if (!priv->reg_dirout)
                return -EINVAL;
 
-       data_addr = dev_get_addr_size_index(dev, 1, &data_size);
-       if (data_addr == FDT_ADDR_T_NONE)
+       priv->reg_data = dev_remap_addr_index(dev, 1);
+       if (!priv->reg_data)
                return -EINVAL;
 
-       priv->reg_data = ioremap(data_addr, data_size);
-       priv->reg_dirout = ioremap(dirout_addr, dirout_size);
-
-       uc_priv->gpio_count = fdtdec_get_uint(gd->fdt_blob, dev_of_offset(dev),
-                                             "ngpios", 32);
+       uc_priv->gpio_count = dev_read_u32_default(dev, "ngpios", 32);
        uc_priv->bank_name = dev->name;
 
        return 0;