[V2,3/3] platform/x86/intel/pmc/arl: Put GNA device in D3

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

Commit Message

David E. Box Feb. 27, 2024, 7:01 p.m. UTC
  As is the case on Meteor Lake, the Gaussian & Neural Accelerator (GNA)
device is powered by BIOS to D0 by default. If no driver is loaded, this
will cause the Package C state to be limited to PC2, leading to
significant power consumption and decrease in batter life.  Put the GNA
device in D3 by default if no driver is loaded for it.

Fixes: 83f168a1a437 ("platform/x86/intel/pmc: Add Arrow Lake S 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>
---

V2 - Better explain the issue in the changelog and spell out GNA.

 drivers/platform/x86/intel/pmc/arl.c | 2 ++
 1 file changed, 2 insertions(+)
  

Comments

Kuppuswamy Sathyanarayanan Feb. 27, 2024, 7:54 p.m. UTC | #1
On 2/27/24 11:01 AM, David E. Box wrote:
> As is the case on Meteor Lake, the Gaussian & Neural Accelerator (GNA)
> device is powered by BIOS to D0 by default. If no driver is loaded, this
> will cause the Package C state to be limited to PC2, leading to
> significant power consumption and decrease in batter life.  Put the GNA
> device in D3 by default if no driver is loaded for it.

Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>

>
> Fixes: 83f168a1a437 ("platform/x86/intel/pmc: Add Arrow Lake S 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>
> ---
>
> V2 - Better explain the issue in the changelog and spell out GNA.
>
>  drivers/platform/x86/intel/pmc/arl.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/platform/x86/intel/pmc/arl.c b/drivers/platform/x86/intel/pmc/arl.c
> index 683ae828276b..34b4cd23bfe5 100644
> --- a/drivers/platform/x86/intel/pmc/arl.c
> +++ b/drivers/platform/x86/intel/pmc/arl.c
> @@ -673,6 +673,7 @@ static struct pmc_info arl_pmc_info_list[] = {
>  };
>  
>  #define ARL_NPU_PCI_DEV			0xad1d
> +#define ARL_GNA_PCI_DEV			0xae4c
>  /*
>   * Set power state of select devices that do not have drivers to D3
>   * so that they do not block Package C entry.
> @@ -680,6 +681,7 @@ static struct pmc_info arl_pmc_info_list[] = {
>  static void arl_d3_fixup(void)
>  {
>  	pmc_core_set_device_d3(ARL_NPU_PCI_DEV);
> +	pmc_core_set_device_d3(ARL_GNA_PCI_DEV);
>  }
>  
>  static int arl_resume(struct pmc_dev *pmcdev)
  

Patch

diff --git a/drivers/platform/x86/intel/pmc/arl.c b/drivers/platform/x86/intel/pmc/arl.c
index 683ae828276b..34b4cd23bfe5 100644
--- a/drivers/platform/x86/intel/pmc/arl.c
+++ b/drivers/platform/x86/intel/pmc/arl.c
@@ -673,6 +673,7 @@  static struct pmc_info arl_pmc_info_list[] = {
 };
 
 #define ARL_NPU_PCI_DEV			0xad1d
+#define ARL_GNA_PCI_DEV			0xae4c
 /*
  * Set power state of select devices that do not have drivers to D3
  * so that they do not block Package C entry.
@@ -680,6 +681,7 @@  static struct pmc_info arl_pmc_info_list[] = {
 static void arl_d3_fixup(void)
 {
 	pmc_core_set_device_d3(ARL_NPU_PCI_DEV);
+	pmc_core_set_device_d3(ARL_GNA_PCI_DEV);
 }
 
 static int arl_resume(struct pmc_dev *pmcdev)