+// 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 <asm/gpio.h>
#include <asm/io.h>
-DECLARE_GLOBAL_DATA_PTR;
-
struct bcm6345_gpio_priv {
void __iomem *reg_dirout;
void __iomem *reg_data;
{
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);
}
{
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 = devfdt_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 = devfdt_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;