ASUS FX505DT wmi backlight/amdgpu backlight conflict

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,


I own an ASUS FX505DT (integrated vega amdgpu), and the backlight control seems
to be conflicting with the asus-nb-wmi driver.


Upon booting normally with a standard kernel 5.3.7 on Arch, the asus-nb-wmi
driver gets loaded properly. It does not create any backlight devices in
/sys/class/backlight. However, ACPI-video seems to fail to get created and I get
This in my systemd log:


systemd-backlight[771]: Failed to get backlight or LED device 'backlight:acpi_vi
deo0': No such device


This implies that acpi_video0 gets registered by systemd but fails early on
during the boot process. Regardless, backlight seems to work fine using the
hotkeys as the only device present in /sys/class/backlight is amdgpu_bl0.


As any sane person, I want to remove those nasty fail messages from my log. with
the solution being to set acpi_backlight=vendor in my boot flags, which stops
acpi_video0 from being registered and removes the log, however asus-nb-wmi kicks
in and registers it's own backlight device. There are two backlight devices
currently active amdgpu_bl0 and asus-nb-wmi and the latter does not control the
backlight but seems to take priority in the keybinds.


I looked throught the driver and implemented the following:


index b361c73..e0ca145 100644
--- a/drivers/platform/x86/asus-nb-wmi.c
+++ b/drivers/platform/x86/asus-nb-wmi.c
@@ -105,6 +105,11 @@ static struct quirk_entry quirk_asus_x550lb = {
 	.xusb2pr = 0x01D9,
 };
 
+static struct quirk_entry quirk_asus_fx505dt = {
+	.wmi_backlight_power = true,
+	.wmi_backlight_set_devstate = true,
+};
+
 static struct quirk_entry quirk_asus_forceals = {
 	.wmi_backlight_set_devstate = true,
 	.wmi_force_als_set = true,
@@ -411,6 +416,15 @@ static const struct dmi_system_id asus_quirks[] = {
 		},
 		.driver_data = &quirk_asus_forceals,
 	},
+	{
+		.callback = dmi_matched,
+		.ident = "ASUSTeK COMPUTER INC. FX505DT TESTING",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "FX505DT"),
+		},
+		.driver_data = &quirk_asus_fx505dt,
+	},
 	{},
 };


where wmi_backlight_power is supposed to prevent the creation (or use) of this
new backlight device. However this does not seem to be the case. So far the only
way the backlight works is with acpi_backlight not defined at all. If I set it
to anything, even video, it creates another worthless backlight device. I do
believe this is either a bug in asus-wmi and wmi_backlight_power doing not what
it's supposed to. Either that or I am mistaken as to how any of this works, and
would like help with implementing my device.



[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux