Lines Matching defs:max8997

3 // max8997-irq.c - Interrupt controller support for MAX8997
13 #include <linux/mfd/max8997.h>
14 #include <linux/mfd/max8997-private.h>
30 static struct i2c_client *get_i2c(struct max8997_dev *max8997,
35 return max8997->i2c;
39 return max8997->muic;
41 return max8997->i2c;
43 return max8997->i2c;
102 struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
104 mutex_lock(&max8997->irqlock);
109 struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
114 struct i2c_client *i2c = get_i2c(max8997, i);
119 max8997->irq_masks_cache[i] = max8997->irq_masks_cur[i];
122 max8997->irq_masks_cur[i]);
125 mutex_unlock(&max8997->irqlock);
129 irq_to_max8997_irq(struct max8997_dev *max8997, struct irq_data *data)
136 struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
137 const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997,
140 max8997->irq_masks_cur[irq_data->group] |= irq_data->mask;
145 struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
146 const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997,
149 max8997->irq_masks_cur[irq_data->group] &= ~irq_data->mask;
153 .name = "max8997",
167 struct max8997_dev *max8997 = data;
173 ret = max8997_read_reg(max8997->i2c, MAX8997_REG_INTSRC, &irq_src);
175 dev_err(max8997->dev, "Failed to read interrupt source: %d\n",
182 max8997_bulk_read(max8997->i2c, MAX8997_REG_INT1, 4,
203 max8997_bulk_read(max8997->muic, MAX8997_MUIC_REG_INT1, 3,
213 max8997_bulk_read(max8997->i2c, MAX8997_REG_GPIOCNTL1,
220 if (max8997->gpio_status[i] != gpio_info[i])
224 if ((max8997->gpio_status[i] != gpio_info[i]) &&
229 if ((max8997->gpio_status[i] != gpio_info[i]) &&
248 ret = max8997_read_reg(max8997->i2c, MAX8997_REG_FLASHSTATUS,
254 irq_reg[i] &= ~max8997->irq_masks_cur[i];
259 cur_irq = irq_find_mapping(max8997->irq_domain, i);
268 int max8997_irq_resume(struct max8997_dev *max8997)
270 if (max8997->irq && max8997->irq_domain)
271 max8997_irq_thread(0, max8997);
278 struct max8997_dev *max8997 = d->host_data;
280 irq_set_chip_data(irq, max8997);
292 int max8997_irq_init(struct max8997_dev *max8997)
299 if (!max8997->irq) {
300 dev_warn(max8997->dev, "No interrupt specified.\n");
304 mutex_init(&max8997->irqlock);
310 max8997->irq_masks_cur[i] = 0xff;
311 max8997->irq_masks_cache[i] = 0xff;
312 i2c = get_i2c(max8997, i);
323 max8997->gpio_status[i] = (max8997_read_reg(max8997->i2c,
331 &max8997_irq_domain_ops, max8997);
333 dev_err(max8997->dev, "could not create irq domain\n");
336 max8997->irq_domain = domain;
338 ret = request_threaded_irq(max8997->irq, NULL, max8997_irq_thread,
340 "max8997-irq", max8997);
343 dev_err(max8997->dev, "Failed to request IRQ %d: %d\n",
344 max8997->irq, ret);
348 if (!max8997->ono)
351 ret = request_threaded_irq(max8997->ono, NULL, max8997_irq_thread,
353 IRQF_ONESHOT, "max8997-ono", max8997);
356 dev_err(max8997->dev, "Failed to request ono-IRQ %d: %d\n",
357 max8997->ono, ret);
362 void max8997_irq_exit(struct max8997_dev *max8997)
364 if (max8997->ono)
365 free_irq(max8997->ono, max8997);
367 if (max8997->irq)
368 free_irq(max8997->irq, max8997);