Skip to content

Commit 4773dd1

Browse files
Xu Yangwilldeacon
authored andcommitted
perf: imx_perf: add macro definitions for parsing config attr
The user can set event and counter in cmdline and the driver need to parse it using 'config' attr value. This will add macro definitions to avoid hard-code in driver. Reviewed-by: Frank Li <[email protected]> Signed-off-by: Xu Yang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Will Deacon <[email protected]>
1 parent f26f374 commit 4773dd1

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

drivers/perf/fsl_imx9_ddr_perf.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@
4242
#define NUM_COUNTERS 11
4343
#define CYCLES_COUNTER 0
4444

45+
#define CONFIG_EVENT_MASK GENMASK(7, 0)
46+
#define CONFIG_COUNTER_MASK GENMASK(15, 8)
47+
4548
#define to_ddr_pmu(p) container_of(p, struct ddr_pmu, pmu)
4649

4750
#define DDR_PERF_DEV_NAME "imx9_ddr"
@@ -339,8 +342,10 @@ static void ddr_perf_counter_local_config(struct ddr_pmu *pmu, int config,
339342
int counter, bool enable)
340343
{
341344
u32 ctrl_a;
345+
int event;
342346

343347
ctrl_a = readl_relaxed(pmu->base + PMLCA(counter));
348+
event = FIELD_GET(CONFIG_EVENT_MASK, config);
344349

345350
if (enable) {
346351
ctrl_a |= PMLCA_FC;
@@ -352,7 +357,7 @@ static void ddr_perf_counter_local_config(struct ddr_pmu *pmu, int config,
352357
ctrl_a &= ~PMLCA_FC;
353358
ctrl_a |= PMLCA_CE;
354359
ctrl_a &= ~FIELD_PREP(PMLCA_EVENT, 0x7F);
355-
ctrl_a |= FIELD_PREP(PMLCA_EVENT, (config & 0x000000FF));
360+
ctrl_a |= FIELD_PREP(PMLCA_EVENT, event);
356361
writel(ctrl_a, pmu->base + PMLCA(counter));
357362
} else {
358363
/* Freeze counter. */
@@ -366,8 +371,8 @@ static void ddr_perf_monitor_config(struct ddr_pmu *pmu, int cfg, int cfg1, int
366371
u32 pmcfg1, pmcfg2;
367372
int event, counter;
368373

369-
event = cfg & 0x000000FF;
370-
counter = (cfg & 0x0000FF00) >> 8;
374+
event = FIELD_GET(CONFIG_EVENT_MASK, cfg);
375+
counter = FIELD_GET(CONFIG_COUNTER_MASK, cfg);
371376

372377
pmcfg1 = readl_relaxed(pmu->base + PMCFG1);
373378

@@ -469,7 +474,7 @@ static int ddr_perf_event_add(struct perf_event *event, int flags)
469474
int cfg2 = event->attr.config2;
470475
int counter;
471476

472-
counter = (cfg & 0x0000FF00) >> 8;
477+
counter = FIELD_GET(CONFIG_COUNTER_MASK, cfg);
473478

474479
pmu->events[counter] = event;
475480
pmu->active_events++;

0 commit comments

Comments
 (0)