1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * AMD SoC Power Management Controller Driver
4  *
5  * Copyright (c) 2023, Advanced Micro Devices, Inc.
6  * All Rights Reserved.
7  *
8  * Author: Mario Limonciello <mario.limonciello@amd.com>
9  */
10 
11 #ifndef PMC_H
12 #define PMC_H
13 
14 #include <linux/types.h>
15 #include <linux/mutex.h>
16 
17 struct amd_pmc_dev {
18 	void __iomem *regbase;
19 	void __iomem *smu_virt_addr;
20 	void __iomem *stb_virt_addr;
21 	void __iomem *fch_virt_addr;
22 	bool msg_port;
23 	u32 base_addr;
24 	u32 cpu_id;
25 	u32 active_ips;
26 	u32 dram_size;
27 	u32 num_ips;
28 	u32 s2d_msg_id;
29 /* SMU version information */
30 	u8 smu_program;
31 	u8 major;
32 	u8 minor;
33 	u8 rev;
34 	struct device *dev;
35 	struct pci_dev *rdev;
36 	struct mutex lock; /* generic mutex lock */
37 	struct dentry *dbgfs_dir;
38 	struct quirk_entry *quirks;
39 };
40 
41 void amd_pmc_process_restore_quirks(struct amd_pmc_dev *dev);
42 void amd_pmc_quirks_init(struct amd_pmc_dev *dev);
43 
44 #endif /* PMC_H */
45