Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
28 changes: 28 additions & 0 deletions kernel_module/legion-laptop.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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",
Expand Down