• Paulo Zanoni's avatar
    drm/i915: send PCI_D3hot adapter opregion message on BDW RPM suspend · c8a0bd42
    Paulo Zanoni authored
    On BDW we're seeing a problem that after we runtime resume, the
    outputs connected to DDI C are not detected: they don't appear in the
    SDEISR register and GMBUS transactions don't work. They stop working
    at the moment we call intel_opregion_notify_adapter() during runtime
    suspend, but they don't go back to work when we call the same function
    during runtime resume. They only work after we do a modeset and call
    intel_opregion_notify_encoder(), but this point is already too late.
    
    While debugging, I tried to pass PCI_D3hot which is the value that
    matches the spec, and it seems to have solved the problem. I couldn't
    find any explanation of why this solves the problem, but there's also
    no documented explanation - besides our code and git log - of why
    Haswell should use PCI_D1, so keep this for now in order to keep BDW
    runtime PM working.
    
    Also add a comment to point the fact that there's no spec documenting
    all the weirdness involved here.
    
    Cc: kristen.c.accardi@intel.com
    Testcase: igt/pm_rpm/drm-resources-equal
    Testcase: igt/pm_rpm/i2c
    Signed-off-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Reviewed-by: default avatarDamien Lespiau <damien.lespiau@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    c8a0bd42
i915_drv.c 46.5 KB