• Hans de Goede's avatar
    ACPI / LPSS: Add a device link from the GPU to the BYT I2C5 controller · 2d71ee0c
    Hans de Goede authored
    On some Bay Trail systems the GPU ACPI fwnode has power-resources which
    point to the PMIC, which is connected over the LPSS I2C5 controller.
    
    This one was quite nasty to debug, unlike on CHT where the same problem
    leads to errors like these:
    
         i2c_designware 808622C1:06: controller timed out
         ACPI Error: AE_ERROR, Returned by Handler for [UserDefinedRegion]
         ACPI Error: Method parse/execution failed \_SB.P18W._ON, AE_ERROR
         video LNXVIDEO:00: Failed to change power state to D0
    
    On BYT the read-modify-write done by drivers/acpi/pmic/intel_pmic_xpower.c
    on the AXP288 PMIC register to change the power-resource state *seems* to
    succeed.
    
    But in reality, because the I2C controller has not been resumed yet, the
    read silently fails and returns the wrong value, where as the write does
    succeed, writing back the wrong value for all the other power-resources
    in the same register, turning off a bunch of them. Which of course does
    not end well.
    
    This commit adds a RPM consumer link from the GPU (which has a LNXVIDEO
    HID) to the BYT LPSS I2C5 controller, so that the I2C controller gets
    resumed before the GPU is resumed and thus before we try to change the
    power-resource.
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Tested-by: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
    Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    2d71ee0c
acpi_lpss.c 31.3 KB