]> 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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Nov 2019 17:00:03 +0000 (18:00 +0100)
commitad196348b6f4a9dad8ba499bc57d4ca9d35453c1
tree1f04059b9d64504ad8bdb4ad7bdfdded2a89a18c
parentbbce829fd3bc194a098aa7c64ca283c133221a0d
ACPI / LPSS: Exclude I2C busses shared with PUNIT from pmc_atom_d3_mask

[ Upstream commit 86b62e5cd8965d3056f9e9ccdec51631c37add81 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/acpi/acpi_lpss.c