[PATCH v3 3/4] platform/x86/amd/hsmp: Add ACPI client support for Family 1Ah

Muralidhara M K <[email protected]>
Newsgroups org.kernel.vger.platform-driver-x86,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
The ACPI HSMP device (HID AMDI0097) on the Family 1Ah client platforms
(Models 80h-8Fh and E0h-E3h) describes its mailbox the same way server
platforms already do, via _CRS/_DSD, so hsmp_parse_acpi_table() and
hsmp_get_uid() need no client-specific handling.

Client firmware does not respond to the interface version query
(HSMP_CLIENT_GET_INTERFACE_VER). Instead, query the metrics table version,
as it is the only version-related request supported by the client firmware.
Server-side behavior remains unchanged.

Signed-off-by: Muralidhara M K <[email protected]>
---
 drivers/platform/x86/amd/hsmp/acpi.c | 2 +-
 drivers/platform/x86/amd/hsmp/hsmp.c | 8 ++++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/platform/x86/amd/hsmp/acpi.c b/drivers/platform/x86/amd/hsmp/acpi.c
index 8257cd1da48e..275258ee86bf 100644
--- a/drivers/platform/x86/amd/hsmp/acpi.c
+++ b/drivers/platform/x86/amd/hsmp/acpi.c
@@ -557,7 +557,7 @@ static int init_acpi(struct device *dev)
 		return ret;
 	}
 
-	if (hsmp_pdev->proto_ver >= HSMP_PROTO_VER6) {
+	if (is_client_platform() || hsmp_pdev->proto_ver >= HSMP_PROTO_VER6) {
 		ret = hsmp_get_tbl_dram_base(sock_ind);
 		if (ret)
 			dev_info(dev, "Failed to init metric table\n");
diff --git a/drivers/platform/x86/amd/hsmp/hsmp.c b/drivers/platform/x86/amd/hsmp/hsmp.c
index 60889c1b1099..f35a891772e0 100644
--- a/drivers/platform/x86/amd/hsmp/hsmp.c
+++ b/drivers/platform/x86/amd/hsmp/hsmp.c
@@ -196,12 +196,16 @@ static const struct hsmp_plat_desc hsmp_desc_server = {
 	.metric_dram_msg	= HSMP_GET_METRIC_TABLE_DRAM_ADDR,
 };
 
-/* The client drives a different mailbox with the Ryzen Master SMC message set */
+/*
+ * Client firmware queries the metrics table version instead of the
+ * interface version (HSMP_CLIENT_GET_INTERFACE_VER) to provide a unified
+ * interface across multiple client platforms.
+ */
 static const struct hsmp_plat_desc hsmp_desc_client = {
 	.msg_desc		= hsmp_client_msg_desc_table,
 	.num_msgs		= HSMP_CLIENT_MSG_ID_MAX,
 	.test_msg		= HSMP_CLIENT_TEST,
-	.proto_ver_msg		= HSMP_CLIENT_GET_INTERFACE_VER,
+	.proto_ver_msg		= HSMP_CLIENT_GET_METRICS_TABLE_VER,
 	.metric_tbl_msg		= HSMP_CLIENT_GET_METRICS_TABLE,
 	.metric_dram_msg	= HSMP_CLIENT_GET_METRICS_TABLE_DRAM_ADDR,
 };
-- 
2.34.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.