hisi_l3c_pmu
struct hisi_l3c_pmu *hisi_l3c_pmu = to_hisi_l3c_pmu(l3c_pmu);
if (ext && !support_ext(hisi_l3c_pmu))
event->hw.event_base = (unsigned long)hisi_l3c_pmu->ext_base[ext - 1];
struct hisi_l3c_pmu *hisi_l3c_pmu = to_hisi_l3c_pmu(l3c_pmu);
if (ext < 0 || ext > hisi_l3c_pmu->ext_num)
struct hisi_l3c_pmu *hisi_l3c_pmu = to_hisi_l3c_pmu(l3c_pmu);
for (i = 0; i < hisi_l3c_pmu->ext_num; i++) {
val = readl(hisi_l3c_pmu->ext_base[i] + L3C_PERF_CTRL);
writel(val, hisi_l3c_pmu->ext_base[i] + L3C_PERF_CTRL);
struct hisi_l3c_pmu *hisi_l3c_pmu = to_hisi_l3c_pmu(l3c_pmu);
for (i = 0; i < hisi_l3c_pmu->ext_num; i++) {
val = readl(hisi_l3c_pmu->ext_base[i] + L3C_PERF_CTRL);
writel(val, hisi_l3c_pmu->ext_base[i] + L3C_PERF_CTRL);
struct hisi_l3c_pmu *hisi_l3c_pmu = to_hisi_l3c_pmu(l3c_pmu);
if (!support_ext(hisi_l3c_pmu))
for (i = 0; i < hisi_l3c_pmu->ext_num; i++) {
ext_int = readl(hisi_l3c_pmu->ext_base[i] + L3C_INT_STATUS);
struct hisi_l3c_pmu *hisi_l3c_pmu = to_hisi_l3c_pmu(l3c_pmu);
hisi_l3c_pmu->ext_num = ext_num - 1;
for (i = 0; i < hisi_l3c_pmu->ext_num; i++) {
hisi_l3c_pmu->ext_base[i] = devm_platform_ioremap_resource(pdev, i + 1);
if (IS_ERR(hisi_l3c_pmu->ext_base[i]))
return PTR_ERR(hisi_l3c_pmu->ext_base[i]);
hisi_l3c_pmu->ext_irq[i] = irq;
struct hisi_l3c_pmu *hisi_l3c_pmu = to_hisi_l3c_pmu(l3c_pmu);
container_of(_l3c_pmu, struct hisi_l3c_pmu, l3c_pmu)
l3c_pmu->num_counters += hisi_l3c_pmu->ext_num * L3C_NR_COUNTERS;
struct hisi_l3c_pmu *hisi_l3c_pmu;
hisi_l3c_pmu = devm_kzalloc(&pdev->dev, sizeof(*hisi_l3c_pmu), GFP_KERNEL);
if (!hisi_l3c_pmu)
l3c_pmu = &hisi_l3c_pmu->l3c_pmu;
struct hisi_l3c_pmu *hisi_l3c_pmu = to_hisi_l3c_pmu(l3c_pmu);
if (!support_ext(hisi_l3c_pmu))
for (i = 0; i < hisi_l3c_pmu->ext_num; i++)
WARN_ON(irq_set_affinity(hisi_l3c_pmu->ext_irq[i],
struct hisi_l3c_pmu *hisi_l3c_pmu = to_hisi_l3c_pmu(l3c_pmu);
if (!support_ext(hisi_l3c_pmu))
for (i = 0; i < hisi_l3c_pmu->ext_num; i++)
WARN_ON(irq_set_affinity(hisi_l3c_pmu->ext_irq[i],
static bool support_ext(struct hisi_l3c_pmu *pmu)