On 06/09/2015 07:54 PM, Axel Lin wrote:
It's confusing to use gpio as gpio offset parameter so rename it to offset
for better readability.
Agreed, but IMHO these offsets any way at the end are the gpio numbers of individual gpio chip instances. e.g: gpio 2 of gpio chip 1 which is gpio 34.


Signed-off-by: Axel Lin <axel....@ingics.com>
---
  drivers/gpio/vybrid_gpio.c | 24 ++++++++++++------------
  1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/gpio/vybrid_gpio.c b/drivers/gpio/vybrid_gpio.c
index 6eaf0a9..14ba7e5 100644
--- a/drivers/gpio/vybrid_gpio.c
+++ b/drivers/gpio/vybrid_gpio.c
@@ -21,54 +21,54 @@ struct vybrid_gpios {
        struct vybrid_gpio_regs *reg;
  };

-static int vybrid_gpio_direction_input(struct udevice *dev, unsigned gpio)
+static int vybrid_gpio_direction_input(struct udevice *dev, unsigned offset)
  {
        const struct vybrid_gpios *gpios = dev_get_priv(dev);
+       unsigned gpio = offset + (gpios->chip * VYBRID_GPIO_COUNT);

-       gpio = gpio + (gpios->chip * VYBRID_GPIO_COUNT);
        imx_iomux_gpio_set_direction(gpio, VF610_GPIO_DIRECTION_IN);

        return 0;
  }

-static int vybrid_gpio_direction_output(struct udevice *dev, unsigned gpio,
+static int vybrid_gpio_direction_output(struct udevice *dev, unsigned offset,
                                         int value)
  {
        const struct vybrid_gpios *gpios = dev_get_priv(dev);
+       unsigned gpio = offset + (gpios->chip * VYBRID_GPIO_COUNT);

-       gpio = gpio + (gpios->chip * VYBRID_GPIO_COUNT);
        gpio_set_value(gpio, value);
        imx_iomux_gpio_set_direction(gpio, VF610_GPIO_DIRECTION_OUT);

        return 0;
  }

-static int vybrid_gpio_get_value(struct udevice *dev, unsigned gpio)
+static int vybrid_gpio_get_value(struct udevice *dev, unsigned offset)
  {
        const struct vybrid_gpios *gpios = dev_get_priv(dev);

-       return ((readl(&gpios->reg->gpio_pdir) & (1 << gpio))) ? 1 : 0;
+       return ((readl(&gpios->reg->gpio_pdir) & (1 << offset))) ? 1 : 0;
  }

-static int vybrid_gpio_set_value(struct udevice *dev, unsigned gpio,
+static int vybrid_gpio_set_value(struct udevice *dev, unsigned offset,
                                  int value)
  {
        const struct vybrid_gpios *gpios = dev_get_priv(dev);
+
        if (value)
-               writel((1 << gpio), &gpios->reg->gpio_psor);
+               writel((1 << offset), &gpios->reg->gpio_psor);
        else
-               writel((1 << gpio), &gpios->reg->gpio_pcor);
+               writel((1 << offset), &gpios->reg->gpio_pcor);

        return 0;
  }

-static int vybrid_gpio_get_function(struct udevice *dev, unsigned gpio)
+static int vybrid_gpio_get_function(struct udevice *dev, unsigned offset)
  {
        const struct vybrid_gpios *gpios = dev_get_priv(dev);
+       unsigned gpio = offset + (gpios->chip * VYBRID_GPIO_COUNT);
        u32 g_state = 0;

-       gpio = gpio + (gpios->chip * VYBRID_GPIO_COUNT);
-
        imx_iomux_gpio_get_function(gpio, &g_state);

        if (((g_state & (0x07 << PAD_MUX_MODE_SHIFT)) >> PAD_MUX_MODE_SHIFT) > 
0)


Best regards,
Bhuvan
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to