[2/3] platform/x86/intel/pmc/lnl: Remove SSRAM support

Message ID 20240221211204.515159-2-david.e.box@linux.intel.com
State New
Headers
Series [1/3] platform/x86/intel/vsec: Remove nuisance message |

Commit Message

David E. Box Feb. 21, 2024, 9:12 p.m. UTC
  A recent PMC firmware change in Lunar Lake caused the pmc_core driver to
fail to probe. This is due to a change in the GUID for PMC telemetry
coming from the SSRAM device. We are told the current update may change
again before a final release so we can't upstream a fix just yet. In the
meantime, remove SSRAM support for Lunar Lake so the driver can load and
provide some basic functionality.

Fixes: 3748dfdae2a6 ("platform/x86/intel/pmc: Add Lunar Lake M support to intel_pmc_core driver")
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
---
 drivers/platform/x86/intel/pmc/lnl.c | 38 +++-------------------------
 1 file changed, 4 insertions(+), 34 deletions(-)
  

Comments

Kuppuswamy Sathyanarayanan Feb. 23, 2024, 3:06 a.m. UTC | #1
On 2/21/24 1:12 PM, David E. Box wrote:
> A recent PMC firmware change in Lunar Lake caused the pmc_core driver to
> fail to probe. This is due to a change in the GUID for PMC telemetry
> coming from the SSRAM device. We are told the current update may change
> again before a final release so we can't upstream a fix just yet. In the
> meantime, remove SSRAM support for Lunar Lake so the driver can load and
> provide some basic functionality.

I would remove usage of "We" and just comment that that the value
is expected to change again. So disable the support till it is finalized.

>
> Fixes: 3748dfdae2a6 ("platform/x86/intel/pmc: Add Lunar Lake M support to intel_pmc_core driver")
> Signed-off-by: David E. Box <david.e.box@linux.intel.com>
> ---

