All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] platform/x86/amd/pmf: Enable Custom BIOS Inputs for PMF-TA
@ 2024-12-05 10:19 Shyam Sundar S K
  2024-12-05 19:15 ` Mario Limonciello
  2024-12-16 17:17 ` Ilpo Järvinen
  0 siblings, 2 replies; 4+ messages in thread
From: Shyam Sundar S K @ 2024-12-05 10:19 UTC (permalink / raw)
  To: hdegoede, ilpo.jarvinen
  Cc: platform-driver-x86, Patil.Reddy, mario.limonciello,
	Shyam Sundar S K

Introduce support for passing custom BIOS inputs to the PMF-TA to assess
BIOS input policy conditions. The PMF driver will adjust system settings
based on these BIOS input conditions and their corresponding output
actions.

Co-developed-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
Signed-off-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
---
 drivers/platform/x86/amd/pmf/acpi.c | 24 ++++++++++++++++++++++++
 drivers/platform/x86/amd/pmf/pmf.h  | 15 ++++++++++++++-
 drivers/platform/x86/amd/pmf/spc.c  | 24 ++++++++++++++++++++++++
 3 files changed, 62 insertions(+), 1 deletion(-)

diff --git a/drivers/platform/x86/amd/pmf/acpi.c b/drivers/platform/x86/amd/pmf/acpi.c
index 1b9c7acf0ddf..21ccd677ffa4 100644
--- a/drivers/platform/x86/amd/pmf/acpi.c
+++ b/drivers/platform/x86/amd/pmf/acpi.c
@@ -321,6 +321,18 @@ int apmf_get_sbios_requests(struct amd_pmf_dev *pdev, struct apmf_sbios_req *req
 									 req, sizeof(*req));
 }
 
+static void apmf_event_handler_v2(acpi_handle handle, u32 event, void *data)
+{
+	struct amd_pmf_dev *pmf_dev = data;
+	int ret;
+
+	guard(mutex)(&pmf_dev->cb_mutex);
+
+	ret = apmf_get_sbios_requests_v2(pmf_dev, &pmf_dev->req);
+	if (ret)
+		dev_err(pmf_dev->dev, "Failed to get v2 SBIOS requests: %d\n", ret);
+}
+
 static void apmf_event_handler(acpi_handle handle, u32 event, void *data)
 {
 	struct amd_pmf_dev *pmf_dev = data;
@@ -430,6 +442,15 @@ int apmf_install_handler(struct amd_pmf_dev *pmf_dev)
 		apmf_event_handler(ahandle, 0, pmf_dev);
 	}
 
+	if (pmf_dev->smart_pc_enabled && pmf_dev->pmf_if_version == PMF_IF_V2) {
+		status = acpi_install_notify_handler(ahandle, ACPI_ALL_NOTIFY,
+						     apmf_event_handler_v2, pmf_dev);
+		if (ACPI_FAILURE(status)) {
+			dev_err(pmf_dev->dev, "failed to install notify handler for custom BIOS inputs\n");
+			return -ENODEV;
+		}
+	}
+
 	return 0;
 }
 
@@ -480,6 +501,9 @@ void apmf_acpi_deinit(struct amd_pmf_dev *pmf_dev)
 	if (is_apmf_func_supported(pmf_dev, APMF_FUNC_AUTO_MODE) &&
 	    is_apmf_func_supported(pmf_dev, APMF_FUNC_SBIOS_REQUESTS))
 		acpi_remove_notify_handler(ahandle, ACPI_ALL_NOTIFY, apmf_event_handler);
+
+	if (pmf_dev->smart_pc_enabled && pmf_dev->pmf_if_version == PMF_IF_V2)
+		acpi_remove_notify_handler(ahandle, ACPI_ALL_NOTIFY, apmf_event_handler_v2);
 }
 
 int apmf_acpi_init(struct amd_pmf_dev *pmf_dev)
