Lines Matching defs:tps6586x
29 #include <linux/mfd/tps6586x.h>
105 .name = "tps6586x-gpio",
108 .name = "tps6586x-regulator",
111 .name = "tps6586x-rtc",
116 .name = "tps6586x-onkey",
120 struct tps6586x {
135 static inline struct tps6586x *dev_to_tps6586x(struct device *dev)
142 struct tps6586x *tps6586x = dev_to_tps6586x(dev);
144 return regmap_write(tps6586x->regmap, reg, val);
150 struct tps6586x *tps6586x = dev_to_tps6586x(dev);
152 return regmap_bulk_write(tps6586x->regmap, reg, val, len);
158 struct tps6586x *tps6586x = dev_to_tps6586x(dev);
162 ret = regmap_read(tps6586x->regmap, reg, &rval);
171 struct tps6586x *tps6586x = dev_to_tps6586x(dev);
173 return regmap_bulk_read(tps6586x->regmap, reg, val, len);
179 struct tps6586x *tps6586x = dev_to_tps6586x(dev);
181 return regmap_update_bits(tps6586x->regmap, reg, bit_mask, bit_mask);
187 struct tps6586x *tps6586x = dev_to_tps6586x(dev);
189 return regmap_update_bits(tps6586x->regmap, reg, bit_mask, 0);
195 struct tps6586x *tps6586x = dev_to_tps6586x(dev);
197 return regmap_update_bits(tps6586x->regmap, reg, mask, val);
203 struct tps6586x *tps6586x = dev_to_tps6586x(dev);
205 return irq_create_mapping(tps6586x->irq_domain, irq);
211 struct tps6586x *tps6586x = dev_get_drvdata(dev);
213 return tps6586x->version;
223 static int tps6586x_remove_subdevs(struct tps6586x *tps6586x)
225 return device_for_each_child(tps6586x->dev, NULL, __remove_subdev);
230 struct tps6586x *tps6586x = irq_data_get_irq_chip_data(data);
232 mutex_lock(&tps6586x->irq_lock);
237 struct tps6586x *tps6586x = irq_data_get_irq_chip_data(irq_data);
241 tps6586x->mask_reg[data->mask_reg] &= ~data->mask_mask;
242 tps6586x->irq_en |= (1 << __irq);
247 struct tps6586x *tps6586x = irq_data_get_irq_chip_data(irq_data);
252 tps6586x->mask_reg[data->mask_reg] |= data->mask_mask;
253 tps6586x->irq_en &= ~(1 << __irq);
258 struct tps6586x *tps6586x = irq_data_get_irq_chip_data(data);
261 for (i = 0; i < ARRAY_SIZE(tps6586x->mask_reg); i++) {
263 ret = tps6586x_write(tps6586x->dev,
265 tps6586x->mask_reg[i]);
269 mutex_unlock(&tps6586x->irq_lock);
275 struct tps6586x *tps6586x = irq_data_get_irq_chip_data(irq_data);
276 return irq_set_irq_wake(tps6586x->irq, on);
283 .name = "tps6586x",
294 struct tps6586x *tps6586x = h->host_data;
296 irq_set_chip_data(virq, tps6586x);
311 struct tps6586x *tps6586x = data;
316 ret = tps6586x_reads(tps6586x->dev, TPS6586X_INT_ACK1,
320 dev_err(tps6586x->dev, "failed to read interrupt status\n");
329 if (tps6586x->irq_en & (1 << i))
331 irq_find_mapping(tps6586x->irq_domain, i));
339 static int tps6586x_irq_init(struct tps6586x *tps6586x, int irq,
347 tps6586x->irq = irq;
349 mutex_init(&tps6586x->irq_lock);
351 tps6586x->mask_reg[i] = 0xff;
352 tps6586x_write(tps6586x->dev, TPS6586X_INT_MASK1 + i, 0xff);
355 tps6586x_reads(tps6586x->dev, TPS6586X_INT_ACK1, sizeof(tmp), tmp);
360 dev_err(tps6586x->dev,
368 tps6586x->irq_domain = irq_domain_add_simple(tps6586x->dev->of_node,
370 tps6586x);
371 if (!tps6586x->irq_domain) {
372 dev_err(tps6586x->dev, "Failed to create IRQ domain\n");
376 "tps6586x", tps6586x);
379 device_init_wakeup(tps6586x->dev, 1);
384 static int tps6586x_add_subdevs(struct tps6586x *tps6586x,
400 pdev->dev.parent = tps6586x->dev;
413 tps6586x_remove_subdevs(tps6586x);
437 { .compatible = "ti,tps6586x", },
506 struct tps6586x *tps6586x;
514 dev_err(&client->dev, "tps6586x requires platform data\n");
524 tps6586x = devm_kzalloc(&client->dev, sizeof(*tps6586x), GFP_KERNEL);
525 if (!tps6586x)
528 tps6586x->version = version;
529 tps6586x_print_version(client, tps6586x->version);
531 tps6586x->client = client;
532 tps6586x->dev = &client->dev;
533 i2c_set_clientdata(client, tps6586x);
535 tps6586x->regmap = devm_regmap_init_i2c(client,
537 if (IS_ERR(tps6586x->regmap)) {
538 ret = PTR_ERR(tps6586x->regmap);
545 ret = tps6586x_irq_init(tps6586x, client->irq,
553 ret = mfd_add_devices(tps6586x->dev, -1,
555 NULL, 0, tps6586x->irq_domain);
561 ret = tps6586x_add_subdevs(tps6586x, pdata);
575 mfd_remove_devices(tps6586x->dev);
578 free_irq(client->irq, tps6586x);
584 struct tps6586x *tps6586x = i2c_get_clientdata(client);
586 tps6586x_remove_subdevs(tps6586x);
587 mfd_remove_devices(tps6586x->dev);
589 free_irq(client->irq, tps6586x);
595 struct tps6586x *tps6586x = dev_get_drvdata(dev);
597 if (tps6586x->client->irq)
598 disable_irq(tps6586x->client->irq);
605 struct tps6586x *tps6586x = dev_get_drvdata(dev);
607 if (tps6586x->client->irq)
608 enable_irq(tps6586x->client->irq);
617 { "tps6586x", 0 },
624 .name = "tps6586x",