162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright(c) 2023 Huawei 462306a36Sopenharmony_ci * CXL Specification rev 3.0 Setion 8.2.7 (CPMU Register Interface) 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci#ifndef CXL_PMU_H 762306a36Sopenharmony_ci#define CXL_PMU_H 862306a36Sopenharmony_ci#include <linux/device.h> 962306a36Sopenharmony_ci 1062306a36Sopenharmony_cienum cxl_pmu_type { 1162306a36Sopenharmony_ci CXL_PMU_MEMDEV, 1262306a36Sopenharmony_ci}; 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#define CXL_PMU_REGMAP_SIZE 0xe00 /* Table 8-32 CXL 3.0 specification */ 1562306a36Sopenharmony_cistruct cxl_pmu { 1662306a36Sopenharmony_ci struct device dev; 1762306a36Sopenharmony_ci void __iomem *base; 1862306a36Sopenharmony_ci int assoc_id; 1962306a36Sopenharmony_ci int index; 2062306a36Sopenharmony_ci enum cxl_pmu_type type; 2162306a36Sopenharmony_ci}; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci#define to_cxl_pmu(dev) container_of(dev, struct cxl_pmu, dev) 2462306a36Sopenharmony_cistruct cxl_pmu_regs; 2562306a36Sopenharmony_ciint devm_cxl_pmu_add(struct device *parent, struct cxl_pmu_regs *regs, 2662306a36Sopenharmony_ci int assoc_id, int idx, enum cxl_pmu_type type); 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci#endif 29