drm/amdgpu: add dmi check for jadeite platform
authorVijendar Mukunda <Vijendar.Mukunda@amd.com>
Thu, 30 Jun 2022 02:26:50 +0000 (07:56 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 18 Jul 2022 20:38:19 +0000 (16:38 -0400)
DMI check is required to distinguish Jadeite platform from
Stoney base variant.
Add DMI check logic for Jadeite platform.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c

index ceda191..4c265ad 100644 (file)
@@ -29,6 +29,8 @@
 #include <linux/platform_device.h>
 #include <sound/designware_i2s.h>
 #include <sound/pcm.h>
+#include <linux/acpi.h>
+#include <linux/dmi.h>
 
 #include "amdgpu.h"
 #include "atom.h"
@@ -36,6 +38,7 @@
 
 #include "acp_gfx_if.h"
 
+#define ST_JADEITE 1
 #define ACP_TILE_ON_MASK                       0x03
 #define ACP_TILE_OFF_MASK                      0x02
 #define ACP_TILE_ON_RETAIN_REG_MASK            0x1f
@@ -85,6 +88,8 @@
 #define ACP_DEVS                               4
 #define ACP_SRC_ID                             162
 
+static unsigned long acp_machine_id;
+
 enum {
        ACP_TILE_P1 = 0,
        ACP_TILE_P2,
@@ -180,6 +185,37 @@ static int acp_genpd_remove_device(struct device *dev, void *data)
        return 0;
 }
 
+static int acp_quirk_cb(const struct dmi_system_id *id)
+{
+       acp_machine_id = ST_JADEITE;
+       return 1;
+}
+
+static const struct dmi_system_id acp_quirk_table[] = {
+       {
+               .callback = acp_quirk_cb,
+               .matches = {
+                       DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AMD"),
+                       DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Jadeite"),
+               }
+       },
+       {
+               .callback = acp_quirk_cb,
+               .matches = {
+                       DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "IP3 Technology CO.,Ltd."),
+                       DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ASN1D"),
+               },
+       },
+       {
+               .callback = acp_quirk_cb,
+               .matches = {
+                       DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Standard"),
+                       DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ASN10"),
+               },
+       },
+       {}
+};
+
 /**
  * acp_hw_init - start and test ACP block
  *