On Fri, Dec 27, 2024 at 04:55:28AM +0100, Armin Wolf wrote: > Am 21.12.24 um 06:59 schrieb Kurt Borja: > > > Split thermal features into a new DMI table to support upcoming file > > split. > > Could it be that you also decided to reorder the quirk entries? No. I'll make this split lower in the file, so it doesn't mess up the diff. If I did reorder it by accident I will fix it. > > Thanks, > Armin WOlf > > > > > Signed-off-by: Kurt Borja <kuurtb@xxxxxxxxx> > > --- > > drivers/platform/x86/dell/alienware-wmi.c | 163 +++++++++------------- > > 1 file changed, 69 insertions(+), 94 deletions(-) > > > > diff --git a/drivers/platform/x86/dell/alienware-wmi.c b/drivers/platform/x86/dell/alienware-wmi.c > > index 0a0b72dc61ea..8ea08f5f8810 100644 > > --- a/drivers/platform/x86/dell/alienware-wmi.c > > +++ b/drivers/platform/x86/dell/alienware-wmi.c > > @@ -118,8 +118,6 @@ struct quirk_entry { > > u8 hdmi_mux; > > u8 amplifier; > > u8 deepslp; > > - bool thermal; > > - bool gmode; > > }; > > > > static struct quirk_entry *quirks; > > @@ -130,8 +128,6 @@ static struct quirk_entry quirk_inspiron5675 = { > > .hdmi_mux = 0, > > .amplifier = 0, > > .deepslp = 0, > > - .thermal = false, > > - .gmode = false, > > }; > > > > static struct quirk_entry quirk_unknown = { > > @@ -139,8 +135,6 @@ static struct quirk_entry quirk_unknown = { > > .hdmi_mux = 0, > > .amplifier = 0, > > .deepslp = 0, > > - .thermal = false, > > - .gmode = false, > > }; > > > > static struct quirk_entry quirk_x51_r1_r2 = { > > @@ -148,8 +142,6 @@ static struct quirk_entry quirk_x51_r1_r2 = { > > .hdmi_mux = 0, > > .amplifier = 0, > > .deepslp = 0, > > - .thermal = false, > > - .gmode = false, > > }; > > > > static struct quirk_entry quirk_x51_r3 = { > > @@ -157,8 +149,6 @@ static struct quirk_entry quirk_x51_r3 = { > > .hdmi_mux = 0, > > .amplifier = 1, > > .deepslp = 0, > > - .thermal = false, > > - .gmode = false, > > }; > > > > static struct quirk_entry quirk_asm100 = { > > @@ -166,8 +156,6 @@ static struct quirk_entry quirk_asm100 = { > > .hdmi_mux = 1, > > .amplifier = 0, > > .deepslp = 0, > > - .thermal = false, > > - .gmode = false, > > }; > > > > static struct quirk_entry quirk_asm200 = { > > @@ -175,8 +163,6 @@ static struct quirk_entry quirk_asm200 = { > > .hdmi_mux = 1, > > .amplifier = 0, > > .deepslp = 1, > > - .thermal = false, > > - .gmode = false, > > }; > > > > static struct quirk_entry quirk_asm201 = { > > @@ -184,26 +170,6 @@ static struct quirk_entry quirk_asm201 = { > > .hdmi_mux = 1, > > .amplifier = 1, > > .deepslp = 1, > > - .thermal = false, > > - .gmode = false, > > -}; > > - > > -static struct quirk_entry quirk_g_series = { > > - .num_zones = 2, > > - .hdmi_mux = 0, > > - .amplifier = 0, > > - .deepslp = 0, > > - .thermal = true, > > - .gmode = true, > > -}; > > - > > -static struct quirk_entry quirk_x_series = { > > - .num_zones = 2, > > - .hdmi_mux = 0, > > - .amplifier = 0, > > - .deepslp = 0, > > - .thermal = true, > > - .gmode = false, > > }; > > > > static int __init dmi_matched(const struct dmi_system_id *dmi) > > @@ -242,133 +208,140 @@ static const struct dmi_system_id alienware_quirks[] __initconst = { > > }, > > { > > .callback = dmi_matched, > > - .ident = "Alienware m17 R5", > > + .ident = "Alienware X51 R1", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), > > - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m17 R5 AMD"), > > + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware X51"), > > }, > > - .driver_data = &quirk_x_series, > > + .driver_data = &quirk_x51_r1_r2, > > }, > > { > > .callback = dmi_matched, > > - .ident = "Alienware m18 R2", > > + .ident = "Alienware X51 R2", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), > > - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m18 R2"), > > + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware X51 R2"), > > }, > > - .driver_data = &quirk_x_series, > > + .driver_data = &quirk_x51_r1_r2, > > }, > > { > > .callback = dmi_matched, > > - .ident = "Alienware x15 R1", > > + .ident = "Alienware X51 R3", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), > > - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x15 R1"), > > + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware X51 R3"), > > }, > > - .driver_data = &quirk_x_series, > > + .driver_data = &quirk_x51_r3, > > }, > > { > > .callback = dmi_matched, > > - .ident = "Alienware x17 R2", > > + .ident = "Dell Inc. Inspiron 5675", > > + .matches = { > > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), > > + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5675"), > > + }, > > + .driver_data = &quirk_inspiron5675, > > + }, > > + {} > > +}; > > + > > +struct awcc_features { > > + bool gmode; > > +}; > > + > > +static struct awcc_features g_series_features = { > > + .gmode = true, > > +}; > > + > > +static struct awcc_features x_series_features = { > > + .gmode = false, > > +}; > > + > > +static const struct dmi_system_id awcc_dmi_table[] __initconst = { > > + { > > + .ident = "Alienware m17 R5", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), > > - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x17 R2"), > > + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m17 R5 AMD"), > > }, > > - .driver_data = &quirk_x_series, > > + .driver_data = &x_series_features, > > }, > > { > > - .callback = dmi_matched, > > - .ident = "Alienware X51 R1", > > + .ident = "Alienware m18 R2", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), > > - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware X51"), > > + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m18 R2"), > > }, > > - .driver_data = &quirk_x51_r1_r2, > > + .driver_data = &x_series_features, > > }, > > { > > - .callback = dmi_matched, > > - .ident = "Alienware X51 R2", > > + .ident = "Alienware x15 R1", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), > > - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware X51 R2"), > > + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x15 R1"), > > }, > > - .driver_data = &quirk_x51_r1_r2, > > + .driver_data = &x_series_features, > > }, > > { > > - .callback = dmi_matched, > > - .ident = "Alienware X51 R3", > > + .ident = "Alienware x17 R2", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), > > - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware X51 R3"), > > + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x17 R2"), > > }, > > - .driver_data = &quirk_x51_r3, > > + .driver_data = &x_series_features, > > }, > > { > > - .callback = dmi_matched, > > .ident = "Dell Inc. G15 5510", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), > > DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5510"), > > }, > > - .driver_data = &quirk_g_series, > > + .driver_data = &g_series_features, > > }, > > { > > - .callback = dmi_matched, > > .ident = "Dell Inc. G15 5511", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), > > DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5511"), > > }, > > - .driver_data = &quirk_g_series, > > + .driver_data = &g_series_features, > > }, > > { > > - .callback = dmi_matched, > > .ident = "Dell Inc. G15 5515", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), > > DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5515"), > > }, > > - .driver_data = &quirk_g_series, > > + .driver_data = &g_series_features, > > }, > > { > > - .callback = dmi_matched, > > .ident = "Dell Inc. G3 3500", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), > > DMI_MATCH(DMI_PRODUCT_NAME, "G3 3500"), > > }, > > - .driver_data = &quirk_g_series, > > + .driver_data = &g_series_features, > > }, > > { > > - .callback = dmi_matched, > > .ident = "Dell Inc. G3 3590", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), > > DMI_MATCH(DMI_PRODUCT_NAME, "G3 3590"), > > }, > > - .driver_data = &quirk_g_series, > > + .driver_data = &g_series_features, > > }, > > { > > - .callback = dmi_matched, > > .ident = "Dell Inc. G5 5500", > > .matches = { > > DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), > > DMI_MATCH(DMI_PRODUCT_NAME, "G5 5500"), > > }, > > - .driver_data = &quirk_g_series, > > - }, > > - { > > - .callback = dmi_matched, > > - .ident = "Dell Inc. Inspiron 5675", > > - .matches = { > > - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), > > - DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5675"), > > - }, > > - .driver_data = &quirk_inspiron5675, > > + .driver_data = &g_series_features, > > }, > > - {} > > }; > > > > +struct awcc_features *awcc; > > + > > struct color_platform { > > u8 blue; > > u8 green; > > @@ -1009,7 +982,7 @@ static int thermal_profile_set(struct platform_profile_handler *pprof, > > > > priv = container_of(pprof, struct awcc_priv, pp_handler); > > > > - if (quirks->gmode) { > > + if (awcc->gmode) { > > u32 gmode_status; > > int ret; > > > > @@ -1077,7 +1050,7 @@ static int create_thermal_profile(struct wmi_device *wdev) > > if (bitmap_empty(priv->pp_handler.choices, PLATFORM_PROFILE_LAST)) > > return -ENODEV; > > > > - if (quirks->gmode) { > > + if (awcc->gmode) { > > priv->supported_thermal_profiles[PLATFORM_PROFILE_PERFORMANCE] = > > WMAX_THERMAL_MODE_GMODE; > > > > @@ -1328,7 +1301,7 @@ static int wmax_wmi_probe(struct wmi_device *wdev, const void *context) > > }; > > int ret = 0; > > > > - if (quirks->thermal) > > + if (awcc) > > ret = alienware_awcc_setup(wdev); > > else > > ret = alienware_alienfx_setup(&pdata); > > @@ -1338,7 +1311,7 @@ static int wmax_wmi_probe(struct wmi_device *wdev, const void *context) > > > > static void wmax_wmi_remove(struct wmi_device *wdev) > > { > > - if (quirks->thermal) > > + if (awcc) > > alienware_awcc_exit(wdev); > > else > > alienware_alienfx_exit(wdev); > > @@ -1362,6 +1335,18 @@ static struct wmi_driver alienware_wmax_wmi_driver = { > > > > static int __init alienware_wmax_wmi_init(void) > > { > > + const struct dmi_system_id *id; > > + > > + id = dmi_first_match(awcc_dmi_table); > > + if (id) > > + awcc = id->driver_data; > > + > > + if (force_platform_profile) > > + awcc = &x_series_features; > > + > > + if (force_gmode) > > + awcc = &g_series_features; > > + > > return wmi_driver_register(&alienware_wmax_wmi_driver); > > } > > > > @@ -1378,16 +1363,6 @@ static int __init alienware_wmi_init(void) > > if (quirks == NULL) > > quirks = &quirk_unknown; > > > > - if (force_platform_profile) > > - quirks->thermal = true; > > - > > - if (force_gmode) { > > - if (quirks->thermal) > > - quirks->gmode = true; > > - else > > - pr_warn("force_gmode requires platform profile support\n"); > > - } > > - > > if (wmi_has_guid(WMAX_CONTROL_GUID)) { > > interface = WMAX; > > ret = alienware_wmax_wmi_init();