Lines Matching refs:dtc

272 		u8 dtc;  member
329 struct arm_cmn_dtc *dtc; member
493 u8 dtc = cmn->xps[xp_base + x].dtc; in arm_cmn_map_show() local
495 if (dtc & (dtc - 1)) in arm_cmn_map_show()
498 seq_printf(s, " DTC %ld |", __ffs(dtc)); in arm_cmn_map_show()
1209 writel_relaxed(0, cmn->dtc[0].base + CMN_DT_PMCR); in arm_cmn_set_state()
1218 cmn->dtc[0].base + CMN_DT_PMCR); in arm_cmn_clear_state()
1251 static u64 arm_cmn_read_cc(struct arm_cmn_dtc *dtc) in arm_cmn_read_cc() argument
1253 u64 val = readq_relaxed(dtc->base + CMN_DT_PMCCNTR); in arm_cmn_read_cc()
1255 writeq_relaxed(CMN_CC_INIT, dtc->base + CMN_DT_PMCCNTR); in arm_cmn_read_cc()
1259 static u32 arm_cmn_read_counter(struct arm_cmn_dtc *dtc, int idx) in arm_cmn_read_counter() argument
1263 val = readl_relaxed(dtc->base + pmevcnt); in arm_cmn_read_counter()
1264 writel_relaxed(CMN_COUNTER_INIT, dtc->base + pmevcnt); in arm_cmn_read_counter()
1276 writel_relaxed(CMN_COUNTER_INIT, cmn->dtc[i].base + pmevcnt); in arm_cmn_init_counter()
1277 cmn->dtc[i].counters[hw->dtc_idx] = event; in arm_cmn_init_counter()
1294 delta = arm_cmn_read_cc(cmn->dtc + i); in arm_cmn_event_read()
1305 new = arm_cmn_read_counter(cmn->dtc + i, hw->dtc_idx); in arm_cmn_event_read()
1358 writeq_relaxed(CMN_CC_INIT, cmn->dtc[i].base + CMN_DT_PMCCNTR); in arm_cmn_event_start()
1359 cmn->dtc[i].cc_active = true; in arm_cmn_event_start()
1389 cmn->dtc[i].cc_active = false; in arm_cmn_event_stop()
1623 cmn->dtc[i].counters[hw->dtc_idx] = NULL; in arm_cmn_event_clear()
1630 struct arm_cmn_dtc *dtc = &cmn->dtc[0]; in arm_cmn_event_add() local
1637 while (cmn->dtc[i].cycles) in arm_cmn_event_add()
1641 cmn->dtc[i].cycles = event; in arm_cmn_event_add()
1652 while (dtc->counters[dtc_idx]) in arm_cmn_event_add()
1680 CMN_EVENT_WP_COMBINE(dtc->counters[tmp])) in arm_cmn_event_add()
1732 cmn->dtc[__ffs(hw->dtcs_used)].cycles = NULL; in arm_cmn_event_del()
1765 irq_set_affinity(cmn->dtc[i].irq, cpumask_of(cpu)); in arm_cmn_migrate()
1805 struct arm_cmn_dtc *dtc = dev_id; in arm_cmn_handle_irq() local
1809 u32 status = readl_relaxed(dtc->base + CMN_DT_PMOVSR); in arm_cmn_handle_irq()
1816 if (WARN_ON(!dtc->counters[i])) in arm_cmn_handle_irq()
1818 delta = (u64)arm_cmn_read_counter(dtc, i) << 16; in arm_cmn_handle_irq()
1819 local64_add(delta, &dtc->counters[i]->count); in arm_cmn_handle_irq()
1825 if (dtc->cc_active && !WARN_ON(!dtc->cycles)) { in arm_cmn_handle_irq()
1826 delta = arm_cmn_read_cc(dtc); in arm_cmn_handle_irq()
1827 local64_add(delta, &dtc->cycles->count); in arm_cmn_handle_irq()
1831 writel_relaxed(status, dtc->base + CMN_DT_PMOVSR_CLR); in arm_cmn_handle_irq()
1833 if (!dtc->irq_friend) in arm_cmn_handle_irq()
1835 dtc += dtc->irq_friend; in arm_cmn_handle_irq()
1845 irq = cmn->dtc[i].irq; in arm_cmn_init_irqs()
1847 if (cmn->dtc[j].irq == irq) { in arm_cmn_init_irqs()
1848 cmn->dtc[j].irq_friend = i - j; in arm_cmn_init_irqs()
1854 dev_name(cmn->dev), &cmn->dtc[i]); in arm_cmn_init_irqs()
1883 struct arm_cmn_dtc *dtc = cmn->dtc + idx; in arm_cmn_init_dtc() local
1885 dtc->base = dn->pmu_base - CMN_PMU_OFFSET; in arm_cmn_init_dtc()
1886 dtc->irq = platform_get_irq(to_platform_device(cmn->dev), idx); in arm_cmn_init_dtc()
1887 if (dtc->irq < 0) in arm_cmn_init_dtc()
1888 return dtc->irq; in arm_cmn_init_dtc()
1890 writel_relaxed(0, dtc->base + CMN_DT_PMCR); in arm_cmn_init_dtc()
1891 writel_relaxed(0x1ff, dtc->base + CMN_DT_PMOVSR_CLR); in arm_cmn_init_dtc()
1892 writel_relaxed(CMN_DT_PMCR_OVFL_INTR_EN, dtc->base + CMN_DT_PMCR); in arm_cmn_init_dtc()
1914 cmn->dtc = devm_kcalloc(cmn->dev, cmn->num_dtcs, sizeof(cmn->dtc[0]), GFP_KERNEL); in arm_cmn_init_dtcs()
1915 if (!cmn->dtc) in arm_cmn_init_dtcs()
1924 dn->dtc &= dtcs_present; in arm_cmn_init_dtcs()
1936 if (xp->dtc == 0xf) in arm_cmn_init_dtcs()
1937 xp->dtc = 1 << dtc_idx; in arm_cmn_init_dtcs()
1952 writel_relaxed(CMN_DT_DTC_CTL_DT_EN, cmn->dtc[0].base + CMN_DT_DTC_CTL); in arm_cmn_init_dtcs()
2073 xp->dtc = 0xf; in arm_cmn_discover()
2075 xp->dtc = 1 << readl_relaxed(xp_region + CMN_DTM_UNIT_INFO); in arm_cmn_discover()
2325 writel_relaxed(0, cmn->dtc[0].base + CMN_DT_DTC_CTL); in arm_cmn_remove()