@@ -1133,7 +1133,7 @@ static const struct dev_pm_ops applesmc_pm_ops = {
11331133};
11341134
11351135static 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
18591848static 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");
19581947MODULE_AUTHOR ("Paul Pawlowski" );
19591948MODULE_DESCRIPTION ("Apple SMC" );
19601949MODULE_LICENSE ("GPL v2" );
1961- MODULE_DEVICE_TABLE (dmi , applesmc_whitelist );
1950+ MODULE_DEVICE_TABLE (dmi , t2_mac_tbl );
0 commit comments