• Hans de Goede's avatar
    ACPI / LPSS: Exclude I2C busses shared with PUNIT from pmc_atom_d3_mask · 86b62e5c
    Hans de Goede authored
    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: default avatarHans de Goede <hdegoede@redhat.com>
    Acked-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    86b62e5c
acpi_lpss.c 31.1 KB