1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * AMD Platform Management Framework Driver Quirks
4 *
5 * Copyright (c) 2024, Advanced Micro Devices, Inc.
6 * All Rights Reserved.
7 *
8 * Author: Mario Limonciello <mario.limonciello@amd.com>
9 */
10
11#include <linux/dmi.h>
12
13#include "pmf.h"
14
15struct quirk_entry {
16	u32 supported_func;
17};
18
19static struct quirk_entry quirk_no_sps_bug = {
20	.supported_func = 0x4003,
21};
22
23static const struct dmi_system_id fwbug_list[] = {
24	{
25		.ident = "ROG Zephyrus G14",
26		.matches = {
27			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
28			DMI_MATCH(DMI_PRODUCT_NAME, "GA403UV"),
29		},
30		.driver_data = &quirk_no_sps_bug,
31	},
32	{}
33};
34
35void amd_pmf_quirks_init(struct amd_pmf_dev *dev)
36{
37	const struct dmi_system_id *dmi_id;
38	struct quirk_entry *quirks;
39
40	dmi_id = dmi_first_match(fwbug_list);
41	if (!dmi_id)
42		return;
43
44	quirks = dmi_id->driver_data;
45	if (quirks->supported_func) {
46		dev->supported_func = quirks->supported_func;
47		pr_info("Using supported funcs quirk to avoid %s platform firmware bug\n",
48			dmi_id->ident);
49	}
50}
51
52