On Wed, 20 Mar 2024, at 1:26 AM, Ilpo Järvinen wrote: > On Sun, 10 Mar 2024, Luke D. Jones wrote: > > > Adjust existing MUX support to select whichever MUX support is available > > so that ASUS Vivobook MUX can also be used if detected. > > This description is a bit on the short side. It wouldn't have hurt to > first state that Vivobooks come with a GPU MUX WMI that has a different > WMI device ID. I can infer that after reading the diff but the description > should not require reading the patch. Would you prefer I changed the commit message? > > The code change itself looks fine, > > Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx> > > -- > i. > > > > > Signed-off-by: Luke D. Jones <luke@xxxxxxxxxx> > > --- > > drivers/platform/x86/asus-wmi.c | 18 +++++++++++++----- > > include/linux/platform_data/x86/asus-wmi.h | 1 + > > 2 files changed, 14 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c > > index 94cc589607b3..2cf695289655 100644 > > --- a/drivers/platform/x86/asus-wmi.c > > +++ b/drivers/platform/x86/asus-wmi.c > > @@ -268,6 +268,7 @@ struct asus_wmi { > > bool egpu_connect_available; > > bool dgpu_disable_available; > > bool gpu_mux_mode_available; > > + u32 gpu_mux_dev; > > > > /* Tunables provided by ASUS for gaming laptops */ > > bool ppt_pl2_sppt_available; > > @@ -682,7 +683,7 @@ static ssize_t dgpu_disable_store(struct device *dev, > > return -EINVAL; > > > > if (asus->gpu_mux_mode_available) { > > - result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_GPU_MUX); > > + result = asus_wmi_get_devstate_simple(asus, asus->gpu_mux_dev); > > if (result < 0) > > /* An error here may signal greater failure of GPU handling */ > > return result; > > @@ -748,7 +749,7 @@ static ssize_t egpu_enable_store(struct device *dev, > > } > > > > if (asus->gpu_mux_mode_available) { > > - result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_GPU_MUX); > > + result = asus_wmi_get_devstate_simple(asus, asus->gpu_mux_dev); > > if (result < 0) { > > /* An error here may signal greater failure of GPU handling */ > > pr_warn("Failed to get gpu mux status: %d\n", result); > > @@ -801,7 +802,7 @@ static ssize_t gpu_mux_mode_show(struct device *dev, > > struct asus_wmi *asus = dev_get_drvdata(dev); > > int result; > > > > - result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_GPU_MUX); > > + result = asus_wmi_get_devstate_simple(asus, asus->gpu_mux_dev); > > if (result < 0) > > return result; > > > > @@ -847,7 +848,7 @@ static ssize_t gpu_mux_mode_store(struct device *dev, > > } > > } > > > > - err = asus_wmi_set_devstate(ASUS_WMI_DEVID_GPU_MUX, optimus, &result); > > + err = asus_wmi_set_devstate(asus->gpu_mux_dev, optimus, &result); > > if (err) { > > dev_err(dev, "Failed to set GPU MUX mode: %d\n", err); > > return err; > > @@ -4507,7 +4508,6 @@ static int asus_wmi_add(struct platform_device *pdev) > > asus->egpu_enable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU); > > asus->egpu_connect_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU_CONNECTED); > > asus->dgpu_disable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_DGPU); > > - asus->gpu_mux_mode_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_MUX); > > asus->kbd_rgb_mode_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_MODE); > > asus->kbd_rgb_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_STATE); > > asus->ppt_pl2_sppt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PPT_PL2_SPPT); > > @@ -4529,6 +4529,14 @@ static int asus_wmi_add(struct platform_device *pdev) > > asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE2; > > } > > > > + if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_MUX)) { > > + asus->gpu_mux_mode_available = true; > > + asus->gpu_mux_dev = ASUS_WMI_DEVID_GPU_MUX; > > + } else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_MUX_VIVO)) { > > + asus->gpu_mux_mode_available = true; > > + asus->gpu_mux_dev = ASUS_WMI_DEVID_GPU_MUX_VIVO; > > + } > > + > > err = fan_boost_mode_check_present(asus); > > if (err) > > goto fail_fan_boost_mode; > > diff --git a/include/linux/platform_data/x86/asus-wmi.h b/include/linux/platform_data/x86/asus-wmi.h > > index 9cadce10ad9a..b48b024dd844 100644 > > --- a/include/linux/platform_data/x86/asus-wmi.h > > +++ b/include/linux/platform_data/x86/asus-wmi.h > > @@ -128,6 +128,7 @@ > > > > /* gpu mux switch, 0 = dGPU, 1 = Optimus */ > > #define ASUS_WMI_DEVID_GPU_MUX 0x00090016 > > +#define ASUS_WMI_DEVID_GPU_MUX_VIVO 0x00090026 > > > > /* TUF laptop RGB modes/colours */ > > #define ASUS_WMI_DEVID_TUF_RGB_MODE 0x00100056 > >