162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright(C) 2015 Linaro Limited. All rights reserved.
462306a36Sopenharmony_ci * Author: Mathieu Poirier <mathieu.poirier@linaro.org>
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include <string.h>
862306a36Sopenharmony_ci#include <linux/coresight-pmu.h>
962306a36Sopenharmony_ci#include <linux/perf_event.h>
1062306a36Sopenharmony_ci#include <linux/string.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include "arm-spe.h"
1362306a36Sopenharmony_ci#include "hisi-ptt.h"
1462306a36Sopenharmony_ci#include "../../../util/pmu.h"
1562306a36Sopenharmony_ci#include "../../../util/cs-etm.h"
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_cistruct perf_event_attr
1862306a36Sopenharmony_ci*perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused)
1962306a36Sopenharmony_ci{
2062306a36Sopenharmony_ci#ifdef HAVE_AUXTRACE_SUPPORT
2162306a36Sopenharmony_ci	if (!strcmp(pmu->name, CORESIGHT_ETM_PMU_NAME)) {
2262306a36Sopenharmony_ci		/* add ETM default config here */
2362306a36Sopenharmony_ci		pmu->selectable = true;
2462306a36Sopenharmony_ci		return cs_etm_get_default_config(pmu);
2562306a36Sopenharmony_ci#if defined(__aarch64__)
2662306a36Sopenharmony_ci	} else if (strstarts(pmu->name, ARM_SPE_PMU_NAME)) {
2762306a36Sopenharmony_ci		return arm_spe_pmu_default_config(pmu);
2862306a36Sopenharmony_ci	} else if (strstarts(pmu->name, HISI_PTT_PMU_NAME)) {
2962306a36Sopenharmony_ci		pmu->selectable = true;
3062306a36Sopenharmony_ci#endif
3162306a36Sopenharmony_ci	}
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci#endif
3462306a36Sopenharmony_ci	return NULL;
3562306a36Sopenharmony_ci}
36