colibri_imx6: fix video stdout in default environment
[oweals/u-boot.git] / drivers / gpio / mvebu_gpio.c
index 9564ce2b13ea9f313f006d5e6a5448fad36bbd76..770cbf6b607245cb3ab31b8d476a4d92a89ec97b 100644 (file)
@@ -1,7 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (C) 2016 Stefan Roese <sr@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -9,8 +8,7 @@
 #include <asm/gpio.h>
 #include <asm/io.h>
 #include <errno.h>
-
-DECLARE_GLOBAL_DATA_PTR;
+#include <linux/bitops.h>
 
 #define MVEBU_GPIOS_PER_BANK   32
 
@@ -43,6 +41,10 @@ static int mvebu_gpio_direction_output(struct udevice *dev, unsigned gpio,
        struct mvebu_gpio_priv *priv = dev_get_priv(dev);
        struct mvebu_gpio_regs *regs = priv->regs;
 
+       if (value)
+               setbits_le32(&regs->data_out, BIT(gpio));
+       else
+               clrbits_le32(&regs->data_out, BIT(gpio));
        clrbits_le32(&regs->io_conf, BIT(gpio));
 
        return 0;
@@ -88,7 +90,7 @@ static int mvebu_gpio_probe(struct udevice *dev)
        struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
        struct mvebu_gpio_priv *priv = dev_get_priv(dev);
 
-       priv->regs = (struct mvebu_gpio_regs *)dev_get_addr(dev);
+       priv->regs = (struct mvebu_gpio_regs *)devfdt_get_addr(dev);
        uc_priv->gpio_count = MVEBU_GPIOS_PER_BANK;
        priv->name[0] = 'A' + dev->req_seq;
        uc_priv->bank_name = priv->name;