Hi, On 4/14/23 20:02, Daniel Bertalan wrote: > On the X380 Yoga, the `ECRD` and `ECWR` ACPI objects cannot be used for > accessing the Embedded Controller: instead of a method that reads from > the EC's memory, `ECRD` is the name of a location in high memory. This > meant that trying to call them would fail with the following message: > > ACPI: \_SB.PCI0.LPCB.EC.ECRD: 1 arguments were passed to a non-method > ACPI object (RegionField) > > With this commit, it is now possible to access the EC and read > temperature and fan speed information. Note that while writes to the > HFSP register do go through (as indicated by subsequent reads showing > the new value), the fan does not actually change its speed. > > Signed-off-by: Daniel Bertalan <dani@xxxxxxxxxxxxxxxxxx> Interestig, this looks like a pretty clean solution to me. Mark Pearson, do you have any remarks on this ? Regards, Hans > --- > drivers/platform/x86/thinkpad_acpi.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c > index 7191ff2625b1..6fe82f805ea8 100644 > --- a/drivers/platform/x86/thinkpad_acpi.c > +++ b/drivers/platform/x86/thinkpad_acpi.c > @@ -11699,6 +11699,7 @@ static int __init thinkpad_acpi_module_init(void) > { > const struct dmi_system_id *dmi_id; > int ret, i; > + acpi_object_type obj_type; > > tpacpi_lifecycle = TPACPI_LIFE_INIT; > > @@ -11724,6 +11725,21 @@ static int __init thinkpad_acpi_module_init(void) > TPACPI_ACPIHANDLE_INIT(ecrd); > TPACPI_ACPIHANDLE_INIT(ecwr); > > + /* > + * Quirk: in some models (e.g. X380 Yoga), an object named ECRD > + * exists, but it is a register, not a method. > + */ > + if (ecrd_handle) { > + acpi_get_type(ecrd_handle, &obj_type); > + if (obj_type != ACPI_TYPE_METHOD) > + ecrd_handle = NULL; > + } > + if (ecwr_handle) { > + acpi_get_type(ecwr_handle, &obj_type); > + if (obj_type != ACPI_TYPE_METHOD) > + ecwr_handle = NULL; > + } > + > tpacpi_wq = create_singlethread_workqueue(TPACPI_WORKQUEUE_NAME); > if (!tpacpi_wq) { > thinkpad_acpi_module_exit(); _______________________________________________ ibm-acpi-devel mailing list ibm-acpi-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/ibm-acpi-devel