Lines Matching refs:gpio

138 	struct pcf857x	*gpio = gpiochip_get_data(chip);  in pcf857x_input()  local
141 mutex_lock(&gpio->lock); in pcf857x_input()
142 gpio->out |= (1 << offset); in pcf857x_input()
143 status = gpio->write(gpio->client, gpio->out); in pcf857x_input()
144 mutex_unlock(&gpio->lock); in pcf857x_input()
151 struct pcf857x *gpio = gpiochip_get_data(chip); in pcf857x_get() local
154 value = gpio->read(gpio->client); in pcf857x_get()
160 struct pcf857x *gpio = gpiochip_get_data(chip); in pcf857x_output() local
164 mutex_lock(&gpio->lock); in pcf857x_output()
166 gpio->out |= bit; in pcf857x_output()
168 gpio->out &= ~bit; in pcf857x_output()
169 status = gpio->write(gpio->client, gpio->out); in pcf857x_output()
170 mutex_unlock(&gpio->lock); in pcf857x_output()
184 struct pcf857x *gpio = data; in pcf857x_irq() local
187 status = gpio->read(gpio->client); in pcf857x_irq()
193 mutex_lock(&gpio->lock); in pcf857x_irq()
194 change = (gpio->status ^ status) & gpio->irq_enabled; in pcf857x_irq()
195 gpio->status = status; in pcf857x_irq()
196 mutex_unlock(&gpio->lock); 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.irq.domain, i)); in pcf857x_irq()
211 struct pcf857x *gpio = irq_data_get_irq_chip_data(data); in pcf857x_irq_set_wake() local
215 if (gpio->irq_parent) { in pcf857x_irq_set_wake()
216 error = irq_set_irq_wake(gpio->irq_parent, on); in pcf857x_irq_set_wake()
218 dev_dbg(&gpio->client->dev, in pcf857x_irq_set_wake()
220 gpio->irq_parent); in pcf857x_irq_set_wake()
221 gpio->irq_parent = 0; in pcf857x_irq_set_wake()
229 struct pcf857x *gpio = irq_data_get_irq_chip_data(data); in pcf857x_irq_enable() local
231 gpio->irq_enabled |= (1 << data->hwirq); in pcf857x_irq_enable()
236 struct pcf857x *gpio = irq_data_get_irq_chip_data(data); in pcf857x_irq_disable() local
238 gpio->irq_enabled &= ~(1 << data->hwirq); in pcf857x_irq_disable()
243 struct pcf857x *gpio = irq_data_get_irq_chip_data(data); in pcf857x_irq_bus_lock() local
245 mutex_lock(&gpio->lock); in pcf857x_irq_bus_lock()
250 struct pcf857x *gpio = irq_data_get_irq_chip_data(data); in pcf857x_irq_bus_sync_unlock() local
252 mutex_unlock(&gpio->lock); in pcf857x_irq_bus_sync_unlock()
274 struct pcf857x *gpio; in pcf857x_probe() local
286 gpio = devm_kzalloc(&client->dev, sizeof(*gpio), GFP_KERNEL); in pcf857x_probe()
287 if (!gpio) in pcf857x_probe()
290 mutex_init(&gpio->lock); in pcf857x_probe()
292 gpio->chip.base = pdata ? pdata->gpio_base : -1; in pcf857x_probe()
293 gpio->chip.can_sleep = true; in pcf857x_probe()
294 gpio->chip.parent = &client->dev; in pcf857x_probe()
295 gpio->chip.owner = THIS_MODULE; in pcf857x_probe()
296 gpio->chip.get = pcf857x_get; in pcf857x_probe()
297 gpio->chip.set = pcf857x_set; in pcf857x_probe()
298 gpio->chip.direction_input = pcf857x_input; in pcf857x_probe()
299 gpio->chip.direction_output = pcf857x_output; in pcf857x_probe()
300 gpio->chip.ngpio = id->driver_data; in pcf857x_probe()
313 if (gpio->chip.ngpio == 8) { in pcf857x_probe()
314 gpio->write = i2c_write_le8; in pcf857x_probe()
315 gpio->read = i2c_read_le8; in pcf857x_probe()
331 } else if (gpio->chip.ngpio == 16) { in pcf857x_probe()
332 gpio->write = i2c_write_le16; in pcf857x_probe()
333 gpio->read = i2c_read_le16; in pcf857x_probe()
350 gpio->chip.label = client->name; in pcf857x_probe()
352 gpio->client = client; in pcf857x_probe()
353 i2c_set_clientdata(client, gpio); in pcf857x_probe()
370 gpio->out = ~n_latch; in pcf857x_probe()
371 gpio->status = gpio->out; in pcf857x_probe()
373 status = devm_gpiochip_add_data(&client->dev, &gpio->chip, gpio); in pcf857x_probe()
379 status = gpiochip_irqchip_add_nested(&gpio->chip, in pcf857x_probe()
391 dev_name(&client->dev), gpio); in pcf857x_probe()
395 gpiochip_set_nested_irqchip(&gpio->chip, &pcf857x_irq_chip, in pcf857x_probe()
397 gpio->irq_parent = client->irq; in pcf857x_probe()
405 gpio->chip.base, gpio->chip.ngpio, in pcf857x_probe()
425 struct pcf857x *gpio = i2c_get_clientdata(client); in pcf857x_remove() local
430 gpio->chip.base, gpio->chip.ngpio, in pcf857x_remove()
444 struct pcf857x *gpio = i2c_get_clientdata(client); in pcf857x_shutdown() local
447 gpio->write(gpio->client, BIT(gpio->chip.ngpio) - 1); in pcf857x_shutdown()