drm/amdgpu: add dmi check for jadeite platform
[sfrench/cifs-2.6.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_acp.c
index ceda19152c77e440576e59b5b3137515b0b7fee9..4c265ad198b8d864a1f7f6bba981a00fbca003ab 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
  *