diff --git a/README.md b/README.md index 4aa73ff1..fb921a90 100644 --- a/README.md +++ b/README.md @@ -927,6 +927,8 @@ A graphical GNOME applet uses `power-profiles-daemon` to change the power mode u For KDE, there is the graphical tool `powerdevil`, which also uses `power-profiles-daemon` internally. +If KDE only shows `balanced` and `performance` in `/sys/firmware/acpi/platform_profile_choices` but the Legion device (for example `/sys/devices/pci0000:00/0000:00:1f.0/PNP0C09:00/platform-profile/platform-profile-1/choices`) includes `quiet`, check whether `lenovo_wmi_gamezone` is also loaded. If both providers are active, the global profile choices are the intersection of both providers and quiet mode might disappear. In that case, unload or blacklist `lenovo_wmi_gamezone` and keep `legion_laptop` as the single provider for power mode. + ### It almost works, but (some) temperature sensor/changing point in fan control or (some) fan speed is not working. What should I do? First, try to [reset the embedded controller](#how-to-do-a-bios-upgrade-or-reset-the-embedded-controller-to-fix-a-problem) OR do a BIOS update/downgrade to reset everything. diff --git a/kernel_module/legion-laptop.c b/kernel_module/legion-laptop.c index dff8ac2b..b47e0f6d 100644 --- a/kernel_module/legion-laptop.c +++ b/kernel_module/legion-laptop.c @@ -686,6 +686,25 @@ static const struct model_config model_nscn = { .ramio_size = 0x600 }; +static const struct model_config model_qncn = { + .registers = &ec_register_offsets_v0, + .check_embedded_controller_id = true, + .embedded_controller_id = 0x5508, + .memoryio_physical_ec_start = 0xC400, + .memoryio_size = 0x300, + .has_minifancurve = false, + .has_custom_powermode = true, + .access_method_powermode = ACCESS_METHOD_WMI, + .access_method_keyboard = ACCESS_METHOD_WMI, + .access_method_fanspeed = ACCESS_METHOD_WMI3, + .access_method_temperature = ACCESS_METHOD_WMI3, + .access_method_fancurve = ACCESS_METHOD_NO_ACCESS, + .access_method_fanfullspeed = ACCESS_METHOD_WMI, + .acpi_check_dev = false, + .ramio_physical_start = 0xFE00D400, + .ramio_size = 0x600 +}; + static const struct model_config model_lpcn = { .registers = &ec_register_offsets_v0, .check_embedded_controller_id = true, @@ -1402,6 +1421,15 @@ static const struct dmi_system_id optimistic_allowlist[] = { }, .driver_data = (void *)&model_nzcn }, + { + // e.g. Legion 5 15IRX10 (83LY) + .ident = "QNCN", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_BIOS_VERSION, "QNCN"), + }, + .driver_data = (void *)&model_qncn + }, { // e.g. Legion Pro 5 16IRX9 (83DF) .ident = "N0CN",