Lines Matching refs:rc5t583
154 struct rc5t583 *rc5t583 = irq_data_get_irq_chip_data(irq_data); in rc5t583_irq_lock() local
155 mutex_lock(&rc5t583->irq_lock); in rc5t583_irq_lock()
160 struct rc5t583 *rc5t583 = irq_data_get_irq_chip_data(irq_data); in rc5t583_irq_unmask() local
161 unsigned int __irq = irq_data->irq - rc5t583->irq_base; in rc5t583_irq_unmask()
164 rc5t583->group_irq_en[data->grp_index] |= 1 << data->grp_index; in rc5t583_irq_unmask()
165 rc5t583->intc_inten_reg |= 1 << data->master_bit; in rc5t583_irq_unmask()
166 rc5t583->irq_en_reg[data->mask_reg_index] |= 1 << data->int_en_bit; in rc5t583_irq_unmask()
171 struct rc5t583 *rc5t583 = irq_data_get_irq_chip_data(irq_data); in rc5t583_irq_mask() local
172 unsigned int __irq = irq_data->irq - rc5t583->irq_base; in rc5t583_irq_mask()
175 rc5t583->group_irq_en[data->grp_index] &= ~(1 << data->grp_index); in rc5t583_irq_mask()
176 if (!rc5t583->group_irq_en[data->grp_index]) in rc5t583_irq_mask()
177 rc5t583->intc_inten_reg &= ~(1 << data->master_bit); in rc5t583_irq_mask()
179 rc5t583->irq_en_reg[data->mask_reg_index] &= ~(1 << data->int_en_bit); in rc5t583_irq_mask()
184 struct rc5t583 *rc5t583 = irq_data_get_irq_chip_data(irq_data); in rc5t583_irq_set_type() local
185 unsigned int __irq = irq_data->irq - rc5t583->irq_base; in rc5t583_irq_set_type()
202 rc5t583->gpedge_reg[gpedge_index] &= ~(3 << gpedge_bit_pos); in rc5t583_irq_set_type()
203 rc5t583->gpedge_reg[gpedge_index] |= (val << gpedge_bit_pos); in rc5t583_irq_set_type()
212 struct rc5t583 *rc5t583 = irq_data_get_irq_chip_data(irq_data); in rc5t583_irq_sync_unlock() local
216 for (i = 0; i < ARRAY_SIZE(rc5t583->gpedge_reg); i++) { in rc5t583_irq_sync_unlock()
217 ret = rc5t583_write(rc5t583->dev, gpedge_add[i], in rc5t583_irq_sync_unlock()
218 rc5t583->gpedge_reg[i]); in rc5t583_irq_sync_unlock()
220 dev_warn(rc5t583->dev, in rc5t583_irq_sync_unlock()
225 for (i = 0; i < ARRAY_SIZE(rc5t583->irq_en_reg); i++) { in rc5t583_irq_sync_unlock()
226 ret = rc5t583_write(rc5t583->dev, irq_en_add[i], in rc5t583_irq_sync_unlock()
227 rc5t583->irq_en_reg[i]); in rc5t583_irq_sync_unlock()
229 dev_warn(rc5t583->dev, in rc5t583_irq_sync_unlock()
234 ret = rc5t583_write(rc5t583->dev, RC5T583_INTC_INTEN, in rc5t583_irq_sync_unlock()
235 rc5t583->intc_inten_reg); in rc5t583_irq_sync_unlock()
237 dev_warn(rc5t583->dev, in rc5t583_irq_sync_unlock()
241 mutex_unlock(&rc5t583->irq_lock); in rc5t583_irq_sync_unlock()
246 struct rc5t583 *rc5t583 = irq_data_get_irq_chip_data(irq_data); in rc5t583_irq_set_wake() local
247 return irq_set_irq_wake(rc5t583->chip_irq, on); in rc5t583_irq_set_wake()
255 struct rc5t583 *rc5t583 = data; in rc5t583_irq() local
266 ret = rc5t583_read(rc5t583->dev, RC5T583_INTC_INTMON, &master_int); in rc5t583_irq()
268 dev_err(rc5t583->dev, in rc5t583_irq()
278 ret = rc5t583_read(rc5t583->dev, irq_mon_add[i], &int_sts[i]); in rc5t583_irq()
280 dev_warn(rc5t583->dev, in rc5t583_irq()
299 ret = rc5t583_write(rc5t583->dev, irq_clr_add[i], in rc5t583_irq()
302 dev_warn(rc5t583->dev, in rc5t583_irq()
317 (rc5t583->group_irq_en[data->master_bit] & in rc5t583_irq()
319 handle_nested_irq(rc5t583->irq_base + i); in rc5t583_irq()
335 int rc5t583_irq_init(struct rc5t583 *rc5t583, int irq, int irq_base) in rc5t583_irq_init() argument
340 dev_warn(rc5t583->dev, "No interrupt support on IRQ base\n"); in rc5t583_irq_init()
344 mutex_init(&rc5t583->irq_lock); in rc5t583_irq_init()
348 ret = rc5t583_write(rc5t583->dev, irq_en_add[i], in rc5t583_irq_init()
349 rc5t583->irq_en_reg[i]); in rc5t583_irq_init()
351 dev_warn(rc5t583->dev, in rc5t583_irq_init()
357 ret = rc5t583_write(rc5t583->dev, gpedge_add[i], in rc5t583_irq_init()
358 rc5t583->gpedge_reg[i]); in rc5t583_irq_init()
360 dev_warn(rc5t583->dev, in rc5t583_irq_init()
365 ret = rc5t583_write(rc5t583->dev, RC5T583_INTC_INTEN, 0x0); in rc5t583_irq_init()
367 dev_warn(rc5t583->dev, in rc5t583_irq_init()
373 ret = rc5t583_write(rc5t583->dev, irq_clr_add[i], 0); in rc5t583_irq_init()
375 dev_warn(rc5t583->dev, in rc5t583_irq_init()
380 rc5t583->irq_base = irq_base; in rc5t583_irq_init()
381 rc5t583->chip_irq = irq; in rc5t583_irq_init()
384 int __irq = i + rc5t583->irq_base; in rc5t583_irq_init()
385 irq_set_chip_data(__irq, rc5t583); in rc5t583_irq_init()
395 "rc5t583", rc5t583); in rc5t583_irq_init()
397 dev_err(rc5t583->dev, in rc5t583_irq_init()
402 int rc5t583_irq_exit(struct rc5t583 *rc5t583) in rc5t583_irq_exit() argument
404 if (rc5t583->chip_irq) in rc5t583_irq_exit()
405 free_irq(rc5t583->chip_irq, rc5t583); in rc5t583_irq_exit()