• Animesh Manna's avatar
    drm/i915/skl: Added a check for the hardware status of csr fw before loading. · 4b7ab5fc
    Animesh Manna authored
    Dmc will restore the csr program except DC9, cold boot,
    warm reset, PCI function level reset, and hibernate/suspend.
    
    intel_csr_load_program() function is used to load the firmware
    data from kernel memory to csr address space.
    
    All values of csr address space will be zero if it got reset and
    the first byte of csr program is always a non-zero if firmware
    is loaded successfuly. Based on hardware status will load the
    firmware.
    
    Without this condition check if we overwrite the firmware data the
    counters exposed for dc5/dc6 (help for debugging) will be nullified.
    
    Note: Above commit message seems to be confused and the real problem
    apparently going on is that for suspend-to-idle and system standby the
    firmware survives (it's like runtime pm), but it doesn't for
    suspend-to-mem and hibernate-to-disk. All the other talking about DC9
    and pci reset are irrelevant for the path touched here (only driver
    load and system resume functions) and might not be true statements.
    
    v1: Initial version.
    
    v2: Based on review comments from Daniel,
    - Added a check to know hardware status and load the firmware if not loaded.
    
    Cc: Daniel Vetter <daniel.vetter@intel.com>
    Cc: Damien Lespiau <damien.lespiau@intel.com>
    Cc: Imre Deak <imre.deak@intel.com>
    Cc: Sunil Kamath <sunil.kamath@intel.com>
    Signed-off-by: default avatarAnimesh Manna <animesh.manna@intel.com>
    Signed-off-by: default avatarVathsala Nagaraju <vathsala.nagaraju@intel.com>
    Reviewed-by: default avatarA.Sunil Kamath <sunil.kamath@intel.com>
    [danvet: Explain clearly in the code comment when we need to reload
    and when not and make it a FIXME. Also deconfuse the commit message
    with a note. Also: Make. it. compile.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    4b7ab5fc
intel_csr.c 13.2 KB