Lines Matching +full:int +full:- +full:gpios
5 * SPDX-License-Identifier: GPL-2.0+
13 #include <asm/mach-imx/iomux-v3.h>
20 unsigned int chip;
24 static int vybrid_gpio_direction_input(struct udevice *dev, unsigned gpio) in vybrid_gpio_direction_input()
26 const struct vybrid_gpios *gpios = dev_get_priv(dev); in vybrid_gpio_direction_input() local
28 gpio = gpio + (gpios->chip * VYBRID_GPIO_COUNT); in vybrid_gpio_direction_input()
34 static int vybrid_gpio_direction_output(struct udevice *dev, unsigned gpio, in vybrid_gpio_direction_output()
35 int value) in vybrid_gpio_direction_output()
37 const struct vybrid_gpios *gpios = dev_get_priv(dev); in vybrid_gpio_direction_output() local
39 gpio = gpio + (gpios->chip * VYBRID_GPIO_COUNT); in vybrid_gpio_direction_output()
46 static int vybrid_gpio_get_value(struct udevice *dev, unsigned gpio) in vybrid_gpio_get_value()
48 const struct vybrid_gpios *gpios = dev_get_priv(dev); in vybrid_gpio_get_value() local
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()
54 int value) in vybrid_gpio_set_value()
56 const struct vybrid_gpios *gpios = dev_get_priv(dev); in vybrid_gpio_set_value() local
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()
67 const struct vybrid_gpios *gpios = dev_get_priv(dev); in vybrid_gpio_get_function() local
70 gpio = gpio + (gpios->chip * VYBRID_GPIO_COUNT); in vybrid_gpio_get_function()
94 static int vybrid_gpio_probe(struct udevice *dev) in vybrid_gpio_probe()
96 struct vybrid_gpios *gpios = dev_get_priv(dev); in vybrid_gpio_probe() local
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()
108 static int vybrid_gpio_bind(struct udevice *dev) in vybrid_gpio_bind()
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" },