Message ID | 20250326113157.2341184-1-kevin@stravers.net (mailing list archive) |
---|---|
State | Changes Requested, archived |
Headers | show |
Series | [PATCHv5] platform/x86: asus-wmi: Add quirk for ASUS Vivobook S14 | expand |
Hi Kevin, On 26-Mar-25 12:31 PM, Kevin Robert Stravers wrote: > The ASUS Vivobook S14 will have wifi disabled on boot as well as > resumption from suspend if the asus-wmi driver invokes rfkill functions. > > This patch disables asus-wmi's rfkill usage to prevent the wifi card > from being software disabled. Your patch is still missing a Signed-off-by line in the commit-message. We can only accept patches with a Signed-off-by line in the commit-message like this: Signed-off-by: Your Real Name <email@your.domain> By adding this line you indicate that you are the author of the code and are submitting it under the existing license for the file which you are modifying (typically GPL-2.0) or that you have permission from the author to submit it under this license. See: https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin Please resend your patch with a valid Signed-off-by added. Unrelated to the S-o-b problem I wonder if you've tried setting asus_nb_wmi.wapf=4 on the kernel commandline instead of adding a new mechanism to disable rfkill support all together, see: /* * WAPF defines the behavior of the Fn+Fx wlan key * The significance of values is yet to be found, but * most of the time: * Bit | Bluetooth | WLAN * 0 | Hardware | Hardware * 1 | Hardware | Software * 4 | Software | Software */ static int wapf = -1; module_param(wapf, uint, 0444); MODULE_PARM_DESC(wapf, "WAPF value"); This would still require a quirk to do this automatically on your model, but it would avoid the need to add a new type of quirk. Regards, Hans > --- > drivers/platform/x86/asus-nb-wmi.c | 13 +++++++++++++ > drivers/platform/x86/asus-wmi.c | 5 +++++ > drivers/platform/x86/asus-wmi.h | 1 + > 3 files changed, 19 insertions(+) > > diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c > index 3f8b2a324efd..1e6fb9308560 100644 > --- a/drivers/platform/x86/asus-nb-wmi.c > +++ b/drivers/platform/x86/asus-nb-wmi.c > @@ -150,6 +150,10 @@ static struct quirk_entry quirk_asus_zenbook_duo_kbd = { > .ignore_key_wlan = true, > }; > > +static struct quirk_entry quirk_asus_vivobook_s14 = { > + .skip_rfkill = true, > +}; > + > static int dmi_matched(const struct dmi_system_id *dmi) > { > pr_info("Identified laptop model '%s'\n", dmi->ident); > @@ -530,6 +534,15 @@ static const struct dmi_system_id asus_quirks[] = { > }, > .driver_data = &quirk_asus_zenbook_duo_kbd, > }, > + { > + .callback = dmi_matched, > + .ident = "ASUS VivoBook S14", > + .matches = { > + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), > + DMI_MATCH(DMI_PRODUCT_NAME, "S5406SA"), > + }, > + .driver_data = &quirk_asus_vivobook_s14, > + }, > {}, > }; > > diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c > index 38ef778e8c19..42e58a28c3e2 100644 > --- a/drivers/platform/x86/asus-wmi.c > +++ b/drivers/platform/x86/asus-wmi.c > @@ -2138,6 +2138,8 @@ static int asus_new_rfkill(struct asus_wmi *asus, > > static void asus_wmi_rfkill_exit(struct asus_wmi *asus) > { > + if (asus->driver->quirks->skip_rfkill) > + return; > if (asus->driver->wlan_ctrl_by_user && ashs_present()) > return; > > @@ -2188,6 +2190,9 @@ static void asus_wmi_rfkill_exit(struct asus_wmi *asus) > > static int asus_wmi_rfkill_init(struct asus_wmi *asus) > { > + if (asus->driver->quirks->skip_rfkill) > + return 0; > + > int result = 0; > > mutex_init(&asus->hotplug_lock); > diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h > index 018dfde4025e..3692de24e326 100644 > --- a/drivers/platform/x86/asus-wmi.h > +++ b/drivers/platform/x86/asus-wmi.h > @@ -41,6 +41,7 @@ struct quirk_entry { > bool wmi_ignore_fan; > bool filter_i8042_e1_extended_codes; > bool ignore_key_wlan; > + bool skip_rfkill; > enum asus_wmi_tablet_switch_mode tablet_switch_mode; > int wapf; > /*
diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c index 3f8b2a324efd..1e6fb9308560 100644 --- a/drivers/platform/x86/asus-nb-wmi.c +++ b/drivers/platform/x86/asus-nb-wmi.c @@ -150,6 +150,10 @@ static struct quirk_entry quirk_asus_zenbook_duo_kbd = { .ignore_key_wlan = true, }; +static struct quirk_entry quirk_asus_vivobook_s14 = { + .skip_rfkill = true, +}; + static int dmi_matched(const struct dmi_system_id *dmi) { pr_info("Identified laptop model '%s'\n", dmi->ident); @@ -530,6 +534,15 @@ static const struct dmi_system_id asus_quirks[] = { }, .driver_data = &quirk_asus_zenbook_duo_kbd, }, + { + .callback = dmi_matched, + .ident = "ASUS VivoBook S14", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "S5406SA"), + }, + .driver_data = &quirk_asus_vivobook_s14, + }, {}, }; diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c index 38ef778e8c19..42e58a28c3e2 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -2138,6 +2138,8 @@ static int asus_new_rfkill(struct asus_wmi *asus, static void asus_wmi_rfkill_exit(struct asus_wmi *asus) { + if (asus->driver->quirks->skip_rfkill) + return; if (asus->driver->wlan_ctrl_by_user && ashs_present()) return; @@ -2188,6 +2190,9 @@ static void asus_wmi_rfkill_exit(struct asus_wmi *asus) static int asus_wmi_rfkill_init(struct asus_wmi *asus) { + if (asus->driver->quirks->skip_rfkill) + return 0; + int result = 0; mutex_init(&asus->hotplug_lock); diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h index 018dfde4025e..3692de24e326 100644 --- a/drivers/platform/x86/asus-wmi.h +++ b/drivers/platform/x86/asus-wmi.h @@ -41,6 +41,7 @@ struct quirk_entry { bool wmi_ignore_fan; bool filter_i8042_e1_extended_codes; bool ignore_key_wlan; + bool skip_rfkill; enum asus_wmi_tablet_switch_mode tablet_switch_mode; int wapf; /*