• Paulo Zanoni's avatar
    drm/i915: enable the pipe/transcoder/planes later on HSW+ · c8af5274
    Paulo Zanoni authored
    For all platforms that run haswell_crtc_enable, our spec tells us to
    configure the transcoder clocks and do link training before it tells
    us to set pipeconf and the other pipe/transcoder/plane registers.
    
    Starting from Icelake, we get machine hangs if we try to touch the
    pipe/transcoder registers without having the clocks configured and not
    having some chicken bits set. So this patch changes
    haswell_crtc_enable() to issue the calls at the appropriate order
    mandated by the spec.
    
    While setting the appropriate chicken bits would also work here, it's
    better if we actually program the hardware the way it is intended to
    be programmed. And the chicken bit also has some theoretical downsides
    that may or may not affect us. Also, correctly programming the
    hardware does not prevent us from setting the chicken bits in a later
    patch in case we decide to.
    
    v2: Don't forget link training (Ville).
    
    Cc: Arthur J Runyan <arthur.j.runyan@intel.com>
    Cc: James Ausmus <james.ausmus@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Reviewed-by: default avatarManasi Navare <manasi.d.navare@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180502215851.30736-1-paulo.r.zanoni@intel.com
    c8af5274
intel_display.c 448 KB