Change looks fine to me.

Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
>  drivers/platform/x86/intel/pmc/lnl.c | 38 +++-------------------------
>  1 file changed, 4 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/platform/x86/intel/pmc/lnl.c b/drivers/platform/x86/intel/pmc/lnl.c
> index abad17cdd3d7..068d72504683 100644
> --- a/drivers/platform/x86/intel/pmc/lnl.c
> +++ b/drivers/platform/x86/intel/pmc/lnl.c
> @@ -13,21 +13,6 @@
>  
>  #include "core.h"
>  
> -#define SOCM_LPM_REQ_GUID	0x11594920
> -
> -#define PMC_DEVID_SOCM	0xa87f
> -
> -static const u8 LNL_LPM_REG_INDEX[] = {0, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20};
> -
> -static struct pmc_info lnl_pmc_info_list[] = {
> -	{
> -		.guid	= SOCM_LPM_REQ_GUID,
> -		.devid	= PMC_DEVID_SOCM,
> -		.map	= &lnl_socm_reg_map,
> -	},
> -	{}
> -};
> -
>  const struct pmc_bit_map lnl_ltr_show_map[] = {
>  	{"SOUTHPORT_A",		CNP_PMC_LTR_SPA},
>  	{"SOUTHPORT_B",		CNP_PMC_LTR_SPB},
> @@ -490,7 +475,6 @@ const struct pmc_reg_map lnl_socm_reg_map = {
>  	.lpm_sts = lnl_lpm_maps,
>  	.lpm_status_offset = MTL_LPM_STATUS_OFFSET,
>  	.lpm_live_status_offset = MTL_LPM_LIVE_STATUS_OFFSET,
> -	.lpm_reg_index = LNL_LPM_REG_INDEX,
>  };
>  
>  #define LNL_NPU_PCI_DEV		0x643e
> @@ -517,33 +501,19 @@ static int lnl_resume(struct pmc_dev *pmcdev)
>  int lnl_core_init(struct pmc_dev *pmcdev)
>  {
>  	int ret;
> -	int func = 2;
> -	bool ssram_init = true;
>  	struct pmc *pmc = pmcdev->pmcs[PMC_IDX_SOC];
>  
>  	lnl_d3_fixup();
>  
>  	pmcdev->suspend = cnl_suspend;
>  	pmcdev->resume = lnl_resume;
> -	pmcdev->regmap_list = lnl_pmc_info_list;
> -	ret = pmc_core_ssram_init(pmcdev, func);
>  
> -	/* If regbase not assigned, set map and discover using legacy method */
> -	if (ret) {
> -		ssram_init = false;
> -		pmc->map = &lnl_socm_reg_map;
> -		ret = get_primary_reg_base(pmc);
> -		if (ret)
> -			return ret;
> -	}
> +	pmc->map = &lnl_socm_reg_map;
> +	ret = get_primary_reg_base(pmc);
> +	if (ret)
> +		return ret;
>  
>  	pmc_core_get_low_power_modes(pmcdev);
>  
> -	if (ssram_init) {
> -		ret = pmc_core_ssram_get_lpm_reqs(pmcdev);
> -		if (ret)
> -			return ret;
> -	}
> -
>  	return 0;
>  }
  
Ilpo Järvinen Feb. 26, 2024, 3:03 p.m. UTC | #2
On Wed, 21 Feb 2024, David E. Box wrote:

> A recent PMC firmware change in Lunar Lake caused the pmc_core driver to
> fail to probe. This is due to a change in the GUID for PMC telemetry
> coming from the SSRAM device. We are told the current update may change
> again before a final release so we can't upstream a fix just yet. In the
> meantime, remove SSRAM support for Lunar Lake so the driver can load and
> provide some basic functionality.
> 
> Fixes: 3748dfdae2a6 ("platform/x86/intel/pmc: Add Lunar Lake M support to intel_pmc_core driver")
> Signed-off-by: David E. Box <david.e.box@linux.intel.com>

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
  

Patch

diff --git a/drivers/platform/x86/intel/pmc/lnl.c b/drivers/platform/x86/intel/pmc/lnl.c
index abad17cdd3d7..068d72504683 100644
--- a/drivers/platform/x86/intel/pmc/lnl.c
+++ b/drivers/platform/x86/intel/pmc/lnl.c
@@ -13,21 +13,6 @@ 
 
 #include "core.h"
 
-#define SOCM_LPM_REQ_GUID	0x11594920
-
-#define PMC_DEVID_SOCM	0xa87f
-
-static const u8 LNL_LPM_REG_INDEX[] = {0, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20};
-
-static struct pmc_info lnl_pmc_info_list[] = {
-	{
-		.guid	= SOCM_LPM_REQ_GUID,
-		.devid	= PMC_DEVID_SOCM,
-		.map	= &lnl_socm_reg_map,
-	},
-	{}
-};
-
 const struct pmc_bit_map lnl_ltr_show_map[] = {
 	{"SOUTHPORT_A",		CNP_PMC_LTR_SPA},
 	{"SOUTHPORT_B",		CNP_PMC_LTR_SPB},
@@ -490,7 +475,6 @@  const struct pmc_reg_map lnl_socm_reg_map = {
 	.lpm_sts = lnl_lpm_maps,
 	.lpm_status_offset = MTL_LPM_STATUS_OFFSET,
 	.lpm_live_status_offset = MTL_LPM_LIVE_STATUS_OFFSET,
-	.lpm_reg_index = LNL_LPM_REG_INDEX,
 };
 
 #define LNL_NPU_PCI_DEV		0x643e
@@ -517,33 +501,19 @@  static int lnl_resume(struct pmc_dev *pmcdev)
 int lnl_core_init(struct pmc_dev *pmcdev)
 {
 	int ret;
-	int func = 2;
-	bool ssram_init = true;
 	struct pmc *pmc = pmcdev->pmcs[PMC_IDX_SOC];
 
 	lnl_d3_fixup();
 
 	pmcdev->suspend = cnl_suspend;
 	pmcdev->resume = lnl_resume;
-	pmcdev->regmap_list = lnl_pmc_info_list;
-	ret = pmc_core_ssram_init(pmcdev, func);
 
-	/* If regbase not assigned, set map and discover using legacy method */
-	if (ret) {
-		ssram_init = false;
-		pmc->map = &lnl_socm_reg_map;
-		ret = get_primary_reg_base(pmc);
-		if (ret)
-			return ret;
-	}
+	pmc->map = &lnl_socm_reg_map;
+	ret = get_primary_reg_base(pmc);
+	if (ret)
+		return ret;
 
 	pmc_core_get_low_power_modes(pmcdev);
 
-	if (ssram_init) {
-		ret = pmc_core_ssram_get_lpm_reqs(pmcdev);
-		if (ret)
-			return ret;
-	}
-
 	return 0;
 }