Lines Matching full:intr
209 static inline struct dpu_hw_intr_entry *dpu_core_irq_get_entry(struct dpu_hw_intr *intr, in dpu_core_irq_get_entry() argument
212 return &intr->irq_tbl[irq_idx - 1]; in dpu_core_irq_get_entry()
241 struct dpu_hw_intr *intr = dpu_kms->hw_intr; in dpu_core_irq() local
249 if (!intr) in dpu_core_irq()
252 spin_lock_irqsave(&intr->irq_lock, irq_flags); in dpu_core_irq()
254 if (!test_bit(reg_idx, &intr->irq_mask)) in dpu_core_irq()
258 irq_status = DPU_REG_READ(&intr->hw, intr->intr_set[reg_idx].status_off); in dpu_core_irq()
261 enable_mask = DPU_REG_READ(&intr->hw, intr->intr_set[reg_idx].en_off); in dpu_core_irq()
265 DPU_REG_WRITE(&intr->hw, intr->intr_set[reg_idx].clr_off, in dpu_core_irq()
275 * Search through matching intr status. in dpu_core_irq()
294 spin_unlock_irqrestore(&intr->irq_lock, irq_flags); in dpu_core_irq()
299 static int dpu_hw_intr_enable_irq_locked(struct dpu_hw_intr *intr, in dpu_hw_intr_enable_irq_locked() argument
307 if (!intr) in dpu_hw_intr_enable_irq_locked()
321 assert_spin_locked(&intr->irq_lock); in dpu_hw_intr_enable_irq_locked()
324 reg = &intr->intr_set[reg_idx]; in dpu_hw_intr_enable_irq_locked()
330 cache_irq_mask = intr->cache_irq_mask[reg_idx]; in dpu_hw_intr_enable_irq_locked()
338 DPU_REG_WRITE(&intr->hw, reg->clr_off, DPU_IRQ_MASK(irq_idx)); in dpu_hw_intr_enable_irq_locked()
340 DPU_REG_WRITE(&intr->hw, reg->en_off, cache_irq_mask); in dpu_hw_intr_enable_irq_locked()
345 intr->cache_irq_mask[reg_idx] = cache_irq_mask; in dpu_hw_intr_enable_irq_locked()
355 static int dpu_hw_intr_disable_irq_locked(struct dpu_hw_intr *intr, in dpu_hw_intr_disable_irq_locked() argument
363 if (!intr) in dpu_hw_intr_disable_irq_locked()
377 assert_spin_locked(&intr->irq_lock); in dpu_hw_intr_disable_irq_locked()
380 reg = &intr->intr_set[reg_idx]; in dpu_hw_intr_disable_irq_locked()
382 cache_irq_mask = intr->cache_irq_mask[reg_idx]; in dpu_hw_intr_disable_irq_locked()
390 DPU_REG_WRITE(&intr->hw, reg->en_off, cache_irq_mask); in dpu_hw_intr_disable_irq_locked()
392 DPU_REG_WRITE(&intr->hw, reg->clr_off, DPU_IRQ_MASK(irq_idx)); in dpu_hw_intr_disable_irq_locked()
397 intr->cache_irq_mask[reg_idx] = cache_irq_mask; in dpu_hw_intr_disable_irq_locked()
409 struct dpu_hw_intr *intr = dpu_kms->hw_intr; in dpu_clear_irqs() local
412 if (!intr) in dpu_clear_irqs()
416 if (test_bit(i, &intr->irq_mask)) in dpu_clear_irqs()
417 DPU_REG_WRITE(&intr->hw, in dpu_clear_irqs()
418 intr->intr_set[i].clr_off, 0xffffffff); in dpu_clear_irqs()
427 struct dpu_hw_intr *intr = dpu_kms->hw_intr; in dpu_disable_all_irqs() local
430 if (!intr) in dpu_disable_all_irqs()
434 if (test_bit(i, &intr->irq_mask)) in dpu_disable_all_irqs()
435 DPU_REG_WRITE(&intr->hw, in dpu_disable_all_irqs()
436 intr->intr_set[i].en_off, 0x00000000); in dpu_disable_all_irqs()
446 struct dpu_hw_intr *intr = dpu_kms->hw_intr; in dpu_core_irq_read() local
451 if (!intr) in dpu_core_irq_read()
459 spin_lock_irqsave(&intr->irq_lock, irq_flags); in dpu_core_irq_read()
462 intr_status = DPU_REG_READ(&intr->hw, in dpu_core_irq_read()
463 intr->intr_set[reg_idx].status_off) & in dpu_core_irq_read()
466 DPU_REG_WRITE(&intr->hw, intr->intr_set[reg_idx].clr_off, in dpu_core_irq_read()
472 spin_unlock_irqrestore(&intr->irq_lock, irq_flags); in dpu_core_irq_read()
481 struct dpu_hw_intr *intr; in dpu_hw_intr_init() local
487 intr = drmm_kzalloc(dev, sizeof(*intr), GFP_KERNEL); in dpu_hw_intr_init()
488 if (!intr) in dpu_hw_intr_init()
492 intr->intr_set = dpu_intr_set_7xxx; in dpu_hw_intr_init()
494 intr->intr_set = dpu_intr_set_legacy; in dpu_hw_intr_init()
496 intr->hw.blk_addr = addr + m->mdp[0].base; in dpu_hw_intr_init()
498 intr->irq_mask = BIT(MDP_SSPP_TOP0_INTR) | in dpu_hw_intr_init()
507 intr->irq_mask |= BIT(MDP_INTFn_INTR(intf->id)); in dpu_hw_intr_init()
510 intr->irq_mask |= BIT(DPU_IRQ_REG(intf->intr_tear_rd_ptr)); in dpu_hw_intr_init()
513 spin_lock_init(&intr->irq_lock); in dpu_hw_intr_init()
515 return intr; in dpu_hw_intr_init()