Skip to content

Commit 5b0cce0

Browse files
committed
applesmc-t2: Only load for T2 Macbooks
Signed-off-by: Eric Naim <dnaim@cachyos.org>
1 parent 9fe445f commit 5b0cce0

1 file changed

Lines changed: 34 additions & 45 deletions

File tree

drivers/hwmon/applesmc-t2.c

Lines changed: 34 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,7 +1133,7 @@ static const struct dev_pm_ops applesmc_pm_ops = {
11331133
};
11341134

11351135
static struct acpi_driver applesmc_driver = {
1136-
.name = "applesmc",
1136+
.name = "applesmc-t2",
11371137
.class = "applesmc",
11381138
.ids = applesmc_ids,
11391139
.ops = {
@@ -1811,50 +1811,39 @@ static void applesmc_release_key_backlight(struct applesmc_device *smc)
18111811
destroy_workqueue(smc->backlight_wq);
18121812
}
18131813

1814-
static int applesmc_dmi_match(const struct dmi_system_id *id)
1814+
#ifndef T2_MAC
1815+
#define T2_MAC(vendor, product) \
1816+
.matches = { \
1817+
DMI_MATCH(DMI_BOARD_VENDOR, vendor), \
1818+
DMI_MATCH(DMI_PRODUCT_NAME, product), \
1819+
},
1820+
#endif
1821+
1822+
static const struct dmi_system_id t2_mac_tbl[] = {
1823+
{ T2_MAC("Apple Inc.", "MacBookPro15,1") },
1824+
{ T2_MAC("Apple Inc.", "MacBookPro15,2") },
1825+
{ T2_MAC("Apple Inc.", "MacBookPro15,3") },
1826+
{ T2_MAC("Apple Inc.", "MacBookPro15,4") },
1827+
{ T2_MAC("Apple Inc.", "MacBookPro16,1") },
1828+
{ T2_MAC("Apple Inc.", "MacBookPro16,2") },
1829+
{ T2_MAC("Apple Inc.", "MacBookPro16,3") },
1830+
{ T2_MAC("Apple Inc.", "MacBookPro16,4") },
1831+
{ T2_MAC("Apple Inc.", "MacBookAir8,1") },
1832+
{ T2_MAC("Apple Inc.", "MacBookAir8,2") },
1833+
{ T2_MAC("Apple Inc.", "MacBookAir9,1") },
1834+
{ T2_MAC("Apple Inc.", "Macmini8,1") },
1835+
{ T2_MAC("Apple Inc.", "MacPro7,1") },
1836+
{ T2_MAC("Apple Inc.", "iMac20,1") },
1837+
{ T2_MAC("Apple Inc.", "iMac20,2") },
1838+
{ T2_MAC("Apple Inc.", "iMacPro1,1") },
1839+
{ }
1840+
};
1841+
1842+
bool apple_is_t2_mac(void)
18151843
{
1816-
return 1;
1844+
return dmi_check_system(t2_mac_tbl);
18171845
}
1818-
1819-
/*
1820-
* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
1821-
* So we need to put "Apple MacBook Pro" before "Apple MacBook".
1822-
*/
1823-
static const struct dmi_system_id applesmc_whitelist[] __initconst = {
1824-
{ applesmc_dmi_match, "Apple MacBook Air", {
1825-
DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
1826-
DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir") },
1827-
},
1828-
{ applesmc_dmi_match, "Apple MacBook Pro", {
1829-
DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
1830-
DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro") },
1831-
},
1832-
{ applesmc_dmi_match, "Apple MacBook", {
1833-
DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
1834-
DMI_MATCH(DMI_PRODUCT_NAME, "MacBook") },
1835-
},
1836-
{ applesmc_dmi_match, "Apple Macmini", {
1837-
DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
1838-
DMI_MATCH(DMI_PRODUCT_NAME, "Macmini") },
1839-
},
1840-
{ applesmc_dmi_match, "Apple iMacPro", {
1841-
DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
1842-
DMI_MATCH(DMI_PRODUCT_NAME, "iMacPro") },
1843-
},
1844-
{ applesmc_dmi_match, "Apple MacPro", {
1845-
DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
1846-
DMI_MATCH(DMI_PRODUCT_NAME, "MacPro") },
1847-
},
1848-
{ applesmc_dmi_match, "Apple iMac", {
1849-
DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
1850-
DMI_MATCH(DMI_PRODUCT_NAME, "iMac") },
1851-
},
1852-
{ applesmc_dmi_match, "Apple Xserve", {
1853-
DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
1854-
DMI_MATCH(DMI_PRODUCT_NAME, "Xserve") },
1855-
},
1856-
{ .ident = NULL }
1857-
};
1846+
EXPORT_SYMBOL_GPL(apple_is_t2_mac)
18581847

18591848
static int applesmc_create_modules(struct applesmc_device *smc)
18601849
{
@@ -1929,7 +1918,7 @@ static int __init applesmc_init(void)
19291918
{
19301919
int ret;
19311920

1932-
if (!dmi_check_system(applesmc_whitelist)) {
1921+
if (!apple_is_t2_mac()) {
19331922
pr_warn("supported laptop not found!\n");
19341923
ret = -ENODEV;
19351924
goto out;
@@ -1958,4 +1947,4 @@ MODULE_AUTHOR("Nicolas Boichat");
19581947
MODULE_AUTHOR("Paul Pawlowski");
19591948
MODULE_DESCRIPTION("Apple SMC");
19601949
MODULE_LICENSE("GPL v2");
1961-
MODULE_DEVICE_TABLE(dmi, applesmc_whitelist);
1950+
MODULE_DEVICE_TABLE(dmi, t2_mac_tbl);

0 commit comments

Comments
 (0)