forked from Minki/linux
platform/x86: intel_pmc_core: Add CannonLake PCH support
This adds support for Cannonlake PCH which is used by Cannonlake and Coffeelake SoCs. Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Rajneesh Bhardwaj <rajneesh.bhardwaj@intel.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
This commit is contained in:
parent
850eb9fba3
commit
291101f6a7
@ -122,6 +122,90 @@ static const struct pmc_reg_map spt_reg_map = {
|
||||
.pm_read_disable_bit = SPT_PMC_READ_DISABLE_BIT,
|
||||
};
|
||||
|
||||
/* Cannonlake: PGD PFET Enable Ack Status Register(s) bitmap */
|
||||
static const struct pmc_bit_map cnp_pfear_map[] = {
|
||||
{"PMC", BIT(0)},
|
||||
{"OPI-DMI", BIT(1)},
|
||||
{"SPI/eSPI", BIT(2)},
|
||||
{"XHCI", BIT(3)},
|
||||
{"SPA", BIT(4)},
|
||||
{"SPB", BIT(5)},
|
||||
{"SPC", BIT(6)},
|
||||
{"GBE", BIT(7)},
|
||||
|
||||
{"SATA", BIT(0)},
|
||||
{"HDA_PGD0", BIT(1)},
|
||||
{"HDA_PGD1", BIT(2)},
|
||||
{"HDA_PGD2", BIT(3)},
|
||||
{"HDA_PGD3", BIT(4)},
|
||||
{"SPD", BIT(5)},
|
||||
{"LPSS", BIT(6)},
|
||||
{"LPC", BIT(7)},
|
||||
|
||||
{"SMB", BIT(0)},
|
||||
{"ISH", BIT(1)},
|
||||
{"P2SB", BIT(2)},
|
||||
{"NPK_VNN", BIT(3)},
|
||||
{"SDX", BIT(4)},
|
||||
{"SPE", BIT(5)},
|
||||
{"Fuse", BIT(6)},
|
||||
{"Res_23", BIT(7)},
|
||||
|
||||
{"CSME_FSC", BIT(0)},
|
||||
{"USB3_OTG", BIT(1)},
|
||||
{"EXI", BIT(2)},
|
||||
{"CSE", BIT(3)},
|
||||
{"csme_kvm", BIT(4)},
|
||||
{"csme_pmt", BIT(5)},
|
||||
{"csme_clink", BIT(6)},
|
||||
{"csme_ptio", BIT(7)},
|
||||
|
||||
{"csme_usbr", BIT(0)},
|
||||
{"csme_susram", BIT(1)},
|
||||
{"csme_smt1", BIT(2)},
|
||||
{"CSME_SMT4", BIT(3)},
|
||||
{"csme_sms2", BIT(4)},
|
||||
{"csme_sms1", BIT(5)},
|
||||
{"csme_rtc", BIT(6)},
|
||||
{"csme_psf", BIT(7)},
|
||||
|
||||
{"SBR0", BIT(0)},
|
||||
{"SBR1", BIT(1)},
|
||||
{"SBR2", BIT(2)},
|
||||
{"SBR3", BIT(3)},
|
||||
{"SBR4", BIT(4)},
|
||||
{"SBR5", BIT(5)},
|
||||
{"CSME_PECI", BIT(6)},
|
||||
{"PSF1", BIT(7)},
|
||||
|
||||
{"PSF2", BIT(0)},
|
||||
{"PSF3", BIT(1)},
|
||||
{"PSF4", BIT(2)},
|
||||
{"CNVI", BIT(3)},
|
||||
{"UFS0", BIT(4)},
|
||||
{"EMMC", BIT(5)},
|
||||
{"Res_6", BIT(6)},
|
||||
{"SBR6", BIT(7)},
|
||||
|
||||
{"SBR7", BIT(0)},
|
||||
{"NPK_AON", BIT(1)},
|
||||
{"HDA_PGD4", BIT(2)},
|
||||
{"HDA_PGD5", BIT(3)},
|
||||
{"HDA_PGD6", BIT(4)},
|
||||
{}
|
||||
};
|
||||
|
||||
static const struct pmc_reg_map cnp_reg_map = {
|
||||
.pfear_sts = cnp_pfear_map,
|
||||
.slp_s0_offset = CNP_PMC_SLP_S0_RES_COUNTER_OFFSET,
|
||||
.ltr_ignore_offset = CNP_PMC_LTR_IGNORE_OFFSET,
|
||||
.regmap_length = CNP_PMC_MMIO_REG_LEN,
|
||||
.ppfear0_offset = CNP_PMC_HOST_PPFEAR0A,
|
||||
.ppfear_buckets = CNP_PPFEAR_NUM_ENTRIES,
|
||||
.pm_cfg_offset = CNP_PMC_PM_CFG_OFFSET,
|
||||
.pm_read_disable_bit = CNP_PMC_READ_DISABLE_BIT,
|
||||
};
|
||||
|
||||
static inline u8 pmc_core_reg_read_byte(struct pmc_dev *pmcdev, int offset)
|
||||
{
|
||||
return readb(pmcdev->regbase + offset);
|
||||
@ -447,6 +531,7 @@ static const struct x86_cpu_id intel_pmc_core_ids[] = {
|
||||
ICPU(INTEL_FAM6_SKYLAKE_DESKTOP, &spt_reg_map),
|
||||
ICPU(INTEL_FAM6_KABYLAKE_MOBILE, &spt_reg_map),
|
||||
ICPU(INTEL_FAM6_KABYLAKE_DESKTOP, &spt_reg_map),
|
||||
ICPU(INTEL_FAM6_CANNONLAKE_MOBILE, &cnp_reg_map),
|
||||
{}
|
||||
};
|
||||
|
||||
|
@ -121,6 +121,17 @@ enum ppfear_regs {
|
||||
#define SPT_PMC_BIT_MPHY_CMN_LANE2 BIT(2)
|
||||
#define SPT_PMC_BIT_MPHY_CMN_LANE3 BIT(3)
|
||||
|
||||
/* Cannonlake Power Management Controller register offsets */
|
||||
#define CNP_PMC_SLP_S0_RES_COUNTER_OFFSET 0x193C
|
||||
#define CNP_PMC_LTR_IGNORE_OFFSET 0x1B0C
|
||||
#define CNP_PMC_PM_CFG_OFFSET 0x1818
|
||||
/* Cannonlake: PGD PFET Enable Ack Status Register(s) start */
|
||||
#define CNP_PMC_HOST_PPFEAR0A 0x1D90
|
||||
|
||||
#define CNP_PMC_MMIO_REG_LEN 0x2000
|
||||
#define CNP_PPFEAR_NUM_ENTRIES 8
|
||||
#define CNP_PMC_READ_DISABLE_BIT 22
|
||||
|
||||
struct pmc_bit_map {
|
||||
const char *name;
|
||||
u32 bit_mask;
|
||||
|
Loading…
Reference in New Issue
Block a user