Lines Matching refs:dn

381 					       const struct arm_cmn_node *dn)  in arm_cmn_node_to_xp()  argument
383 struct arm_cmn_nodeid nid = arm_cmn_nid(cmn, dn->id); in arm_cmn_node_to_xp()
391 struct arm_cmn_node *dn; in arm_cmn_node() local
393 for (dn = cmn->dns; dn->type; dn++) in arm_cmn_node()
394 if (dn->type == type) in arm_cmn_node()
395 return dn; in arm_cmn_node()
440 struct arm_cmn_node *dn; in arm_cmn_show_logid() local
442 for (dn = cmn->dns; dn->type; dn++) { in arm_cmn_show_logid()
443 struct arm_cmn_nodeid nid = arm_cmn_nid(cmn, dn->id); in arm_cmn_show_logid()
445 if (dn->type == CMN_TYPE_XP) in arm_cmn_show_logid()
448 if (dn->type < CMN_TYPE_HNI) in arm_cmn_show_logid()
454 seq_printf(s, " #%-2d |", dn->logid); in arm_cmn_show_logid()
540 struct arm_cmn_node *dn; member
550 #define for_each_hw_dn(hw, dn, i) \ argument
551 for (i = 0, dn = hw->dn; i < hw->num_dns; i++, dn++)
1235 struct arm_cmn_node *dn; in arm_cmn_read_dtm() local
1240 for_each_hw_dn(hw, dn, i) { in arm_cmn_read_dtm()
1241 if (dtm != &cmn->dtms[dn->dtm]) { in arm_cmn_read_dtm()
1242 dtm = &cmn->dtms[dn->dtm] + hw->dtm_offset; in arm_cmn_read_dtm()
1312 static int arm_cmn_set_event_sel_hi(struct arm_cmn_node *dn, in arm_cmn_set_event_sel_hi() argument
1320 if (!dn->occupid[fsel].count) { in arm_cmn_set_event_sel_hi()
1321 dn->occupid[fsel].val = occupid; in arm_cmn_set_event_sel_hi()
1323 dn->occupid[SEL_CBUSY_SNTHROTTLE_SEL].val) | in arm_cmn_set_event_sel_hi()
1325 dn->occupid[SEL_CLASS_OCCUP_ID].val) | in arm_cmn_set_event_sel_hi()
1327 dn->occupid[SEL_OCCUP1ID].val); in arm_cmn_set_event_sel_hi()
1328 writel_relaxed(reg >> 32, dn->pmu_base + CMN_PMU_EVENT_SEL + 4); in arm_cmn_set_event_sel_hi()
1329 } else if (dn->occupid[fsel].val != occupid) { in arm_cmn_set_event_sel_hi()
1332 dn->occupid[fsel].count++; in arm_cmn_set_event_sel_hi()
1336 static void arm_cmn_set_event_sel_lo(struct arm_cmn_node *dn, int dtm_idx, in arm_cmn_set_event_sel_lo() argument
1340 dn->event_w[dtm_idx] = eventid; in arm_cmn_set_event_sel_lo()
1341 writeq_relaxed(le64_to_cpu(dn->event_sel_w), dn->pmu_base + CMN_PMU_EVENT_SEL); in arm_cmn_set_event_sel_lo()
1343 dn->event[dtm_idx] = eventid; in arm_cmn_set_event_sel_lo()
1344 writel_relaxed(le32_to_cpu(dn->event_sel), dn->pmu_base + CMN_PMU_EVENT_SEL); in arm_cmn_set_event_sel_lo()
1352 struct arm_cmn_node *dn; in arm_cmn_event_start() local
1365 for_each_hw_dn(hw, dn, i) { in arm_cmn_event_start()
1366 void __iomem *base = dn->pmu_base + CMN_DTM_OFFSET(hw->dtm_offset); in arm_cmn_event_start()
1371 } else for_each_hw_dn(hw, dn, i) { in arm_cmn_event_start()
1374 arm_cmn_set_event_sel_lo(dn, dtm_idx, CMN_EVENT_EVENTID(event), in arm_cmn_event_start()
1383 struct arm_cmn_node *dn; in arm_cmn_event_stop() local
1393 for_each_hw_dn(hw, dn, i) { in arm_cmn_event_stop()
1394 void __iomem *base = dn->pmu_base + CMN_DTM_OFFSET(hw->dtm_offset); in arm_cmn_event_stop()
1399 } else for_each_hw_dn(hw, dn, i) { in arm_cmn_event_stop()
1402 arm_cmn_set_event_sel_lo(dn, dtm_idx, 0, hw->wide_sel); in arm_cmn_event_stop()
1420 struct arm_cmn_node *dn; in arm_cmn_val_add_event() local
1435 for_each_hw_dn(hw, dn, i) { in arm_cmn_val_add_event()
1436 int wp_idx, dtm = dn->dtm, sel = hw->filter_sel; in arm_cmn_val_add_event()
1454 struct arm_cmn_node *dn; in arm_cmn_validate_group() local
1483 for_each_hw_dn(hw, dn, i) { in arm_cmn_validate_group()
1484 int wp_idx, wp_cmb, dtm = dn->dtm, sel = hw->filter_sel; in arm_cmn_validate_group()
1531 struct arm_cmn_node *dn; in arm_cmn_event_init() local
1571 hw->dn = arm_cmn_node(cmn, type); in arm_cmn_event_init()
1572 if (!hw->dn) in arm_cmn_event_init()
1574 for (dn = hw->dn; dn->type == type; dn++) { in arm_cmn_event_init()
1575 if (bynodeid && dn->id != nodeid) { in arm_cmn_event_init()
1576 hw->dn++; in arm_cmn_event_init()
1579 hw->dtcs_used |= arm_cmn_node_to_xp(cmn, dn)->dtc; in arm_cmn_event_init()
1603 struct arm_cmn_dtm *dtm = &cmn->dtms[hw->dn[i].dtm] + hw->dtm_offset; in arm_cmn_event_clear()
1610 hw->dn[i].occupid[hw->filter_sel].count--; in arm_cmn_event_clear()
1626 struct arm_cmn_node *dn; in arm_cmn_event_add() local
1654 for_each_hw_dn(hw, dn, i) { in arm_cmn_event_add()
1655 struct arm_cmn_dtm *dtm = &cmn->dtms[dn->dtm] + hw->dtm_offset; in arm_cmn_event_add()
1682 struct arm_cmn_nodeid nid = arm_cmn_nid(cmn, dn->id); in arm_cmn_event_add()
1690 if (arm_cmn_set_event_sel_hi(dn, hw->filter_sel, CMN_EVENT_OCCUPID(event))) in arm_cmn_event_add()
1875 static int arm_cmn_init_dtc(struct arm_cmn *cmn, struct arm_cmn_node *dn, int idx) in arm_cmn_init_dtc() argument
1879 dtc->base = dn->pmu_base - CMN_PMU_OFFSET; in arm_cmn_init_dtc()
1904 struct arm_cmn_node *dn, *xp; in arm_cmn_init_dtcs() local
1916 for (dn = cmn->dns; dn->type; dn++) { in arm_cmn_init_dtcs()
1917 if (dn->type == CMN_TYPE_XP) { in arm_cmn_init_dtcs()
1918 dn->dtc &= dtcs_present; in arm_cmn_init_dtcs()
1922 xp = arm_cmn_node_to_xp(cmn, dn); in arm_cmn_init_dtcs()
1923 dn->dtm = xp->dtm; in arm_cmn_init_dtcs()
1925 dn->dtm += arm_cmn_nid(cmn, dn->id).port / 2; in arm_cmn_init_dtcs()
1927 if (dn->type == CMN_TYPE_DTC) { in arm_cmn_init_dtcs()
1932 err = arm_cmn_init_dtc(cmn, dn, dtc_idx++); in arm_cmn_init_dtcs()
1938 if (dn->type == CMN_TYPE_RND) in arm_cmn_init_dtcs()
1939 dn->type = CMN_TYPE_RNI; in arm_cmn_init_dtcs()
1942 if (dn->type == CMN_TYPE_CCLA_RNI) in arm_cmn_init_dtcs()
1943 dn->type = CMN_TYPE_CCLA; in arm_cmn_init_dtcs()
1989 struct arm_cmn_node cfg, *dn; in arm_cmn_discover() local
2035 dn = devm_kcalloc(cmn->dev, cmn->num_dns * 2 - cmn->num_xps, in arm_cmn_discover()
2036 sizeof(*dn), GFP_KERNEL); in arm_cmn_discover()
2037 if (!dn) in arm_cmn_discover()
2049 cmn->dns = dn; in arm_cmn_discover()
2053 struct arm_cmn_node *xp = dn++; in arm_cmn_discover()
2120 arm_cmn_init_node_info(cmn, reg & CMN_CHILD_NODE_ADDR, dn); in arm_cmn_discover()
2122 switch (dn->type) { in arm_cmn_discover()
2125 dn++; in arm_cmn_discover()
2140 dn++; in arm_cmn_discover()
2156 dn[1] = dn[0]; in arm_cmn_discover()
2157 dn[0].pmu_base += CMN_HNP_PMU_EVENT_SEL; in arm_cmn_discover()
2158 dn[1].type = arm_cmn_subtype(dn->type); in arm_cmn_discover()
2159 dn += 2; in arm_cmn_discover()
2163 dev_err(cmn->dev, "invalid device node type: 0x%x\n", dn->type); in arm_cmn_discover()
2170 cmn->num_dns = dn - cmn->dns; in arm_cmn_discover()
2173 sz = (void *)(dn + 1) - (void *)cmn->dns; in arm_cmn_discover()
2174 dn = devm_krealloc(cmn->dev, cmn->dns, sz, GFP_KERNEL); in arm_cmn_discover()
2175 if (dn) in arm_cmn_discover()
2176 cmn->dns = dn; in arm_cmn_discover()