0001
0002 #ifndef MFD_INTEL_PMC_BXT_H
0003 #define MFD_INTEL_PMC_BXT_H
0004
0005
0006 #define PMC_GCR_PMC_CFG_REG 0x08
0007 #define PMC_GCR_TELEM_DEEP_S0IX_REG 0x78
0008 #define PMC_GCR_TELEM_SHLW_S0IX_REG 0x80
0009
0010
0011 #define PMC_CFG_NO_REBOOT_EN BIT(4)
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 struct intel_pmc_dev {
0023 struct device *dev;
0024 struct intel_scu_ipc_dev *scu;
0025 void __iomem *gcr_mem_base;
0026 spinlock_t gcr_lock;
0027 struct resource *telem_base;
0028 };
0029
0030 #if IS_ENABLED(CONFIG_MFD_INTEL_PMC_BXT)
0031 int intel_pmc_gcr_read64(struct intel_pmc_dev *pmc, u32 offset, u64 *data);
0032 int intel_pmc_gcr_update(struct intel_pmc_dev *pmc, u32 offset, u32 mask, u32 val);
0033 int intel_pmc_s0ix_counter_read(struct intel_pmc_dev *pmc, u64 *data);
0034 #else
0035 static inline int intel_pmc_gcr_read64(struct intel_pmc_dev *pmc, u32 offset,
0036 u64 *data)
0037 {
0038 return -ENOTSUPP;
0039 }
0040
0041 static inline int intel_pmc_gcr_update(struct intel_pmc_dev *pmc, u32 offset,
0042 u32 mask, u32 val)
0043 {
0044 return -ENOTSUPP;
0045 }
0046
0047 static inline int intel_pmc_s0ix_counter_read(struct intel_pmc_dev *pmc, u64 *data)
0048 {
0049 return -ENOTSUPP;
0050 }
0051 #endif
0052
0053 #endif