Lines Matching +full:vf610 +full:- +full:gpio
5 * SPDX-License-Identifier: GPL-2.0+
12 #include <asm/gpio.h>
13 #include <asm/mach-imx/iomux-v3.h>
24 static int vybrid_gpio_direction_input(struct udevice *dev, unsigned gpio) in vybrid_gpio_direction_input() argument
28 gpio = gpio + (gpios->chip * VYBRID_GPIO_COUNT); in vybrid_gpio_direction_input()
29 imx_iomux_gpio_set_direction(gpio, VF610_GPIO_DIRECTION_IN); in vybrid_gpio_direction_input()
34 static int vybrid_gpio_direction_output(struct udevice *dev, unsigned gpio, in vybrid_gpio_direction_output() argument
39 gpio = gpio + (gpios->chip * VYBRID_GPIO_COUNT); in vybrid_gpio_direction_output()
40 gpio_set_value(gpio, value); in vybrid_gpio_direction_output()
41 imx_iomux_gpio_set_direction(gpio, VF610_GPIO_DIRECTION_OUT); in vybrid_gpio_direction_output()
46 static int vybrid_gpio_get_value(struct udevice *dev, unsigned gpio) in vybrid_gpio_get_value() argument
50 return ((readl(&gpios->reg->gpio_pdir) & (1 << gpio))) ? 1 : 0; in vybrid_gpio_get_value()
53 static int vybrid_gpio_set_value(struct udevice *dev, unsigned gpio, in vybrid_gpio_set_value() argument
58 writel((1 << gpio), &gpios->reg->gpio_psor); in vybrid_gpio_set_value()
60 writel((1 << gpio), &gpios->reg->gpio_pcor); in vybrid_gpio_set_value()
65 static int vybrid_gpio_get_function(struct udevice *dev, unsigned gpio) in vybrid_gpio_get_function() argument
70 gpio = gpio + (gpios->chip * VYBRID_GPIO_COUNT); in vybrid_gpio_get_function()
72 imx_iomux_gpio_get_function(gpio, &g_state); in vybrid_gpio_get_function()
100 uc_priv->bank_name = plat->port_name; in vybrid_gpio_probe()
101 uc_priv->gpio_count = VYBRID_GPIO_COUNT; in vybrid_gpio_probe()
102 gpios->reg = (struct vybrid_gpio_regs *)plat->base; in vybrid_gpio_probe()
103 gpios->chip = plat->chip; in vybrid_gpio_probe()
110 struct vybrid_gpio_platdata *plat = dev->platdata; in vybrid_gpio_bind()
118 return -ENODEV; in vybrid_gpio_bind()
123 * supported, this can be done by auto-alloc feature, but in vybrid_gpio_bind()
128 return -ENOMEM; in vybrid_gpio_bind()
130 plat->base = base_addr; in vybrid_gpio_bind()
131 plat->chip = dev->req_seq; in vybrid_gpio_bind()
132 plat->port_name = fdt_get_name(gd->fdt_blob, dev_of_offset(dev), NULL); in vybrid_gpio_bind()
133 dev->platdata = plat; in vybrid_gpio_bind()
139 { .compatible = "fsl,vf610-gpio" },