• José Roberto de Souza's avatar
    drm/i915/tc/tgl: Implement TC cold sequences · 3c02934b
    José Roberto de Souza authored
    TC ports can enter in TCCOLD to save power and is required to request
    to PCODE to exit this state before use or read to TC registers.
    
    For TGL there is a new MBOX command to do that with a parameter to ask
    PCODE to exit and block TCCOLD entry or unblock TCCOLD entry.
    
    So adding a new power domain to reuse the refcount and only allow
    TC cold when all TC ports are not in use.
    
    v2:
    - fixed missing case in intel_display_power_domain_str()
    - moved tgl_tc_cold_request to intel_display_power.c
    - renamed TGL_TC_COLD_OFF to TGL_TC_COLD_OFF_POWER_DOMAINS
    - added all TC and TBT aux power domains to
    TGL_TC_COLD_OFF_POWER_DOMAINS
    
    v3:
    - added one msec sleep when PCODE returns -EAGAIN
    - added timeout of 5msec to not loop forever if
    sandybridge_pcode_write_timeout() keeps returning -EAGAIN
    
    v4:
    - Made failure to block or unblock TC cold a error
    - removed 5msec timeout, instead giving PCODE 1msec by up 3 times to
    recover from the internal error
    
    v5:
    - only sleeping 1msec when ret is -EAGAIN
    
    BSpec: 49294
    Cc: Imre Deak <imre.deak@intel.com>
    Cc: Cooper Chiou <cooper.chiou@intel.com>
    Cc: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Reviewed-by: default avatarImre Deak <imre.deak@intel.com>
    Signed-off-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200414194956.164323-6-jose.souza@intel.com
    3c02934b
i915_reg.h 486 KB