• Home
  • Raw
  • Download

Lines Matching refs:gpio

42 static int pisosr_gpio_refresh(struct pisosr_gpio *gpio)  in pisosr_gpio_refresh()  argument
46 mutex_lock(&gpio->lock); in pisosr_gpio_refresh()
48 if (gpio->load_gpio) { in pisosr_gpio_refresh()
49 gpiod_set_value_cansleep(gpio->load_gpio, 1); in pisosr_gpio_refresh()
51 gpiod_set_value_cansleep(gpio->load_gpio, 0); in pisosr_gpio_refresh()
55 ret = spi_read(gpio->spi, gpio->buffer, gpio->buffer_size); in pisosr_gpio_refresh()
57 mutex_unlock(&gpio->lock); in pisosr_gpio_refresh()
85 struct pisosr_gpio *gpio = gpiochip_get_data(chip); in pisosr_gpio_get() local
88 pisosr_gpio_refresh(gpio); in pisosr_gpio_get()
90 return (gpio->buffer[offset / 8] >> (offset % 8)) & 0x1; in pisosr_gpio_get()
108 struct pisosr_gpio *gpio; in pisosr_gpio_probe() local
111 gpio = devm_kzalloc(dev, sizeof(*gpio), GFP_KERNEL); in pisosr_gpio_probe()
112 if (!gpio) in pisosr_gpio_probe()
115 spi_set_drvdata(spi, gpio); in pisosr_gpio_probe()
117 gpio->chip = template_chip; in pisosr_gpio_probe()
118 gpio->chip.parent = dev; in pisosr_gpio_probe()
119 of_property_read_u16(dev->of_node, "ngpios", &gpio->chip.ngpio); in pisosr_gpio_probe()
121 gpio->spi = spi; in pisosr_gpio_probe()
123 gpio->buffer_size = DIV_ROUND_UP(gpio->chip.ngpio, 8); in pisosr_gpio_probe()
124 gpio->buffer = devm_kzalloc(dev, gpio->buffer_size, GFP_KERNEL); in pisosr_gpio_probe()
125 if (!gpio->buffer) in pisosr_gpio_probe()
128 gpio->load_gpio = devm_gpiod_get_optional(dev, "load", GPIOD_OUT_LOW); in pisosr_gpio_probe()
129 if (IS_ERR(gpio->load_gpio)) { in pisosr_gpio_probe()
130 ret = PTR_ERR(gpio->load_gpio); in pisosr_gpio_probe()
136 mutex_init(&gpio->lock); in pisosr_gpio_probe()
138 ret = gpiochip_add_data(&gpio->chip, gpio); in pisosr_gpio_probe()
149 struct pisosr_gpio *gpio = spi_get_drvdata(spi); in pisosr_gpio_remove() local
151 gpiochip_remove(&gpio->chip); in pisosr_gpio_remove()
153 mutex_destroy(&gpio->lock); in pisosr_gpio_remove()