diff --git a/drivers/platform/x86/amd/pmf/pmf.h b/drivers/platform/x86/amd/pmf/pmf.h
index a79808fda1d8..255c5ad2300e 100644
--- a/drivers/platform/x86/amd/pmf/pmf.h
+++ b/drivers/platform/x86/amd/pmf/pmf.h
@@ -370,6 +370,8 @@ struct amd_pmf_dev {
 	struct input_dev *pmf_idev;
 	size_t mtable_size;
 	struct resource *res;
+	struct apmf_sbios_req_v2 req; /* To get custom bios pending request */
+	struct mutex cb_mutex;
 };
 
 struct apmf_sps_prop_granular_v2 {
@@ -616,6 +618,16 @@ enum ta_slider {
 	TA_MAX,
 };
 
+enum apmf_smartpc_custom_bios_inputs {
+	APMF_SMARTPC_CUSTOM_BIOS_INPUT1,
+	APMF_SMARTPC_CUSTOM_BIOS_INPUT2,
+};
+
+enum apmf_preq_smartpc {
+	NOTIFY_CUSTOM_BIOS_INPUT1 = 5,
+	NOTIFY_CUSTOM_BIOS_INPUT2,
+};
+
 /* Command ids for TA communication */
 enum ta_pmf_command {
 	TA_PMF_COMMAND_POLICY_BUILDER_INITIALIZE,
@@ -657,7 +669,8 @@ struct ta_pmf_condition_info {
 	u32 power_slider;
 	u32 lid_state;
 	bool user_present;
-	u32 rsvd1[2];
+	u32 bios_input1;
+	u32 bios_input2;
 	u32 monitor_count;
 	u32 rsvd2[2];
 	u32 bat_design;
diff --git a/drivers/platform/x86/amd/pmf/spc.c b/drivers/platform/x86/amd/pmf/spc.c
index 06226eb0eab3..05bed8206365 100644
--- a/drivers/platform/x86/amd/pmf/spc.c
+++ b/drivers/platform/x86/amd/pmf/spc.c
@@ -47,12 +47,35 @@ void amd_pmf_dump_ta_inputs(struct amd_pmf_dev *dev, struct ta_pmf_enact_table *
 	dev_dbg(dev->dev, "LID State: %s\n", in->ev_info.lid_state ? "close" : "open");
 	dev_dbg(dev->dev, "User Presence: %s\n", in->ev_info.user_present ? "Present" : "Away");
 	dev_dbg(dev->dev, "Ambient Light: %d\n", in->ev_info.ambient_light);
+	dev_dbg(dev->dev, "Custom BIOS input1: %u\n", in->ev_info.bios_input1);
+	dev_dbg(dev->dev, "Custom BIOS input2: %u\n", in->ev_info.bios_input2);
 	dev_dbg(dev->dev, "==== TA inputs END ====\n");
 }
 #else
 void amd_pmf_dump_ta_inputs(struct amd_pmf_dev *dev, struct ta_pmf_enact_table *in) {}
 #endif
 
+static void amd_pmf_get_custom_bios_inputs(struct amd_pmf_dev *pdev,
+					   struct ta_pmf_enact_table *in)
+{
+	if (!pdev->req.pending_req)
+		return;
+
+	switch (pdev->req.pending_req) {
+	case BIT(NOTIFY_CUSTOM_BIOS_INPUT1):
+		in->ev_info.bios_input1 = pdev->req.custom_policy[APMF_SMARTPC_CUSTOM_BIOS_INPUT1];
+		break;
+	case BIT(NOTIFY_CUSTOM_BIOS_INPUT2):
+		in->ev_info.bios_input2 = pdev->req.custom_policy[APMF_SMARTPC_CUSTOM_BIOS_INPUT2];
+		break;
+	default:
+		dev_dbg(pdev->dev, "Invalid preq for BIOS input: 0x%x\n", pdev->req.pending_req);
+	}
+
+	/* Clear pending requests after handling */
+	memset(&pdev->req, 0, sizeof(pdev->req));
+}
+
 static void amd_pmf_get_c0_residency(u16 *core_res, size_t size, struct ta_pmf_enact_table *in)
 {
 	u16 max, avg = 0;
@@ -201,4 +224,5 @@ void amd_pmf_populate_ta_inputs(struct amd_pmf_dev *dev, struct ta_pmf_enact_tab
 	amd_pmf_get_battery_info(dev, in);
 	amd_pmf_get_slider_info(dev, in);
 	amd_pmf_get_sensor_info(dev, in);
+	amd_pmf_get_custom_bios_inputs(dev, in);
 }
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] platform/x86/amd/pmf: Enable Custom BIOS Inputs for PMF-TA
  2024-12-05 10:19 [PATCH] platform/x86/amd/pmf: Enable Custom BIOS Inputs for PMF-TA Shyam Sundar S K
@ 2024-12-05 19:15 ` Mario Limonciello
  2024-12-11  3:21   ` Shyam Sundar S K
  2024-12-16 17:17 ` Ilpo Järvinen
  1 sibling, 1 reply; 4+ messages in thread
From: Mario Limonciello @ 2024-12-05 19:15 UTC (permalink / raw)
  To: Shyam Sundar S K, hdegoede, ilpo.jarvinen
  Cc: platform-driver-x86, Patil.Reddy

On 12/5/2024 04:19, Shyam Sundar S K wrote:
> Introduce support for passing custom BIOS inputs to the PMF-TA to assess
> BIOS input policy conditions. The PMF driver will adjust system settings
> based on these BIOS input conditions and their corresponding output
> actions.
> 
> Co-developed-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
> Signed-off-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
> Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>

Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>

I do have one suggestion for a follow up to consider.

> ---
>   drivers/platform/x86/amd/pmf/acpi.c | 24 ++++++++++++++++++++++++
>   drivers/platform/x86/amd/pmf/pmf.h  | 15 ++++++++++++++-
>   drivers/platform/x86/amd/pmf/spc.c  | 24 ++++++++++++++++++++++++
>   3 files changed, 62 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/platform/x86/amd/pmf/acpi.c b/drivers/platform/x86/amd/pmf/acpi.c
> index 1b9c7acf0ddf..21ccd677ffa4 100644
> --- a/drivers/platform/x86/amd/pmf/acpi.c
> +++ b/drivers/platform/x86/amd/pmf/acpi.c
> @@ -321,6 +321,18 @@ int apmf_get_sbios_requests(struct amd_pmf_dev *pdev, struct apmf_sbios_req *req
>   									 req, sizeof(*req));
>   }
>   
> +static void apmf_event_handler_v2(acpi_handle handle, u32 event, void *data)
> +{
> +	struct amd_pmf_dev *pmf_dev = data;
> +	int ret;
> +
> +	guard(mutex)(&pmf_dev->cb_mutex);
> +
> +	ret = apmf_get_sbios_requests_v2(pmf_dev, &pmf_dev->req);
> +	if (ret)
> +		dev_err(pmf_dev->dev, "Failed to get v2 SBIOS requests: %d\n", ret);
> +}
> +
>   static void apmf_event_handler(acpi_handle handle, u32 event, void *data)
>   {
>   	struct amd_pmf_dev *pmf_dev = data;
> @@ -430,6 +442,15 @@ int apmf_install_handler(struct amd_pmf_dev *pmf_dev)
>   		apmf_event_handler(ahandle, 0, pmf_dev);
>   	}
>   
> +	if (pmf_dev->smart_pc_enabled && pmf_dev->pmf_if_version == PMF_IF_V2) {
> +		status = acpi_install_notify_handler(ahandle, ACPI_ALL_NOTIFY,
> +						     apmf_event_handler_v2, pmf_dev);
> +		if (ACPI_FAILURE(status)) {
> +			dev_err(pmf_dev->dev, "failed to install notify handler for custom BIOS inputs\n");
> +			return -ENODEV;
> +		}
> +	}
> +
>   	return 0;
>   }
>   
> @@ -480,6 +501,9 @@ void apmf_acpi_deinit(struct amd_pmf_dev *pmf_dev)
>   	if (is_apmf_func_supported(pmf_dev, APMF_FUNC_AUTO_MODE) &&
>   	    is_apmf_func_supported(pmf_dev, APMF_FUNC_SBIOS_REQUESTS))
>   		acpi_remove_notify_handler(ahandle, ACPI_ALL_NOTIFY, apmf_event_handler);
> +
> +	if (pmf_dev->smart_pc_enabled && pmf_dev->pmf_if_version == PMF_IF_V2)
> +		acpi_remove_notify_handler(ahandle, ACPI_ALL_NOTIFY, apmf_event_handler_v2);
>   }
>   
>   int apmf_acpi_init(struct amd_pmf_dev *pmf_dev)
> diff --git a/drivers/platform/x86/amd/pmf/pmf.h b/drivers/platform/x86/amd/pmf/pmf.h
> index a79808fda1d8..255c5ad2300e 100644
> --- a/drivers/platform/x86/amd/pmf/pmf.h
> +++ b/drivers/platform/x86/amd/pmf/pmf.h
> @@ -370,6 +370,8 @@ struct amd_pmf_dev {
>   	struct input_dev *pmf_idev;
>   	size_t mtable_size;
>   	struct resource *res;
> +	struct apmf_sbios_req_v2 req; /* To get custom bios pending request */
> +	struct mutex cb_mutex;
>   };
>   
>   struct apmf_sps_prop_granular_v2 {
> @@ -616,6 +618,16 @@ enum ta_slider {
>   	TA_MAX,
>   };
>   
> +enum apmf_smartpc_custom_bios_inputs {
> +	APMF_SMARTPC_CUSTOM_BIOS_INPUT1,
> +	APMF_SMARTPC_CUSTOM_BIOS_INPUT2,
> +};
> +
> +enum apmf_preq_smartpc {
> +	NOTIFY_CUSTOM_BIOS_INPUT1 = 5,
> +	NOTIFY_CUSTOM_BIOS_INPUT2,
> +};

Maybe as a follow up you should combine these all together in a common 
header:

APMF_AMT_NOTIFICATION
APMF_CQL_NOTIFICATION

> +
>   /* Command ids for TA communication */
>   enum ta_pmf_command {
>   	TA_PMF_COMMAND_POLICY_BUILDER_INITIALIZE,
> @@ -657,7 +669,8 @@ struct ta_pmf_condition_info {
>   	u32 power_slider;
>   	u32 lid_state;
>   	bool user_present;
> -	u32 rsvd1[2];
> +	u32 bios_input1;
> +	u32 bios_input2;
>   	u32 monitor_count;
>   	u32 rsvd2[2];
>   	u32 bat_design;
> diff --git a/drivers/platform/x86/amd/pmf/spc.c b/drivers/platform/x86/amd/pmf/spc.c
> index 06226eb0eab3..05bed8206365 100644
> --- a/drivers/platform/x86/amd/pmf/spc.c
> +++ b/drivers/platform/x86/amd/pmf/spc.c
> @@ -47,12 +47,35 @@ void amd_pmf_dump_ta_inputs(struct amd_pmf_dev *dev, struct ta_pmf_enact_table *
>   	dev_dbg(dev->dev, "LID State: %s\n", in->ev_info.lid_state ? "close" : "open");
>   	dev_dbg(dev->dev, "User Presence: %s\n", in->ev_info.user_present ? "Present" : "Away");
>   	dev_dbg(dev->dev, "Ambient Light: %d\n", in->ev_info.ambient_light);
> +	dev_dbg(dev->dev, "Custom BIOS input1: %u\n", in->ev_info.bios_input1);
> +	dev_dbg(dev->dev, "Custom BIOS input2: %u\n", in->ev_info.bios_input2);
>   	dev_dbg(dev->dev, "==== TA inputs END ====\n");
>   }
>   #else
>   void amd_pmf_dump_ta_inputs(struct amd_pmf_dev *dev, struct ta_pmf_enact_table *in) {}
>   #endif
>   
> +static void amd_pmf_get_custom_bios_inputs(struct amd_pmf_dev *pdev,
> +					   struct ta_pmf_enact_table *in)
> +{
> +	if (!pdev->req.pending_req)
> +		return;
> +
> +	switch (pdev->req.pending_req) {
> +	case BIT(NOTIFY_CUSTOM_BIOS_INPUT1):
> +		in->ev_info.bios_input1 = pdev->req.custom_policy[APMF_SMARTPC_CUSTOM_BIOS_INPUT1];
> +		break;
> +	case BIT(NOTIFY_CUSTOM_BIOS_INPUT2):
> +		in->ev_info.bios_input2 = pdev->req.custom_policy[APMF_SMARTPC_CUSTOM_BIOS_INPUT2];
> +		break;
> +	default:
> +		dev_dbg(pdev->dev, "Invalid preq for BIOS input: 0x%x\n", pdev->req.pending_req);
> +	}
> +
> +	/* Clear pending requests after handling */
> +	memset(&pdev->req, 0, sizeof(pdev->req));
> +}
> +
>   static void amd_pmf_get_c0_residency(u16 *core_res, size_t size, struct ta_pmf_enact_table *in)
>   {
>   	u16 max, avg = 0;
> @@ -201,4 +224,5 @@ void amd_pmf_populate_ta_inputs(struct amd_pmf_dev *dev, struct ta_pmf_enact_tab
>   	amd_pmf_get_battery_info(dev, in);
>   	amd_pmf_get_slider_info(dev, in);
>   	amd_pmf_get_sensor_info(dev, in);
> +	amd_pmf_get_custom_bios_inputs(dev, in);
>   }


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] platform/x86/amd/pmf: Enable Custom BIOS Inputs for PMF-TA
  2024-12-05 19:15 ` Mario Limonciello
@ 2024-12-11  3:21   ` Shyam Sundar S K
  0 siblings, 0 replies; 4+ messages in thread
From: Shyam Sundar S K @ 2024-12-11  3:21 UTC (permalink / raw)
  To: Mario Limonciello, hdegoede, ilpo.jarvinen
  Cc: platform-driver-x86, Patil.Reddy



On 12/6/2024 00:45, Mario Limonciello wrote:
> On 12/5/2024 04:19, Shyam Sundar S K wrote:
>> Introduce support for passing custom BIOS inputs to the PMF-TA to
>> assess
>> BIOS input policy conditions. The PMF driver will adjust system
>> settings
>> based on these BIOS input conditions and their corresponding output
>> actions.
>>
>> Co-developed-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
>> Signed-off-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
>> Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
> 
> Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
> 
> I do have one suggestion for a follow up to consider.
> 
>> ---
>>   drivers/platform/x86/amd/pmf/acpi.c | 24 ++++++++++++++++++++++++
>>   drivers/platform/x86/amd/pmf/pmf.h  | 15 ++++++++++++++-
>>   drivers/platform/x86/amd/pmf/spc.c  | 24 ++++++++++++++++++++++++
>>   3 files changed, 62 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/platform/x86/amd/pmf/acpi.c b/drivers/platform/
>> x86/amd/pmf/acpi.c
>> index 1b9c7acf0ddf..21ccd677ffa4 100644
>> --- a/drivers/platform/x86/amd/pmf/acpi.c
>> +++ b/drivers/platform/x86/amd/pmf/acpi.c
>> @@ -321,6 +321,18 @@ int apmf_get_sbios_requests(struct amd_pmf_dev
>> *pdev, struct apmf_sbios_req *req
>>                                        req, sizeof(*req));
>>   }
>>   +static void apmf_event_handler_v2(acpi_handle handle, u32 event,
>> void *data)
>> +{
>> +    struct amd_pmf_dev *pmf_dev = data;
>> +    int ret;
>> +
>> +    guard(mutex)(&pmf_dev->cb_mutex);
>> +
>> +    ret = apmf_get_sbios_requests_v2(pmf_dev, &pmf_dev->req);
>> +    if (ret)
>> +        dev_err(pmf_dev->dev, "Failed to get v2 SBIOS requests:
>> %d\n", ret);
>> +}
>> +
>>   static void apmf_event_handler(acpi_handle handle, u32 event, void
>> *data)
>>   {
>>       struct amd_pmf_dev *pmf_dev = data;
>> @@ -430,6 +442,15 @@ int apmf_install_handler(struct amd_pmf_dev
>> *pmf_dev)
>>           apmf_event_handler(ahandle, 0, pmf_dev);
>>       }
>>   +    if (pmf_dev->smart_pc_enabled && pmf_dev->pmf_if_version ==
>> PMF_IF_V2) {
>> +        status = acpi_install_notify_handler(ahandle, ACPI_ALL_NOTIFY,
>> +                             apmf_event_handler_v2, pmf_dev);
>> +        if (ACPI_FAILURE(status)) {
>> +            dev_err(pmf_dev->dev, "failed to install notify handler
>> for custom BIOS inputs\n");
>> +            return -ENODEV;
>> +        }
>> +    }
>> +
>>       return 0;
>>   }
>>   @@ -480,6 +501,9 @@ void apmf_acpi_deinit(struct amd_pmf_dev
>> *pmf_dev)
>>       if (is_apmf_func_supported(pmf_dev, APMF_FUNC_AUTO_MODE) &&
>>           is_apmf_func_supported(pmf_dev, APMF_FUNC_SBIOS_REQUESTS))
>>           acpi_remove_notify_handler(ahandle, ACPI_ALL_NOTIFY,
>> apmf_event_handler);
>> +
>> +    if (pmf_dev->smart_pc_enabled && pmf_dev->pmf_if_version ==
>> PMF_IF_V2)
>> +        acpi_remove_notify_handler(ahandle, ACPI_ALL_NOTIFY,
>> apmf_event_handler_v2);
>>   }
>>     int apmf_acpi_init(struct amd_pmf_dev *pmf_dev)
>> diff --git a/drivers/platform/x86/amd/pmf/pmf.h b/drivers/platform/
>> x86/amd/pmf/pmf.h
>> index a79808fda1d8..255c5ad2300e 100644
>> --- a/drivers/platform/x86/amd/pmf/pmf.h
>> +++ b/drivers/platform/x86/amd/pmf/pmf.h
>> @@ -370,6 +370,8 @@ struct amd_pmf_dev {
>>       struct input_dev *pmf_idev;
>>       size_t mtable_size;
>>       struct resource *res;
>> +    struct apmf_sbios_req_v2 req; /* To get custom bios pending
>> request */
>> +    struct mutex cb_mutex;
>>   };
>>     struct apmf_sps_prop_granular_v2 {
>> @@ -616,6 +618,16 @@ enum ta_slider {
>>       TA_MAX,
>>   };
>>   +enum apmf_smartpc_custom_bios_inputs {
>> +    APMF_SMARTPC_CUSTOM_BIOS_INPUT1,
>> +    APMF_SMARTPC_CUSTOM_BIOS_INPUT2,
>> +};
>> +
>> +enum apmf_preq_smartpc {
>> +    NOTIFY_CUSTOM_BIOS_INPUT1 = 5,
>> +    NOTIFY_CUSTOM_BIOS_INPUT2,
>> +};
> 
> Maybe as a follow up you should combine these all together in a common
> header:
> 
> APMF_AMT_NOTIFICATION
> APMF_CQL_NOTIFICATION
> 

Mario - Sorry, I missed this remark. Will address in the larger
reordering of the PMF series.

Thanks,
Shyam

>> +
>>   /* Command ids for TA communication */
>>   enum ta_pmf_command {
>>       TA_PMF_COMMAND_POLICY_BUILDER_INITIALIZE,
>> @@ -657,7 +669,8 @@ struct ta_pmf_condition_info {
>>       u32 power_slider;
>>       u32 lid_state;
>>       bool user_present;
>> -    u32 rsvd1[2];
>> +    u32 bios_input1;
>> +    u32 bios_input2;
>>       u32 monitor_count;
>>       u32 rsvd2[2];
>>       u32 bat_design;
>> diff --git a/drivers/platform/x86/amd/pmf/spc.c b/drivers/platform/
>> x86/amd/pmf/spc.c
>> index 06226eb0eab3..05bed8206365 100644
>> --- a/drivers/platform/x86/amd/pmf/spc.c
>> +++ b/drivers/platform/x86/amd/pmf/spc.c
>> @@ -47,12 +47,35 @@ void amd_pmf_dump_ta_inputs(struct amd_pmf_dev
>> *dev, struct ta_pmf_enact_table *
>>       dev_dbg(dev->dev, "LID State: %s\n", in->ev_info.lid_state ?
>> "close" : "open");
>>       dev_dbg(dev->dev, "User Presence: %s\n", in-
>> >ev_info.user_present ? "Present" : "Away");
>>       dev_dbg(dev->dev, "Ambient Light: %d\n", in-
>> >ev_info.ambient_light);
>> +    dev_dbg(dev->dev, "Custom BIOS input1: %u\n", in-
>> >ev_info.bios_input1);
>> +    dev_dbg(dev->dev, "Custom BIOS input2: %u\n", in-
>> >ev_info.bios_input2);
>>       dev_dbg(dev->dev, "==== TA inputs END ====\n");
>>   }
>>   #else
>>   void amd_pmf_dump_ta_inputs(struct amd_pmf_dev *dev, struct
>> ta_pmf_enact_table *in) {}
>>   #endif
>>   +static void amd_pmf_get_custom_bios_inputs(struct amd_pmf_dev *pdev,
>> +                       struct ta_pmf_enact_table *in)
>> +{
>> +    if (!pdev->req.pending_req)
>> +        return;
>> +
>> +    switch (pdev->req.pending_req) {
>> +    case BIT(NOTIFY_CUSTOM_BIOS_INPUT1):
>> +        in->ev_info.bios_input1 = pdev-
>> >req.custom_policy[APMF_SMARTPC_CUSTOM_BIOS_INPUT1];
>> +        break;
>> +    case BIT(NOTIFY_CUSTOM_BIOS_INPUT2):
>> +        in->ev_info.bios_input2 = pdev-
>> >req.custom_policy[APMF_SMARTPC_CUSTOM_BIOS_INPUT2];
>> +        break;
>> +    default:
>> +        dev_dbg(pdev->dev, "Invalid preq for BIOS input: 0x%x\n",
>> pdev->req.pending_req);
>> +    }
>> +
>> +    /* Clear pending requests after handling */
>> +    memset(&pdev->req, 0, sizeof(pdev->req));
>> +}
>> +
>>   static void amd_pmf_get_c0_residency(u16 *core_res, size_t size,
>> struct ta_pmf_enact_table *in)
>>   {
>>       u16 max, avg = 0;
>> @@ -201,4 +224,5 @@ void amd_pmf_populate_ta_inputs(struct
>> amd_pmf_dev *dev, struct ta_pmf_enact_tab
>>       amd_pmf_get_battery_info(dev, in);
>>       amd_pmf_get_slider_info(dev, in);
>>       amd_pmf_get_sensor_info(dev, in);
>> +    amd_pmf_get_custom_bios_inputs(dev, in);
>>   }
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] platform/x86/amd/pmf: Enable Custom BIOS Inputs for PMF-TA
  2024-12-05 10:19 [PATCH] platform/x86/amd/pmf: Enable Custom BIOS Inputs for PMF-TA Shyam Sundar S K
  2024-12-05 19:15 ` Mario Limonciello
@ 2024-12-16 17:17 ` Ilpo Järvinen
  1 sibling, 0 replies; 4+ messages in thread
From: Ilpo Järvinen @ 2024-12-16 17:17 UTC (permalink / raw)
  To: hdegoede, Shyam Sundar S K
  Cc: platform-driver-x86, Patil.Reddy, mario.limonciello

On Thu, 05 Dec 2024 15:49:37 +0530, Shyam Sundar S K wrote:

> Introduce support for passing custom BIOS inputs to the PMF-TA to assess
> BIOS input policy conditions. The PMF driver will adjust system settings
> based on these BIOS input conditions and their corresponding output
> actions.
> 
> 


Thank you for your contribution, it has been applied to my local
review-ilpo-next branch. Note it will show up in the public
platform-drivers-x86/review-ilpo-next branch only once I've pushed my
local branch there, which might take a while.

The list of commits applied:
[1/1] platform/x86/amd/pmf: Enable Custom BIOS Inputs for PMF-TA
      commit: 6000bc1f5a81eb3938d824b325dbe1790d4f7efa

--
 i.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-12-16 17:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-05 10:19 [PATCH] platform/x86/amd/pmf: Enable Custom BIOS Inputs for PMF-TA Shyam Sundar S K
2024-12-05 19:15 ` Mario Limonciello
2024-12-11  3:21   ` Shyam Sundar S K
2024-12-16 17:17 ` Ilpo Järvinen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.