/* Event attributes */
#define CMN_CONFIG_TYPE GENMASK_ULL(15, 0)
#define CMN_CONFIG_EVENTID GENMASK_ULL(26, 16)
-#define CMN_CONFIG_OCCUPID GENMASK_ULL(30, 27)
+#define CMN_CONFIG_FILTER GENMASK_ULL(30, 27)
#define CMN_CONFIG_BYNODEID BIT_ULL(31)
#define CMN_CONFIG_NODEID GENMASK_ULL(47, 32)
#define CMN_EVENT_TYPE(event) FIELD_GET(CMN_CONFIG_TYPE, (event)->attr.config)
#define CMN_EVENT_EVENTID(event) FIELD_GET(CMN_CONFIG_EVENTID, (event)->attr.config)
-#define CMN_EVENT_OCCUPID(event) FIELD_GET(CMN_CONFIG_OCCUPID, (event)->attr.config)
+#define CMN_EVENT_FILTER(event) FIELD_GET(CMN_CONFIG_FILTER, (event)->attr.config)
#define CMN_EVENT_BYNODEID(event) FIELD_GET(CMN_CONFIG_BYNODEID, (event)->attr.config)
#define CMN_EVENT_NODEID(event) FIELD_GET(CMN_CONFIG_NODEID, (event)->attr.config)
struct {
u8 val : 4;
u8 count : 4;
- } occupid[SEL_MAX];
+ } filter[SEL_MAX];
union {
u8 event[4];
__le32 event_sel;
enum cmn_node_type type;
enum cmn_filter_select fsel;
u16 eventid;
- u8 occupid;
+ u8 filter;
};
struct arm_cmn_format_attr {
int config;
};
-#define _CMN_EVENT_ATTR(_model, _name, _type, _eventid, _occupid, _fsel)\
+#define _CMN_EVENT_ATTR(_model, _name, _type, _eventid, _filter, _fsel)\
(&((struct arm_cmn_event_attr[]) {{ \
.attr = __ATTR(_name, 0444, arm_cmn_event_show, NULL), \
.model = _model, \
.type = _type, \
.eventid = _eventid, \
- .occupid = _occupid, \
+ .filter = _filter, \
.fsel = _fsel, \
}})[0].attr.attr)
#define CMN_EVENT_ATTR(_model, _name, _type, _eventid) \
eattr->type, eattr->eventid);
if (eattr->fsel > SEL_NONE)
- return sysfs_emit(buf, "type=0x%x,eventid=0x%x,occupid=0x%x\n",
- eattr->type, eattr->eventid, eattr->occupid);
+ return sysfs_emit(buf, "type=0x%x,eventid=0x%x,filter=0x%x\n",
+ eattr->type, eattr->eventid, eattr->filter);
return sysfs_emit(buf, "type=0x%x,eventid=0x%x\n", eattr->type,
eattr->eventid);
static struct attribute *arm_cmn_format_attrs[] = {
CMN_FORMAT_ATTR(type, CMN_CONFIG_TYPE),
CMN_FORMAT_ATTR(eventid, CMN_CONFIG_EVENTID),
- CMN_FORMAT_ATTR(occupid, CMN_CONFIG_OCCUPID),
+ CMN_FORMAT_ATTR(filter, CMN_CONFIG_FILTER),
CMN_FORMAT_ATTR(bynodeid, CMN_CONFIG_BYNODEID),
CMN_FORMAT_ATTR(nodeid, CMN_CONFIG_NODEID),
_CMN_FORMAT_ATTR(wp_val, 1, CMN_CONFIG1_WP_VAL),
_CMN_FORMAT_ATTR(wp_mask, 2, CMN_CONFIG2_WP_MASK),
+ /* Old name for UAPI compatibility */
+ CMN_FORMAT_ATTR(occupid, CMN_CONFIG_FILTER),
+
NULL
};
}
static int arm_cmn_set_event_sel_hi(struct arm_cmn_node *dn,
- enum cmn_filter_select fsel, u8 occupid)
+ enum cmn_filter_select fsel, u8 filter)
{
u64 reg;
if (fsel == SEL_NONE)
return 0;
- if (!dn->occupid[fsel].count) {
- dn->occupid[fsel].val = occupid;
+ if (!dn->filter[fsel].count) {
+ dn->filter[fsel].val = filter;
reg = FIELD_PREP(CMN__PMU_CBUSY_SNTHROTTLE_SEL,
- dn->occupid[SEL_CBUSY_SNTHROTTLE_SEL].val) |
+ dn->filter[SEL_CBUSY_SNTHROTTLE_SEL].val) |
FIELD_PREP(CMN__PMU_SN_HOME_SEL,
- dn->occupid[SEL_SN_HOME_SEL].val) |
+ dn->filter[SEL_SN_HOME_SEL].val) |
FIELD_PREP(CMN__PMU_HBT_LBT_SEL,
- dn->occupid[SEL_HBT_LBT_SEL].val) |
+ dn->filter[SEL_HBT_LBT_SEL].val) |
FIELD_PREP(CMN__PMU_CLASS_OCCUP_ID,
- dn->occupid[SEL_CLASS_OCCUP_ID].val) |
+ dn->filter[SEL_CLASS_OCCUP_ID].val) |
FIELD_PREP(CMN__PMU_OCCUP1_ID,
- dn->occupid[SEL_OCCUP1ID].val);
+ dn->filter[SEL_OCCUP1ID].val);
writel_relaxed(reg >> 32, dn->pmu_base + CMN_PMU_EVENT_SEL + 4);
- } else if (dn->occupid[fsel].val != occupid) {
+ } else if (dn->filter[fsel].val != filter) {
return -EBUSY;
}
- dn->occupid[fsel].count++;
+ dn->filter[fsel].count++;
return 0;
}
struct arm_cmn_val {
u8 dtm_count[CMN_MAX_DTMS];
- u8 occupid[CMN_MAX_DTMS][SEL_MAX];
+ u8 filter[CMN_MAX_DTMS][SEL_MAX];
u8 wp[CMN_MAX_DTMS][4];
u8 wp_combine[CMN_MAX_DTMS][2];
int dtc_count[CMN_MAX_DTCS];
val->dtm_count[dtm]++;
if (sel > SEL_NONE)
- val->occupid[dtm][sel] = CMN_EVENT_OCCUPID(event) + 1;
+ val->filter[dtm][sel] = CMN_EVENT_FILTER(event) + 1;
if (type != CMN_TYPE_WP)
continue;
if (val->dtm_count[dtm] == CMN_DTM_NUM_COUNTERS)
goto done;
- if (sel > SEL_NONE && val->occupid[dtm][sel] &&
- val->occupid[dtm][sel] != CMN_EVENT_OCCUPID(event) + 1)
+ if (sel > SEL_NONE && val->filter[dtm][sel] &&
+ val->filter[dtm][sel] != CMN_EVENT_FILTER(event) + 1)
goto done;
if (type != CMN_TYPE_WP)
}
if (hw->filter_sel > SEL_NONE)
- hw->dn[i].occupid[hw->filter_sel].count--;
+ hw->dn[i].filter[hw->filter_sel].count--;
dtm->pmu_config_low &= ~CMN__PMEVCNT_PAIRED(dtm_idx);
writel_relaxed(dtm->pmu_config_low, dtm->base + CMN_DTM_PMU_CONFIG);
input_sel = CMN__PMEVCNT0_INPUT_SEL_DEV + dtm_idx +
(nid.port << 4) + (nid.dev << 2);
- if (arm_cmn_set_event_sel_hi(dn, hw->filter_sel, CMN_EVENT_OCCUPID(event)))
+ if (arm_cmn_set_event_sel_hi(dn, hw->filter_sel, CMN_EVENT_FILTER(event)))
goto free_dtms;
}