|  | /* SPDX-License-Identifier: GPL-2.0-only */ | 
|  | /* | 
|  | * Copyright(c) 2023 Huawei | 
|  | * CXL Specification rev 3.0 Setion 8.2.7 (CPMU Register Interface) | 
|  | */ | 
|  | #ifndef CXL_PMU_H | 
|  | #define CXL_PMU_H | 
|  | #include <linux/device.h> | 
|  |  | 
|  | enum cxl_pmu_type { | 
|  | CXL_PMU_MEMDEV, | 
|  | }; | 
|  |  | 
|  | #define CXL_PMU_REGMAP_SIZE 0xe00 /* Table 8-32 CXL 3.0 specification */ | 
|  | struct cxl_pmu { | 
|  | struct device dev; | 
|  | void __iomem *base; | 
|  | int assoc_id; | 
|  | int index; | 
|  | enum cxl_pmu_type type; | 
|  | }; | 
|  |  | 
|  | #define to_cxl_pmu(dev) container_of(dev, struct cxl_pmu, dev) | 
|  | struct cxl_pmu_regs; | 
|  | int devm_cxl_pmu_add(struct device *parent, struct cxl_pmu_regs *regs, | 
|  | int assoc_id, int idx, enum cxl_pmu_type type); | 
|  |  | 
|  | #endif |