Skip to content

Commit

Permalink
platform/x86:intel/pmc: Use SSRAM to discover pwrm base address of pr…
Browse files Browse the repository at this point in the history
…imary PMC

On older platforms, the base address for PMC was hardcoded in the
driver. Newer platforms can now retrieve the base address from SSRAM.
Use SSRAM to discover pwrm base address on Meteor Lake platform. If
this method fails, it will fall back to the hardcoded value.

Signed-off-by: Xi Pardee <[email protected]>
Reviewed-by: Ilpo Järvinen <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Hans de Goede <[email protected]>
  • Loading branch information
xpardee-create authored and jwrdegoede committed Jun 20, 2023
1 parent 1b8c7b8 commit 23e74e3
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions drivers/platform/x86/intel/pmc/mtl.c
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,12 @@ const struct pmc_reg_map mtl_socm_reg_map = {
.lpm_live_status_offset = MTL_LPM_LIVE_STATUS_OFFSET,
};

#define PMC_DEVID_SOCM 0x7e7f
static struct pmc_info mtl_pmc_info_list[] = {
{
.devid = PMC_DEVID_SOCM,
.map = &mtl_socm_reg_map,
},
{}
};

Expand Down Expand Up @@ -513,9 +518,7 @@ static int mtl_resume(struct pmc_dev *pmcdev)
int mtl_core_init(struct pmc_dev *pmcdev)
{
struct pmc *pmc = pmcdev->pmcs[PMC_IDX_SOC];
int ret;

pmc->map = &mtl_socm_reg_map;
int ret = 0;

mtl_d3_fixup();

Expand All @@ -524,9 +527,13 @@ int mtl_core_init(struct pmc_dev *pmcdev)
pmcdev->regmap_list = mtl_pmc_info_list;
pmc_core_ssram_init(pmcdev);

ret = get_primary_reg_base(pmc);
if (ret)
return ret;
/* If regbase not assigned, set map and discover using legacy method */
if (!pmc->regbase) {
pmc->map = &mtl_socm_reg_map;
ret = get_primary_reg_base(pmc);
if (ret)
return ret;
}

/* Due to a hardware limitation, the GBE LTR blocks PC10
* when a cable is attached. Tell the PMC to ignore it.
Expand Down

0 comments on commit 23e74e3

Please sign in to comment.