Lines Matching refs:dtc

290 		u8 dtc;  member
347 struct arm_cmn_dtc *dtc; member
541 u8 dtc = cmn->xps[xp_base + x].dtc; in arm_cmn_map_show() local
543 if (dtc & (dtc - 1)) in arm_cmn_map_show()
546 seq_printf(s, " DTC %ld |", __ffs(dtc)); in arm_cmn_map_show()
1367 writel_relaxed(0, cmn->dtc[0].base + CMN_DT_PMCR); in arm_cmn_set_state()
1376 cmn->dtc[0].base + CMN_DT_PMCR); in arm_cmn_clear_state()
1409 static u64 arm_cmn_read_cc(struct arm_cmn_dtc *dtc) in arm_cmn_read_cc() argument
1411 u64 val = readq_relaxed(dtc->base + CMN_DT_PMCCNTR); in arm_cmn_read_cc()
1413 writeq_relaxed(CMN_CC_INIT, dtc->base + CMN_DT_PMCCNTR); in arm_cmn_read_cc()
1417 static u32 arm_cmn_read_counter(struct arm_cmn_dtc *dtc, int idx) in arm_cmn_read_counter() argument
1421 val = readl_relaxed(dtc->base + pmevcnt); in arm_cmn_read_counter()
1422 writel_relaxed(CMN_COUNTER_INIT, dtc->base + pmevcnt); in arm_cmn_read_counter()
1434 writel_relaxed(CMN_COUNTER_INIT, cmn->dtc[i].base + pmevcnt); in arm_cmn_init_counter()
1435 cmn->dtc[i].counters[hw->dtc_idx] = event; in arm_cmn_init_counter()
1452 delta = arm_cmn_read_cc(cmn->dtc + i); in arm_cmn_event_read()
1463 new = arm_cmn_read_counter(cmn->dtc + i, hw->dtc_idx); in arm_cmn_event_read()
1520 writeq_relaxed(CMN_CC_INIT, cmn->dtc[i].base + CMN_DT_PMCCNTR); in arm_cmn_event_start()
1521 cmn->dtc[i].cc_active = true; in arm_cmn_event_start()
1551 cmn->dtc[i].cc_active = false; in arm_cmn_event_stop()
1785 cmn->dtc[i].counters[hw->dtc_idx] = NULL; in arm_cmn_event_clear()
1792 struct arm_cmn_dtc *dtc = &cmn->dtc[0]; in arm_cmn_event_add() local
1799 while (cmn->dtc[i].cycles) in arm_cmn_event_add()
1803 cmn->dtc[i].cycles = event; in arm_cmn_event_add()
1814 while (dtc->counters[dtc_idx]) in arm_cmn_event_add()
1842 CMN_EVENT_WP_COMBINE(dtc->counters[tmp])) in arm_cmn_event_add()
1894 cmn->dtc[__ffs(hw->dtcs_used)].cycles = NULL; in arm_cmn_event_del()
1927 irq_set_affinity(cmn->dtc[i].irq, cpumask_of(cpu)); in arm_cmn_migrate()
1967 struct arm_cmn_dtc *dtc = dev_id; in arm_cmn_handle_irq() local
1971 u32 status = readl_relaxed(dtc->base + CMN_DT_PMOVSR); in arm_cmn_handle_irq()
1978 if (WARN_ON(!dtc->counters[i])) in arm_cmn_handle_irq()
1980 delta = (u64)arm_cmn_read_counter(dtc, i) << 16; in arm_cmn_handle_irq()
1981 local64_add(delta, &dtc->counters[i]->count); in arm_cmn_handle_irq()
1987 if (dtc->cc_active && !WARN_ON(!dtc->cycles)) { in arm_cmn_handle_irq()
1988 delta = arm_cmn_read_cc(dtc); in arm_cmn_handle_irq()
1989 local64_add(delta, &dtc->cycles->count); in arm_cmn_handle_irq()
1993 writel_relaxed(status, dtc->base + CMN_DT_PMOVSR_CLR); in arm_cmn_handle_irq()
1995 if (!dtc->irq_friend) in arm_cmn_handle_irq()
1997 dtc += dtc->irq_friend; in arm_cmn_handle_irq()
2007 irq = cmn->dtc[i].irq; in arm_cmn_init_irqs()
2009 if (cmn->dtc[j].irq == irq) { in arm_cmn_init_irqs()
2010 cmn->dtc[j].irq_friend = i - j; in arm_cmn_init_irqs()
2016 dev_name(cmn->dev), &cmn->dtc[i]); in arm_cmn_init_irqs()
2045 struct arm_cmn_dtc *dtc = cmn->dtc + idx; in arm_cmn_init_dtc() local
2047 dtc->base = dn->pmu_base - CMN_PMU_OFFSET; in arm_cmn_init_dtc()
2048 dtc->irq = platform_get_irq(to_platform_device(cmn->dev), idx); in arm_cmn_init_dtc()
2049 if (dtc->irq < 0) in arm_cmn_init_dtc()
2050 return dtc->irq; in arm_cmn_init_dtc()
2052 writel_relaxed(CMN_DT_DTC_CTL_DT_EN, dtc->base + CMN_DT_DTC_CTL); in arm_cmn_init_dtc()
2053 writel_relaxed(CMN_DT_PMCR_PMU_EN | CMN_DT_PMCR_OVFL_INTR_EN, dtc->base + CMN_DT_PMCR); in arm_cmn_init_dtc()
2054 writeq_relaxed(0, dtc->base + CMN_DT_PMCCNTR); in arm_cmn_init_dtc()
2055 writel_relaxed(0x1ff, dtc->base + CMN_DT_PMOVSR_CLR); in arm_cmn_init_dtc()
2077 cmn->dtc = devm_kcalloc(cmn->dev, cmn->num_dtcs, sizeof(cmn->dtc[0]), GFP_KERNEL); in arm_cmn_init_dtcs()
2078 if (!cmn->dtc) in arm_cmn_init_dtcs()
2087 dn->dtc &= dtcs_present; in arm_cmn_init_dtcs()
2099 if (xp->dtc == 0xf) in arm_cmn_init_dtcs()
2100 xp->dtc = 1 << dtc_idx; in arm_cmn_init_dtcs()
2249 xp->dtc = 0xf; in arm_cmn_discover()
2251 xp->dtc = 1 << readl_relaxed(xp_region + CMN_DTM_UNIT_INFO); in arm_cmn_discover()
2495 writel_relaxed(0, cmn->dtc[0].base + CMN_DT_DTC_CTL); in arm_cmn_remove()