drm/i915: Clear the repeater bit on HDCP disable
On HDCP disable, clear the repeater bit. This ensures if we connect a non-repeater sink after a repeater, the bit is in the state we expect. Fixes:ee5e5e7a5e
("drm/i915: Add HDCP framework + base implementation") Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Ramalingam C <ramalingam.c@intel.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Sean Paul <seanpaul@chromium.org> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: intel-gfx@lists.freedesktop.org Cc: <stable@vger.kernel.org> # v4.17+ Reviewed-by: Ramalingam C <ramalingam.c@intel.com> Signed-off-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Ramalingam C <ramalingam.c@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200818153910.27894-3-sean@poorly.run (cherry picked from commit2cc0c7b520
) Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
parent
9ab57658a6
commit
57537b4e1d
|
@ -795,6 +795,7 @@ static int _intel_hdcp_disable(struct intel_connector *connector)
|
|||
struct intel_hdcp *hdcp = &connector->hdcp;
|
||||
enum port port = dig_port->base.port;
|
||||
enum transcoder cpu_transcoder = hdcp->cpu_transcoder;
|
||||
u32 repeater_ctl;
|
||||
int ret;
|
||||
|
||||
drm_dbg_kms(&dev_priv->drm, "[%s:%d] HDCP is being disabled...\n",
|
||||
|
@ -810,6 +811,11 @@ static int _intel_hdcp_disable(struct intel_connector *connector)
|
|||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
repeater_ctl = intel_hdcp_get_repeater_ctl(dev_priv, cpu_transcoder,
|
||||
port);
|
||||
intel_de_write(dev_priv, HDCP_REP_CTL,
|
||||
intel_de_read(dev_priv, HDCP_REP_CTL) & ~repeater_ctl);
|
||||
|
||||
ret = hdcp->shim->toggle_signalling(dig_port, false);
|
||||
if (ret) {
|
||||
drm_err(&dev_priv->drm, "Failed to disable HDCP signalling\n");
|
||||
|
|
Loading…
Reference in New Issue