gpio: add helper GPIOD_FLAGS_OUTPUT
[oweals/u-boot.git] / drivers / gpio / sandbox.c
index 4f7b62eba0ddc420acd0ea2e8903e6a58968ff37..91e8e0677ea8e1708dd8a14b4cc02f6730e05b55 100644 (file)
@@ -1,6 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (c) 2011 The Chromium OS Authors.
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
 #include <dm/of.h>
 #include <dt-bindings/gpio/gpio.h>
 
-DECLARE_GLOBAL_DATA_PTR;
-
 /* Flags for each GPIO */
 #define GPIOF_OUTPUT   (1 << 0)        /* Currently set as an output */
 #define GPIOF_HIGH     (1 << 1)        /* Currently set high */
-#define GPIOF_ODR      (1 << 2)        /* Currently set to open drain mode */
 
 struct gpio_state {
        const char *label;      /* label given by requester */
@@ -72,16 +69,6 @@ int sandbox_gpio_set_value(struct udevice *dev, unsigned offset, int value)
        return set_gpio_flag(dev, offset, GPIOF_HIGH, value);
 }
 
-int sandbox_gpio_get_open_drain(struct udevice *dev, unsigned offset)
-{
-       return get_gpio_flag(dev, offset, GPIOF_ODR);
-}
-
-int sandbox_gpio_set_open_drain(struct udevice *dev, unsigned offset, int value)
-{
-       return set_gpio_flag(dev, offset, GPIOF_ODR, value);
-}
-
 int sandbox_gpio_get_direction(struct udevice *dev, unsigned offset)
 {
        return get_gpio_flag(dev, offset, GPIOF_OUTPUT);
@@ -136,28 +123,6 @@ static int sb_gpio_set_value(struct udevice *dev, unsigned offset, int value)
        return sandbox_gpio_set_value(dev, offset, value);
 }
 
-/* read GPIO ODR value of port 'offset' */
-static int sb_gpio_get_open_drain(struct udevice *dev, unsigned offset)
-{
-       debug("%s: offset:%u\n", __func__, offset);
-
-       return sandbox_gpio_get_open_drain(dev, offset);
-}
-
-/* write GPIO ODR value to port 'offset' */
-static int sb_gpio_set_open_drain(struct udevice *dev, unsigned offset, int value)
-{
-       debug("%s: offset:%u, value = %d\n", __func__, offset, value);
-
-       if (!sandbox_gpio_get_direction(dev, offset)) {
-               printf("sandbox_gpio: error: set_open_drain on input gpio %u\n",
-                      offset);
-               return -1;
-       }
-
-       return sandbox_gpio_set_open_drain(dev, offset, value);
-}
-
 static int sb_gpio_get_function(struct udevice *dev, unsigned offset)
 {
        if (get_gpio_flag(dev, offset, GPIOF_OUTPUT))
@@ -188,8 +153,6 @@ static const struct dm_gpio_ops gpio_sandbox_ops = {
        .direction_output       = sb_gpio_direction_output,
        .get_value              = sb_gpio_get_value,
        .set_value              = sb_gpio_set_value,
-       .get_open_drain         = sb_gpio_get_open_drain,
-       .set_open_drain         = sb_gpio_set_open_drain,
        .get_function           = sb_gpio_get_function,
        .xlate                  = sb_gpio_xlate,
 };
@@ -198,7 +161,8 @@ static int sandbox_gpio_ofdata_to_platdata(struct udevice *dev)
 {
        struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
-       uc_priv->gpio_count = dev_read_u32_default(dev, "num-gpios", 0);
+       uc_priv->gpio_count = dev_read_u32_default(dev, "sandbox,gpio-count",
+                                                  0);
        uc_priv->bank_name = dev_read_string(dev, "gpio-bank-name");
 
        return 0;