Commit 8c01b0ba authored by Hermes Wu's avatar Hermes Wu Committed by Dmitry Baryshkov
Browse files

drm/bridge: it6505: fix HDCP encryption when R0 ready



When starting HDCP authentication, HDCP encryption should be enabled
when R0'is checked.

Change encryption enables time at R0' ready.
The hardware HDCP engine trigger is changed and the repeater KSV fails
will restart HDCP.

Signed-off-by: default avatarHermes Wu <hermes.wu@ite.com.tw>
Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20241230-v7-upstream-v7-6-e0fdd4844703@ite.corp-partner.google.com
parent 0fd2ff47
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -2092,15 +2092,12 @@ static void it6505_hdcp_wait_ksv_list(struct work_struct *work)
	ksv_list_check = it6505_hdcp_part2_ksvlist_check(it6505);
	DRM_DEV_DEBUG_DRIVER(dev, "ksv list ready, ksv list check %s",
			     ksv_list_check ? "pass" : "fail");
	if (ksv_list_check) {
		it6505_set_bits(it6505, REG_HDCP_TRIGGER,
				HDCP_TRIGGER_KSV_DONE, HDCP_TRIGGER_KSV_DONE);

	if (ksv_list_check)
		return;
	}

timeout:
	it6505_set_bits(it6505, REG_HDCP_TRIGGER,
			HDCP_TRIGGER_KSV_DONE | HDCP_TRIGGER_KSV_FAIL,
			HDCP_TRIGGER_KSV_DONE | HDCP_TRIGGER_KSV_FAIL);
	it6505_start_hdcp(it6505);
}

static void it6505_hdcp_work(struct work_struct *work)
@@ -2473,7 +2470,11 @@ static void it6505_irq_hdcp_ksv_check(struct it6505 *it6505)
{
	struct device *dev = it6505->dev;

	DRM_DEV_DEBUG_DRIVER(dev, "HDCP event Interrupt");
	DRM_DEV_DEBUG_DRIVER(dev, "HDCP repeater R0 event Interrupt");
	/* 1B01 HDCP encription should start when R0 is ready*/
	it6505_set_bits(it6505, REG_HDCP_TRIGGER,
			HDCP_TRIGGER_KSV_DONE, HDCP_TRIGGER_KSV_DONE);

	schedule_work(&it6505->hdcp_wait_ksv_list);
}