On Wed, 2024-10-23 at 10:15 +0200, Luke Jones wrote: > On Sun, 20 Oct 2024, at 9:05 PM, Armin Wolf wrote: > > Am 20.10.24 um 08:50 schrieb Srinivas Pandruvada: > > > [...] Hi Luke, > > > + */ > > > + adev = acpi_dev_get_first_match_dev("PNP0C14", "ATK", - > > > 1); > > > > Is there really no way of changing the AIPT mode through the WMI > > interface? > > I would prefer using the WMI interface if available, since the > > firmware might > > assume that FANL is only called through the WMI interface. > > > > Do you have a acpidump from a affected device? > > > > Thanks, > > Armin Wolf > > > > > + if (adev) { > > > + acpi_handle handle = acpi_device_handle(adev); > > > + > > > + acpi_dev_put(adev); > > > + > > > + if (!acpi_has_method(handle, "FANL")) > > > + return 0; > > Quite a few laptops have this method available, but may not actually > do anything. Such as the following: > > FX517ZM-dsdt.dsl > 92885: Method (FANL, 1, Serialized) > 92886- { > 92887- Return (One) > 92888- } Correct. On this laptop my changes will hurt. So we must use WMI. > > > While this one does (zenbook duo): > > UX8402.dsl > 88837: Method (FANL, 1, Serialized) > 88838- { > 88839- ODV0 = Arg0 This will trigger to load a new thermal and power table based on the condition set. > 88840- If ((^^PC00.PEG1.PXP._STA == One)) > -- > 89041: Return (FANL (IIA0)) > 89042- } > 89043- > 89044- If ((Local0 == 0x4647574D)) > -- > 89604: FANL (IIA1) > 89605- Return (One) > 89606- } > 89607- > > I've discovered the majority of WMI methods, you can see them here: > https://gitlab.com/asus-linux/reverse-engineering/-/blob/master/WMI_SPEC.md?ref_type=heads > > There is a "whisper mode" WMI method, but I've not done much around > it. > > I also have a large collection of DSL if that is helpful > https://gitlab.com/asus-linux/reverse-engineering/-/tree/master/dsl-collection?ref_type=heads > > It seems that because I have access only to the ROG dlls at this time > I may have missed the WMI method: 0x00110019, this is likely what you > need as it gets FANF, and sets FANL > > ❯ rg 0x00110019 -B3 -A3 UX8402.dsl > 89281- Return (0x00010000) > 89282- } > 89283- > 89284: If ((IIA0 == 0x00110019)) > 89285- { > 89286- Local0 = FANF /* \_SB_.FANF */ > 89287- Local1 = 0x00070000 > -- > 89599- Return (One) > 89600- } > 89601- > 89602: If ((IIA0 == 0x00110019)) > 89603- { > 89604- FANL (IIA1) > 89605- Return (One) > > Hopefully this is helpful, You have been very helpful. Thanks for that. I can make work with WMI methods. Waiting for Asus to give feedback. Currently on vacation for two weeks. Hope things gets sorted outed out before I return. Thanks, Srinivas > > Regards, > Luke. > > P.S: If any info is discovered that I am lacking in my repo it would > be highly appreciated if a PR added it. > > > > + asus->acpi_mgmt_handle = handle; > > > + asus->asus_aipt_present = true; > > > + dev_info(dev, "ASUS Intelligent Performance > > > Technology (AIPT) is present\n"); > > > + /* > > > + * Set the mode corresponding to default Linux > > > platform power > > > + * profile Balanced > > > + */ > > > + asus_wmi_write_aipt_mode(asus, AIPT_STANDARD); > > > + } > > > + > > > return 0; > > > } > > >