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);
274 struct tps6586x *tps6586x = irq_data_get_irq_chip_data(irq_data);
275 return irq_set_irq_wake(tps6586x->irq, on);
279 .name = "tps6586x",
290 struct tps6586x *tps6586x = h->host_data;
292 irq_set_chip_data(virq, tps6586x);
307 struct tps6586x *tps6586x = data;
312 ret = tps6586x_reads(tps6586x->dev, TPS6586X_INT_ACK1,
316 dev_err(tps6586x->dev, "failed to read interrupt status\n");
325 if (tps6586x->irq_en & (1 << i))
327 irq_find_mapping(tps6586x->irq_domain, i));
335 static int tps6586x_irq_init(struct tps6586x *tps6586x, int irq,
343 tps6586x->irq = irq;
345 mutex_init(&tps6586x->irq_lock);
347 tps6586x->mask_reg[i] = 0xff;
348 tps6586x_write(tps6586x->dev, TPS6586X_INT_MASK1 + i, 0xff);
351 tps6586x_reads(tps6586x->dev, TPS6586X_INT_ACK1, sizeof(tmp), tmp);
356 dev_err(tps6586x->dev,
364 tps6586x->irq_domain = irq_domain_add_simple(tps6586x->dev->of_node,
366 tps6586x);
367 if (!tps6586x->irq_domain) {
368 dev_err(tps6586x->dev, "Failed to create IRQ domain\n");
372 "tps6586x", tps6586x);
375 device_init_wakeup(tps6586x->dev, 1);
380 static int tps6586x_add_subdevs(struct tps6586x *tps6586x,
396 pdev->dev.parent = tps6586x->dev;
409 tps6586x_remove_subdevs(tps6586x);
433 { .compatible = "ti,tps6586x", },
501 struct tps6586x *tps6586x;
509 dev_err(&client->dev, "tps6586x requires platform data\n");
519 tps6586x = devm_kzalloc(&client->dev, sizeof(*tps6586x), GFP_KERNEL);
520 if (!tps6586x)
523 tps6586x->version = version;
524 tps6586x_print_version(client, tps6586x->version);
526 tps6586x->client = client;
527 tps6586x->dev = &client->dev;
528 i2c_set_clientdata(client, tps6586x);
530 tps6586x->regmap = devm_regmap_init_i2c(client,
532 if (IS_ERR(tps6586x->regmap)) {
533 ret = PTR_ERR(tps6586x->regmap);
540 ret = tps6586x_irq_init(tps6586x, client->irq,
548 ret = mfd_add_devices(tps6586x->dev, -1,
550 NULL, 0, tps6586x->irq_domain);
556 ret = tps6586x_add_subdevs(tps6586x, pdata);
570 mfd_remove_devices(tps6586x->dev);
573 free_irq(client->irq, tps6586x);
579 struct tps6586x *tps6586x = i2c_get_clientdata(client);
581 tps6586x_remove_subdevs(tps6586x);
582 mfd_remove_devices(tps6586x->dev);
584 free_irq(client->irq, tps6586x);
589 struct tps6586x *tps6586x = dev_get_drvdata(dev);
591 if (tps6586x->client->irq)
592 disable_irq(tps6586x->client->irq);
599 struct tps6586x *tps6586x = dev_get_drvdata(dev);
601 if (tps6586x->client->irq)
602 enable_irq(tps6586x->client->irq);
611 { "tps6586x", 0 },
618 .name = "tps6586x",