Lines Matching refs:max8997
44 static struct i2c_client *get_i2c(struct max8997_dev *max8997, in get_i2c() argument
49 return max8997->i2c; in get_i2c()
53 return max8997->muic; in get_i2c()
55 return max8997->i2c; in get_i2c()
57 return max8997->i2c; in get_i2c()
116 struct max8997_dev *max8997 = irq_get_chip_data(data->irq); in max8997_irq_lock() local
118 mutex_lock(&max8997->irqlock); in max8997_irq_lock()
123 struct max8997_dev *max8997 = irq_get_chip_data(data->irq); in max8997_irq_sync_unlock() local
128 struct i2c_client *i2c = get_i2c(max8997, i); in max8997_irq_sync_unlock()
133 max8997->irq_masks_cache[i] = max8997->irq_masks_cur[i]; in max8997_irq_sync_unlock()
136 max8997->irq_masks_cur[i]); in max8997_irq_sync_unlock()
139 mutex_unlock(&max8997->irqlock); in max8997_irq_sync_unlock()
143 irq_to_max8997_irq(struct max8997_dev *max8997, int irq) in irq_to_max8997_irq() argument
151 struct max8997_dev *max8997 = irq_get_chip_data(data->irq); in max8997_irq_mask() local
152 const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997, in max8997_irq_mask()
155 max8997->irq_masks_cur[irq_data->group] |= irq_data->mask; in max8997_irq_mask()
160 struct max8997_dev *max8997 = irq_get_chip_data(data->irq); in max8997_irq_unmask() local
161 const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997, in max8997_irq_unmask()
164 max8997->irq_masks_cur[irq_data->group] &= ~irq_data->mask; in max8997_irq_unmask()
182 struct max8997_dev *max8997 = data; in max8997_irq_thread() local
188 ret = max8997_read_reg(max8997->i2c, MAX8997_REG_INTSRC, &irq_src); in max8997_irq_thread()
190 dev_err(max8997->dev, "Failed to read interrupt source: %d\n", in max8997_irq_thread()
197 max8997_bulk_read(max8997->i2c, MAX8997_REG_INT1, 4, in max8997_irq_thread()
218 max8997_bulk_read(max8997->muic, MAX8997_MUIC_REG_INT1, 3, in max8997_irq_thread()
228 max8997_bulk_read(max8997->i2c, MAX8997_REG_GPIOCNTL1, in max8997_irq_thread()
235 if (max8997->gpio_status[i] != gpio_info[i]) in max8997_irq_thread()
239 if ((max8997->gpio_status[i] != gpio_info[i]) && in max8997_irq_thread()
244 if ((max8997->gpio_status[i] != gpio_info[i]) && in max8997_irq_thread()
263 ret = max8997_read_reg(max8997->i2c, MAX8997_REG_FLASHSTATUS, in max8997_irq_thread()
269 irq_reg[i] &= ~max8997->irq_masks_cur[i]; in max8997_irq_thread()
274 cur_irq = irq_find_mapping(max8997->irq_domain, i); in max8997_irq_thread()
283 int max8997_irq_resume(struct max8997_dev *max8997) in max8997_irq_resume() argument
285 if (max8997->irq && max8997->irq_domain) in max8997_irq_resume()
286 max8997_irq_thread(0, max8997); in max8997_irq_resume()
293 struct max8997_dev *max8997 = d->host_data; in max8997_irq_domain_map() local
295 irq_set_chip_data(irq, max8997); in max8997_irq_domain_map()
310 int max8997_irq_init(struct max8997_dev *max8997) in max8997_irq_init() argument
317 if (!max8997->irq) { in max8997_irq_init()
318 dev_warn(max8997->dev, "No interrupt specified.\n"); in max8997_irq_init()
322 mutex_init(&max8997->irqlock); in max8997_irq_init()
328 max8997->irq_masks_cur[i] = 0xff; in max8997_irq_init()
329 max8997->irq_masks_cache[i] = 0xff; in max8997_irq_init()
330 i2c = get_i2c(max8997, i); in max8997_irq_init()
341 max8997->gpio_status[i] = (max8997_read_reg(max8997->i2c, in max8997_irq_init()
349 &max8997_irq_domain_ops, max8997); in max8997_irq_init()
351 dev_err(max8997->dev, "could not create irq domain\n"); in max8997_irq_init()
354 max8997->irq_domain = domain; in max8997_irq_init()
356 ret = request_threaded_irq(max8997->irq, NULL, max8997_irq_thread, in max8997_irq_init()
358 "max8997-irq", max8997); in max8997_irq_init()
361 dev_err(max8997->dev, "Failed to request IRQ %d: %d\n", in max8997_irq_init()
362 max8997->irq, ret); in max8997_irq_init()
366 if (!max8997->ono) in max8997_irq_init()
369 ret = request_threaded_irq(max8997->ono, NULL, max8997_irq_thread, in max8997_irq_init()
371 IRQF_ONESHOT, "max8997-ono", max8997); in max8997_irq_init()
374 dev_err(max8997->dev, "Failed to request ono-IRQ %d: %d\n", in max8997_irq_init()
375 max8997->ono, ret); in max8997_irq_init()
380 void max8997_irq_exit(struct max8997_dev *max8997) in max8997_irq_exit() argument
382 if (max8997->ono) in max8997_irq_exit()
383 free_irq(max8997->ono, max8997); in max8997_irq_exit()
385 if (max8997->irq) in max8997_irq_exit()
386 free_irq(max8997->irq, max8997); in max8997_irq_exit()