Lines Matching refs:gpio
139 struct pcf857x *gpio = container_of(chip, struct pcf857x, chip); in pcf857x_input() local
142 mutex_lock(&gpio->lock); in pcf857x_input()
143 gpio->out |= (1 << offset); in pcf857x_input()
144 status = gpio->write(gpio->client, gpio->out); in pcf857x_input()
145 mutex_unlock(&gpio->lock); in pcf857x_input()
152 struct pcf857x *gpio = container_of(chip, struct pcf857x, chip); in pcf857x_get() local
155 value = gpio->read(gpio->client); in pcf857x_get()
161 struct pcf857x *gpio = container_of(chip, struct pcf857x, chip); in pcf857x_output() local
165 mutex_lock(&gpio->lock); in pcf857x_output()
167 gpio->out |= bit; in pcf857x_output()
169 gpio->out &= ~bit; in pcf857x_output()
170 status = gpio->write(gpio->client, gpio->out); in pcf857x_output()
171 mutex_unlock(&gpio->lock); in pcf857x_output()
185 struct pcf857x *gpio = data; in pcf857x_irq() local
188 status = gpio->read(gpio->client); in pcf857x_irq()
190 spin_lock_irqsave(&gpio->slock, flags); in pcf857x_irq()
197 change = (gpio->status ^ status); in pcf857x_irq()
198 for_each_set_bit(i, &change, gpio->chip.ngpio) in pcf857x_irq()
199 handle_nested_irq(irq_find_mapping(gpio->chip.irqdomain, i)); in pcf857x_irq()
200 gpio->status = status; in pcf857x_irq()
202 spin_unlock_irqrestore(&gpio->slock, flags); in pcf857x_irq()
219 struct pcf857x *gpio = irq_data_get_irq_chip_data(data); in pcf857x_irq_set_wake() local
221 irq_set_irq_wake(gpio->client->irq, on); in pcf857x_irq_set_wake()
244 struct pcf857x *gpio; in pcf857x_probe() local
256 gpio = devm_kzalloc(&client->dev, sizeof(*gpio), GFP_KERNEL); in pcf857x_probe()
257 if (!gpio) in pcf857x_probe()
260 mutex_init(&gpio->lock); in pcf857x_probe()
261 spin_lock_init(&gpio->slock); in pcf857x_probe()
263 gpio->chip.base = pdata ? pdata->gpio_base : -1; in pcf857x_probe()
264 gpio->chip.can_sleep = true; in pcf857x_probe()
265 gpio->chip.dev = &client->dev; in pcf857x_probe()
266 gpio->chip.owner = THIS_MODULE; in pcf857x_probe()
267 gpio->chip.get = pcf857x_get; in pcf857x_probe()
268 gpio->chip.set = pcf857x_set; in pcf857x_probe()
269 gpio->chip.direction_input = pcf857x_input; in pcf857x_probe()
270 gpio->chip.direction_output = pcf857x_output; in pcf857x_probe()
271 gpio->chip.ngpio = id->driver_data; in pcf857x_probe()
284 if (gpio->chip.ngpio == 8) { in pcf857x_probe()
285 gpio->write = i2c_write_le8; in pcf857x_probe()
286 gpio->read = i2c_read_le8; in pcf857x_probe()
302 } else if (gpio->chip.ngpio == 16) { in pcf857x_probe()
303 gpio->write = i2c_write_le16; in pcf857x_probe()
304 gpio->read = i2c_read_le16; in pcf857x_probe()
321 gpio->chip.label = client->name; in pcf857x_probe()
323 gpio->client = client; in pcf857x_probe()
324 i2c_set_clientdata(client, gpio); in pcf857x_probe()
341 gpio->out = ~n_latch; in pcf857x_probe()
342 gpio->status = gpio->out; in pcf857x_probe()
344 status = gpiochip_add(&gpio->chip); in pcf857x_probe()
350 status = gpiochip_irqchip_add(&gpio->chip, &pcf857x_irq_chip, in pcf857x_probe()
361 dev_name(&client->dev), gpio); in pcf857x_probe()
365 gpiochip_set_chained_irqchip(&gpio->chip, &pcf857x_irq_chip, in pcf857x_probe()
374 gpio->chip.base, gpio->chip.ngpio, in pcf857x_probe()
385 gpiochip_remove(&gpio->chip); in pcf857x_probe()
397 struct pcf857x *gpio = i2c_get_clientdata(client); in pcf857x_remove() local
402 gpio->chip.base, gpio->chip.ngpio, in pcf857x_remove()
411 gpiochip_remove(&gpio->chip); in pcf857x_remove()