From nobody Tue Apr 7 10:47:33 2026 Received: from relay11.grserver.gr (relay11.grserver.gr [78.46.171.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8919A35836E; Sat, 7 Mar 2026 11:55:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=78.46.171.57 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772884539; cv=none; b=CaXK/yxYZ0nMM7ZCGxZa0Gs5/DvM5o3q05rziGM+XBCX0j2B+mc3y3IVUJMi938MhNrmmVO+Aixw8oXhlF6dVr6t2vbERXQx3Egmy64yljncXogHSUFGYdxIVSDdfkW4lgB17UcdV7mIdggGOG1LQAGHHrX48K2pbmo66FX991A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772884539; c=relaxed/simple; bh=8+TCXVwa2XRreVgb8ESaI1DT6yoyRfQLSiT+4w3kaJU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iaMJ+Rga1BqxxXW0qk8wYaBj7+E2U9rYGewCHWhDuAq83Els2hWDXoiL1YmCOgg5LPoHiwftYQ9ixzgc+nJCth1j1cIgq6WSSoR5Vzsr4Sm2Lx2YOKhNw84XhAMXSSCIVIgbHzyJTKs/h2n0K0+cMbLgQcdpT4DWiKvzkuuQRWw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev; spf=pass smtp.mailfrom=antheas.dev; dkim=pass (2048-bit key) header.d=antheas.dev header.i=@antheas.dev header.b=W+pKXzBa; arc=none smtp.client-ip=78.46.171.57 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=antheas.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=antheas.dev header.i=@antheas.dev header.b="W+pKXzBa" Received: from relay11 (localhost.localdomain [127.0.0.1]) by relay11.grserver.gr (Proxmox) with ESMTP id C7995C643A; Sat, 7 Mar 2026 13:55:35 +0200 (EET) Received: from linux3247.grserver.gr (linux3247.grserver.gr [213.158.90.240]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by relay11.grserver.gr (Proxmox) with ESMTPS id B38BEC63B0; Sat, 7 Mar 2026 13:55:34 +0200 (EET) Received: from antheas-z13 (unknown [IPv6:2a05:f6c5:43c3:0:ba48:cea4:a8c2:d901]) by linux3247.grserver.gr (Postfix) with ESMTPSA id D936E1FEA39; Sat, 7 Mar 2026 13:55:33 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=antheas.dev; s=default; t=1772884534; bh=QIfysop0UOETvkD0YaLazAw51oLqRQvp3ceM/F4LB1Q=; h=From:To:Subject; b=W+pKXzBaeTR1ZhpdZkBUk6kYSHBSXk0dwkpfBxIiU/C0SVTb1qCF0rrB+Jlu7Zmr1 LX+0Dra0qscdkbZa1Ptu30tnhotUiwF+CCrioBJ5FDxibJbur9DBtwmgvCYpRJP5GL dTxKomIuXpDgQ7lQNZLHm9OslO5nfZq2A3rVrXHnGugRi6Gk4zDGkE9+WxHGmL5hf9 XobgWQspusxBtlTKesytGplsv5aIFug1+jInUHohJW4fxcPexru9t/qhAKeG1M/b5N jX5R4z53GZuycITlXtUzSSjWK3/OMOgHnfdWJ9SbT3eXcqVsr88FWE9aldQ1b8GcYa WCpzmUyCCU13A== Authentication-Results: linux3247.grserver.gr; spf=pass (sender IP is 2a05:f6c5:43c3:0:ba48:cea4:a8c2:d901) smtp.mailfrom=lkml@antheas.dev smtp.helo=antheas-z13 Received-SPF: pass (linux3247.grserver.gr: connection is authenticated) From: Antheas Kapenekakis To: Mario.Limonciello@amd.com Cc: W_Armin@gmx.de, sashal@kernel.org, Shyam-Sundar.S-k@amd.com, derekjohn.clark@gmail.com, denis.benato@linux.dev, linux-kernel@vger.kernel.org, platform-driver-x86@vger.kernel.org, Antheas Kapenekakis Subject: [RFC v3 4/4] platform/x86/amd: dptc: Add device entries for handheld PCs Date: Sat, 7 Mar 2026 12:55:16 +0100 Message-ID: <20260307115516.26892-5-lkml@antheas.dev> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260307115516.26892-1-lkml@antheas.dev> References: <20260307115516.26892-1-lkml@antheas.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-PPP-Message-ID: <177288453439.1271017.12808590259982562065@linux3247.grserver.gr> X-PPP-Vhost: antheas.dev X-Virus-Scanned: clamav-milter 1.4.3 at linux3247.grserver.gr X-Virus-Status: Clean Content-Type: text/plain; charset="utf-8" Add limit tables and DMI entries for AMD APU-based handheld devices: - 15W class: AYANEO AIR - 18W class: AYANEO AIR Plus/Pro - 25W class: AYANEO AIR 1S, NEXT/KUN - 28W class: GPD Win Mini/4/Max 2, GPD Duo, GPD Pocket 4, AYANEO 2, OrangePi NEO-01, SuiPlay0X1 - 30W class: AYANEO FLIP/GEEK/SLIDE/3, AOKZOE A1/A1X/A2, OneXPlayer F1Pro/2/X1/G1, AYN Loki Max, Zeenix Pro Also add SoC strings for Ryzen AI, Z1, Ryzen 8000/7040/6000/5000 families, extending support beyond the initial AI MAX series. Assisted-by: Claude:claude-opus-4-6 Signed-off-by: Antheas Kapenekakis --- drivers/platform/x86/amd/dptc.c | 409 ++++++++++++++++++++++++++++++++ 1 file changed, 409 insertions(+) diff --git a/drivers/platform/x86/amd/dptc.c b/drivers/platform/x86/amd/dpt= c.c index 1f07e2e6f278..a3d582e48cd3 100644 --- a/drivers/platform/x86/amd/dptc.c +++ b/drivers/platform/x86/amd/dptc.c @@ -85,6 +85,66 @@ static const struct dptc_param_desc dptc_params[DPTC_NUM= _PARAMS] =3D { 1, ALIB_ID_TEMP_TARGET }, }; =20 +/* 15W class: AYANEO AIR (Ryzen 5 5560U) */ +static const struct dptc_device_limits limits_15w =3D { .params =3D { + [DPTC_PPT_PL1_SPL] =3D { 0, 5, 10, 15, 18 }, + [DPTC_PPT_PL2_SPPT] =3D { 0, 5, 10, 15, 18 }, + [DPTC_PPT_PL3_FPPT] =3D { 0, 5, 12, 18, 22 }, + [DPTC_CPU_TEMP] =3D { 60, 70, 85, 90, 100 }, +}, .profiles =3D { + [PLATFORM_PROFILE_LOW_POWER] =3D { .vals =3D { 5, 5, 8, 0 } }, + [PLATFORM_PROFILE_BALANCED] =3D { .vals =3D { 10, 12, 15, 0 } }, + [PLATFORM_PROFILE_PERFORMANCE] =3D { .vals =3D { 15, 15, 18, 0 } }, +}}; + +/* 18W class: AYANEO AIR Plus/Pro (Ryzen 5 5560U, Ryzen 7 5825U) */ +static const struct dptc_device_limits limits_18w =3D { .params =3D { + [DPTC_PPT_PL1_SPL] =3D { 0, 5, 15, 18, 22 }, + [DPTC_PPT_PL2_SPPT] =3D { 0, 5, 15, 18, 22 }, + [DPTC_PPT_PL3_FPPT] =3D { 0, 5, 15, 20, 25 }, + [DPTC_CPU_TEMP] =3D { 60, 70, 85, 90, 100 }, +}, .profiles =3D { + [PLATFORM_PROFILE_LOW_POWER] =3D { .vals =3D { 5, 5, 8, 0 } }, + [PLATFORM_PROFILE_BALANCED] =3D { .vals =3D { 12, 14, 15, 0 } }, + [PLATFORM_PROFILE_PERFORMANCE] =3D { .vals =3D { 18, 18, 20, 0 } }, +}}; + +/* 25W class: Ryzen 5000 handhelds (AYANEO NEXT, KUN) */ +static const struct dptc_device_limits limits_25w =3D { .params =3D { + [DPTC_PPT_PL1_SPL] =3D { 0, 4, 15, 25, 32 }, + [DPTC_PPT_PL2_SPPT] =3D { 0, 4, 20, 27, 35 }, + [DPTC_PPT_PL3_FPPT] =3D { 0, 4, 25, 30, 37 }, + [DPTC_CPU_TEMP] =3D { 60, 70, 85, 90, 100 }, +}, .profiles =3D { + [PLATFORM_PROFILE_LOW_POWER] =3D { .vals =3D { 8, 8, 12, 0 } }, + [PLATFORM_PROFILE_BALANCED] =3D { .vals =3D { 15, 17, 20, 0 } }, + [PLATFORM_PROFILE_PERFORMANCE] =3D { .vals =3D { 25, 27, 30, 0 } }, +}}; + +/* 28W class: GPD Win series, AYANEO 2, OrangePi NEO-01 */ +static const struct dptc_device_limits limits_28w =3D { .params =3D { + [DPTC_PPT_PL1_SPL] =3D { 0, 4, 15, 28, 32 }, + [DPTC_PPT_PL2_SPPT] =3D { 0, 4, 20, 30, 35 }, + [DPTC_PPT_PL3_FPPT] =3D { 0, 4, 25, 32, 37 }, + [DPTC_CPU_TEMP] =3D { 60, 70, 85, 90, 100 }, +}, .profiles =3D { + [PLATFORM_PROFILE_LOW_POWER] =3D { .vals =3D { 8, 8, 12, 0 } }, + [PLATFORM_PROFILE_BALANCED] =3D { .vals =3D { 15, 17, 22, 0 } }, + [PLATFORM_PROFILE_PERFORMANCE] =3D { .vals =3D { 25, 28, 32, 0 } }, +}}; + +/* 30W class: OneXPlayer, AYANEO FLIP/GEEK/SLIDE/3, AOKZOE */ +static const struct dptc_device_limits limits_30w =3D { .params =3D { + [DPTC_PPT_PL1_SPL] =3D { 0, 4, 15, 30, 40 }, + [DPTC_PPT_PL2_SPPT] =3D { 0, 4, 20, 32, 43 }, + [DPTC_PPT_PL3_FPPT] =3D { 0, 4, 25, 41, 50 }, + [DPTC_CPU_TEMP] =3D { 60, 70, 85, 90, 100 }, +}, .profiles =3D { + [PLATFORM_PROFILE_LOW_POWER] =3D { .vals =3D { 8, 8, 12, 0 } }, + [PLATFORM_PROFILE_BALANCED] =3D { .vals =3D { 15, 17, 25, 0 } }, + [PLATFORM_PROFILE_PERFORMANCE] =3D { .vals =3D { 25, 28, 41, 0 } }, +}}; + /* AI MAX Handheld class: GPD Win 5 */ static const struct dptc_device_limits limits_maxhh =3D { .params =3D { [DPTC_PPT_PL1_SPL] =3D { 0, 4, 25, 80, 100 }, @@ -103,11 +163,60 @@ static const char * const dptc_soc_table[] =3D { "AMD RYZEN AI MAX+ 395", "AMD RYZEN AI MAX+ 385", "AMD RYZEN AI MAX 380", + /* Ryzen AI */ + "AMD Ryzen AI 9 HX 370", + "AMD Ryzen AI HX 360", + /* Z1 - Extreme before plain Z1 */ + "AMD Ryzen Z1 Extreme", + "AMD Ryzen Z1", + /* Ryzen 8000 */ + "AMD Ryzen 7 8840U", + /* Ryzen 7040 */ + "AMD Ryzen 7 7840U", + /* Ryzen 6000 */ + "AMD Ryzen 7 6800U", + "AMD Ryzen 7 6600U", + /* Ryzen 5000 */ + "AMD Ryzen 7 5800U", + "AMD Ryzen 7 5700U", + "AMD Ryzen 5 5560U", NULL, }; =20 static const struct dmi_system_id dptc_dmi_table[] =3D { /* GPD */ + { + .ident =3D "GPD Win Mini", + .matches =3D { + DMI_MATCH(DMI_SYS_VENDOR, "GPD"), + DMI_MATCH(DMI_PRODUCT_NAME, "G1617-01"), + }, + .driver_data =3D (void *)&limits_28w, + }, + { + .ident =3D "GPD Win Mini 2024", + .matches =3D { + DMI_MATCH(DMI_SYS_VENDOR, "GPD"), + DMI_MATCH(DMI_PRODUCT_NAME, "G1617-02"), + }, + .driver_data =3D (void *)&limits_28w, + }, + { + .ident =3D "GPD Win Mini 2024", + .matches =3D { + DMI_MATCH(DMI_SYS_VENDOR, "GPD"), + DMI_MATCH(DMI_PRODUCT_NAME, "G1617-02-L"), + }, + .driver_data =3D (void *)&limits_28w, + }, + { + .ident =3D "GPD Win 4", + .matches =3D { + DMI_MATCH(DMI_SYS_VENDOR, "GPD"), + DMI_MATCH(DMI_PRODUCT_NAME, "G1618-04"), + }, + .driver_data =3D (void *)&limits_28w, + }, { .ident =3D "GPD Win 5", .matches =3D { @@ -116,6 +225,306 @@ static const struct dmi_system_id dptc_dmi_table[] = =3D { }, .driver_data =3D (void *)&limits_maxhh, }, + { + .ident =3D "GPD Win Max 2", + .matches =3D { + DMI_MATCH(DMI_SYS_VENDOR, "GPD"), + DMI_MATCH(DMI_PRODUCT_NAME, "G1619-04"), + }, + .driver_data =3D (void *)&limits_28w, + }, + { + .ident =3D "GPD Win Max 2 2024", + .matches =3D { + DMI_MATCH(DMI_SYS_VENDOR, "GPD"), + DMI_MATCH(DMI_PRODUCT_NAME, "G1619-05"), + }, + .driver_data =3D (void *)&limits_28w, + }, + { + .ident =3D "GPD Duo", + .matches =3D { + DMI_MATCH(DMI_SYS_VENDOR, "GPD"), + DMI_MATCH(DMI_PRODUCT_NAME, "G1622-01"), + }, + .driver_data =3D (void *)&limits_28w, + }, + { + .ident =3D "GPD Duo", + .matches =3D { + DMI_MATCH(DMI_SYS_VENDOR, "GPD"), + DMI_MATCH(DMI_PRODUCT_NAME, "G1622-01-L"), + }, + .driver_data =3D (void *)&limits_28w, + }, + { + .ident =3D "GPD Pocket 4", + .matches =3D { + DMI_MATCH(DMI_SYS_VENDOR, "GPD"), + DMI_MATCH(DMI_PRODUCT_NAME, "G1628-04"), + }, + .driver_data =3D (void *)&limits_28w, + }, + { + .ident =3D "GPD Pocket 4", + .matches =3D { + DMI_MATCH(DMI_SYS_VENDOR, "GPD"), + DMI_MATCH(DMI_PRODUCT_NAME, "G1628-04-L"), + }, + .driver_data =3D (void *)&limits_28w, + }, + /* OrangePi */ + { + .ident =3D "OrangePi NEO-01", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "OrangePi"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEO-01"), + }, + .driver_data =3D (void *)&limits_28w, + }, + /* AYN */ + { + .ident =3D "AYN Loki Max", + .matches =3D { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ayn"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Loki Max"), + }, + .driver_data =3D (void *)&limits_30w, + }, + /* Tectoy (Zeenix Pro =3D Loki Max) */ + { + .ident =3D "Zeenix Pro", + .matches =3D { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Tectoy"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Zeenix Pro"), + }, + .driver_data =3D (void *)&limits_30w, + }, + /* AOKZOE */ + { + .ident =3D "AOKZOE A1 AR07", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AOKZOE"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "AOKZOE A1 AR07"), + }, + .driver_data =3D (void *)&limits_30w, + }, + { + .ident =3D "AOKZOE A1 Pro", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AOKZOE"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "AOKZOE A1 Pro"), + }, + .driver_data =3D (void *)&limits_30w, + }, + { + .ident =3D "AOKZOE A1X", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AOKZOE"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "AOKZOE A1X"), + }, + .driver_data =3D (void *)&limits_30w, + }, + { + .ident =3D "AOKZOE A2 Pro", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AOKZOE"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "AOKZOE A2 Pro"), + }, + .driver_data =3D (void *)&limits_30w, + }, + /* OneXPlayer (Intel variants filtered by SoC table) */ + { + .ident =3D "ONEXPLAYER F1Pro", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER F1Pro"), + }, + .driver_data =3D (void *)&limits_30w, + }, + { + .ident =3D "ONEXPLAYER F1 EVA-02", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER F1 EVA-02"), + }, + .driver_data =3D (void *)&limits_30w, + }, + { + .ident =3D "ONEXPLAYER 2", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"), + DMI_MATCH(DMI_BOARD_NAME, "ONEXPLAYER 2"), + }, + .driver_data =3D (void *)&limits_30w, + }, + { + .ident =3D "ONEXPLAYER X1 A", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER X1 A"), + }, + .driver_data =3D (void *)&limits_30w, + }, + { + .ident =3D "ONEXPLAYER X1z", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER X1z"), + }, + .driver_data =3D (void *)&limits_30w, + }, + { + .ident =3D "ONEXPLAYER X1Pro", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER X1Pro"), + }, + .driver_data =3D (void *)&limits_30w, + }, + { + .ident =3D "ONEXPLAYER G1 A", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER G1 A"), + }, + .driver_data =3D (void *)&limits_30w, + }, + /* AYANEO - 15W */ + { + .ident =3D "AYANEO AIR", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "AIR"), + }, + .driver_data =3D (void *)&limits_15w, + }, + /* AYANEO - 18W */ + { + .ident =3D "AYANEO AIR Plus", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "AIR Plus"), + }, + .driver_data =3D (void *)&limits_18w, + }, + { + .ident =3D "AYANEO AIR Pro", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "AIR Pro"), + }, + .driver_data =3D (void *)&limits_18w, + }, + /* AYANEO - 25W */ + { + .ident =3D "AYANEO AIR 1S", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_MATCH(DMI_BOARD_NAME, "AIR 1S"), + }, + .driver_data =3D (void *)&limits_25w, + }, + { + .ident =3D "AYANEO NEXT Advance", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT Advance"), + }, + .driver_data =3D (void *)&limits_25w, + }, + { + .ident =3D "AYANEO NEXT Lite", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT Lite"), + }, + .driver_data =3D (void *)&limits_25w, + }, + { + .ident =3D "AYANEO NEXT Pro", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT Pro"), + }, + .driver_data =3D (void *)&limits_25w, + }, + { + .ident =3D "AYANEO NEXT", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT"), + }, + .driver_data =3D (void *)&limits_25w, + }, + { + .ident =3D "AYANEO KUN", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "KUN"), + }, + .driver_data =3D (void *)&limits_25w, + }, + { + .ident =3D "AYANEO KUN", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO KUN"), + }, + .driver_data =3D (void *)&limits_25w, + }, + /* AYANEO - 28W */ + { + .ident =3D "AYANEO 2", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_MATCH(DMI_BOARD_NAME, "AYANEO 2"), + }, + .driver_data =3D (void *)&limits_28w, + }, + { + .ident =3D "SuiPlay0X1", + .matches =3D { + DMI_MATCH(DMI_SYS_VENDOR, "Mysten Labs, Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "SuiPlay0X1"), + }, + .driver_data =3D (void *)&limits_28w, + }, + /* AYANEO - 30W */ + { + /* DMI_MATCH catches all FLIP variants (DS, KB, 1S DS, 1S KB) */ + .ident =3D "AYANEO FLIP", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_MATCH(DMI_BOARD_NAME, "FLIP"), + }, + .driver_data =3D (void *)&limits_30w, + }, + { + /* DMI_MATCH catches GEEK and GEEK 1S */ + .ident =3D "AYANEO GEEK", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_MATCH(DMI_BOARD_NAME, "GEEK"), + }, + .driver_data =3D (void *)&limits_30w, + }, + { + .ident =3D "AYANEO SLIDE", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "SLIDE"), + }, + .driver_data =3D (void *)&limits_30w, + }, + { + .ident =3D "AYANEO 3", + .matches =3D { + DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO 3"), + }, + .driver_data =3D (void *)&limits_30w, + }, { } }; MODULE_DEVICE_TABLE(dmi, dptc_dmi_table); --=20 2.52.0