Lines Matching defs:dtc

202 			int dtc;
243 struct arm_cmn_dtc *dtc;
657 writel_relaxed(0, cmn->dtc[0].base + CMN_DT_PMCR);
666 cmn->dtc[0].base + CMN_DT_PMCR);
698 static u64 arm_cmn_read_cc(struct arm_cmn_dtc *dtc)
700 u64 val = readq_relaxed(dtc->base + CMN_DT_PMCCNTR);
702 writeq_relaxed(CMN_CC_INIT, dtc->base + CMN_DT_PMCCNTR);
706 static u32 arm_cmn_read_counter(struct arm_cmn_dtc *dtc, int idx)
710 val = readl_relaxed(dtc->base + pmevcnt);
711 writel_relaxed(CMN_COUNTER_INIT, dtc->base + pmevcnt);
723 writel_relaxed(CMN_COUNTER_INIT, cmn->dtc[i].base + pmevcnt);
724 cmn->dtc[i].counters[hw->dtc_idx] = event;
741 delta = arm_cmn_read_cc(cmn->dtc + i);
752 new = arm_cmn_read_counter(cmn->dtc + i, hw->dtc_idx);
769 writeq_relaxed(CMN_CC_INIT, cmn->dtc[i].base + CMN_DT_PMCCNTR);
770 cmn->dtc[i].cc_active = true;
798 cmn->dtc[i].cc_active = false;
1006 cmn->dtc[i].counters[hw->dtc_idx] = NULL;
1013 struct arm_cmn_dtc *dtc = &cmn->dtc[0];
1020 while (cmn->dtc[i].cycles)
1024 cmn->dtc[i].cycles = event;
1035 while (dtc->counters[dtc_idx])
1063 CMN_EVENT_WP_COMBINE(dtc->counters[tmp]))
1123 cmn->dtc[__ffs(hw->dtcs_used)].cycles = NULL;
1165 irq_set_affinity_hint(cmn->dtc[i].irq, cpumask_of(target));
1172 struct arm_cmn_dtc *dtc = dev_id;
1176 u32 status = readl_relaxed(dtc->base + CMN_DT_PMOVSR);
1183 if (WARN_ON(!dtc->counters[i]))
1185 delta = (u64)arm_cmn_read_counter(dtc, i) << 16;
1186 local64_add(delta, &dtc->counters[i]->count);
1192 if (dtc->cc_active && !WARN_ON(!dtc->cycles)) {
1193 delta = arm_cmn_read_cc(dtc);
1194 local64_add(delta, &dtc->cycles->count);
1198 writel_relaxed(status, dtc->base + CMN_DT_PMOVSR_CLR);
1200 if (!dtc->irq_friend)
1202 dtc += dtc->irq_friend;
1212 irq = cmn->dtc[i].irq;
1214 if (cmn->dtc[j].irq == irq) {
1215 cmn->dtc[j].irq_friend = i - j;
1221 dev_name(cmn->dev), &cmn->dtc[i]);
1244 xp->dtc = -1;
1249 struct arm_cmn_dtc *dtc = cmn->dtc + idx;
1252 dtc->base = dn->pmu_base - CMN_PMU_OFFSET;
1253 dtc->irq = platform_get_irq(to_platform_device(cmn->dev), idx);
1254 if (dtc->irq < 0)
1255 return dtc->irq;
1257 writel_relaxed(CMN_DT_DTC_CTL_DT_EN, dtc->base + CMN_DT_DTC_CTL);
1258 writel_relaxed(CMN_DT_PMCR_PMU_EN | CMN_DT_PMCR_OVFL_INTR_EN, dtc->base + CMN_DT_PMCR);
1259 writeq_relaxed(0, dtc->base + CMN_DT_PMCCNTR);
1260 writel_relaxed(0x1ff, dtc->base + CMN_DT_PMOVSR_CLR);
1264 xp->dtc = idx;
1285 cmn->dtc = devm_kcalloc(cmn->dev, cmn->num_dtcs, sizeof(cmn->dtc[0]), GFP_KERNEL);
1286 if (!cmn->dtc)
1297 dn->dtc = 0;
1574 writel_relaxed(0, cmn->dtc[0].base + CMN_DT_DTC_CTL);
1580 irq_set_affinity_hint(cmn->dtc[i].irq, NULL);