Lines Matching defs:gpio

18 #include <linux/gpio/consumer.h>
19 #include <linux/gpio/driver.h>
44 static int pisosr_gpio_refresh(struct pisosr_gpio *gpio)
48 mutex_lock(&gpio->lock);
50 if (gpio->load_gpio) {
51 gpiod_set_value_cansleep(gpio->load_gpio, 1);
53 gpiod_set_value_cansleep(gpio->load_gpio, 0);
57 ret = spi_read(gpio->spi, gpio->buffer, gpio->buffer_size);
59 mutex_unlock(&gpio->lock);
87 struct pisosr_gpio *gpio = gpiochip_get_data(chip);
90 pisosr_gpio_refresh(gpio);
92 return (gpio->buffer[offset / 8] >> (offset % 8)) & 0x1;
98 struct pisosr_gpio *gpio = gpiochip_get_data(chip);
103 pisosr_gpio_refresh(gpio);
107 buffer_state = gpio->buffer[offset / 8] & gpio_mask;
115 .label = "pisosr-gpio",
130 struct pisosr_gpio *gpio;
133 gpio = devm_kzalloc(dev, sizeof(*gpio), GFP_KERNEL);
134 if (!gpio)
137 spi_set_drvdata(spi, gpio);
139 gpio->chip = template_chip;
140 gpio->chip.parent = dev;
141 of_property_read_u16(dev->of_node, "ngpios", &gpio->chip.ngpio);
143 gpio->spi = spi;
145 gpio->buffer_size = DIV_ROUND_UP(gpio->chip.ngpio, 8);
146 gpio->buffer = devm_kzalloc(dev, gpio->buffer_size, GFP_KERNEL);
147 if (!gpio->buffer)
150 gpio->load_gpio = devm_gpiod_get_optional(dev, "load", GPIOD_OUT_LOW);
151 if (IS_ERR(gpio->load_gpio))
152 return dev_err_probe(dev, PTR_ERR(gpio->load_gpio),
155 mutex_init(&gpio->lock);
157 ret = gpiochip_add_data(&gpio->chip, gpio);
168 struct pisosr_gpio *gpio = spi_get_drvdata(spi);
170 gpiochip_remove(&gpio->chip);
172 mutex_destroy(&gpio->lock);
178 { "pisosr-gpio", },
184 { .compatible = "pisosr-gpio", },
191 .name = "pisosr-gpio",