• P
    drm/i915: add PCH_NONE to enum intel_pch · f0350830
    Paulo Zanoni 提交于
    And rely on the fact that it's 0 to assume that machines without a PCH
    will have PCH_NONE as dev_priv->pch_type.
    
    Just today I finally realized that HAS_PCH_IBX is true for machines
    without a PCH. IMHO this is totally counter-intuitive and I don't
    think it's a good idea to assume that we're going to check for
    HAS_PCH_IBX only after we check for HAS_PCH_SPLIT.
    
    I believe that in the future we'll have more PCH types and checks
    like:
    
        if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev))
    
    will become more and more common. There's a good chance that we may
    break non-PCH machines by adding these checks in code that runs on all
    machines. I also believe that the HAS_PCH_SPLIT check will become less
    common as we add more and more different PCH types. We'll probably
    start replacing checks like:
    
        if (HAS_PCH_SPLIT(dev))
            foo();
        else
            bar();
    
    with:
    
        if (HAS_PCH_NEW(dev))
            baz();
        else if (HAS_PCH_OLD(dev) || HAS_PCH_IBX(dev))
            foo();
        else
            bar();
    
    and this may break gen 2/3/4.
    
    As far as we have investigated, this patch will affect the behavior of
    intel_hdmi_dpms and intel_dp_link_down on gen 4. In both functions the
    code inside the HAS_PCH_IBX check is for IBX-specific workarounds, so
    we should be safe. If we start bisecting gen 2/3/4 bugs to this commit
    we should consider replacing the HAS_PCH_IBX checks with something
    else.
    
    V2: Improve commit message, list possible side effects and solution.
    Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
    Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
    f0350830
i915_drv.h 48.0 KB