]> git.ipfire.org Git - people/arne_f/kernel.git/commit
ACPI / LPSS: Exclude I2C busses shared with PUNIT from pmc_atom_d3_mask
authorHans de Goede <hdegoede@redhat.com>
Sat, 8 Sep 2018 18:08:13 +0000 (20:08 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 17 Sep 2018 09:37:55 +0000 (11:37 +0200)
commit86b62e5cd8965d3056f9e9ccdec51631c37add81
tree1644f2fdc837f68c1014b3b8fde5f02f69c782ab
parent240714061c58e6b1abfb3322398a7634151c06cb
ACPI / LPSS: Exclude I2C busses shared with PUNIT from pmc_atom_d3_mask

lpss_iosf_enter_d3_state() checks if all hw-blocks using the DMA
controllers are in d3 before powering down the DMA controllers.

But on devices, where the I2C bus connected to the PMIC is shared by
the PUNIT, the controller for that bus will never reach d3 since it has
an effectively empty _PS3 method. Instead it appears to automatically
power-down during S0i3 and we never see it as being in d3.

This causes the DMA controllers to never be powered-down on these devices,
causing them to never reach S0i3. This commit uses the ACPI _SEM method
to detect if an I2C bus is shared with the PUNIT and if it is, it removes
it from the mask of devices which lpss_iosf_enter_d3_state() checks for.

This fixes these devices never reaching any S0ix states.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpi_lpss.c