From nobody Wed Mar 12 07:45:07 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8FF881A3A8D for ; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555861; cv=none; b=LFhMrVuJLWbHdek8bWQt9g6kZDVIk/5QqE6W4jr/jorbO4DYM/TIQQm2VAKZaGnrDD6McBMMAr4s3qUAOv5TYiPiKk7GH0jrjjI8AJt0tDX5GxbhWNUS/fZVwXOjkQsdcpktfg8mA7mQApuZtnujT6QIctjewPY8GfHucSZHKZg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555861; c=relaxed/simple; bh=H/QjnbdWcGZr/3yVhc6hw87LffyFcEIL677anYJofeY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KoM/bTyX/b99AfcCZbR2MMCOL37m4KI1S/IhnhSFfunQCG6fkYVt/j3CMiemAQKhmjyYKBF/mE+Knm2Bw5ndaCPmJKNPUz887P56XqRNIgsam5GpbEKEKK+sbnej/JC88HQ9VnZ+l1XtTCl9UrGEASH3PWvYnPyeEDrQOaQbJw8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jtgnNUQy; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jtgnNUQy" Received: by smtp.kernel.org (Postfix) with ESMTPS id 296B8C4CED4; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1735555861; bh=H/QjnbdWcGZr/3yVhc6hw87LffyFcEIL677anYJofeY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=jtgnNUQyXnU+UNE6kO2sq95JvWAhBm/AEnOxBOSprxRcOSSWj7ikOwXNnCpVf+M6L maqfFDk6idEh+fleSEqC9Myqf888Mi7uHcYdoBdnexFWfyXFazmWL6bl5RkPNvX8Fx 7L763/46dGfAn0sLzUdJWD53FwMW+7fZdsDXiql03JGXUi+3XMt17M697sHvKDmOs9 aEvANqeqJGigNPdVxapRMrrDQqNt7ZoBicncYBvwfyvR1fM68FoiEq33Rz+JntloYf +Niz1WNcyFBw0rj4KN07dYXTE/KEpBLJ3a57T0i6U0dzu8x/FWdBTDrhYV52DNvHMc ugvGDQ1uej07Q== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 13C1DE77194; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) From: Hermes Wu via B4 Relay Date: Mon, 30 Dec 2024 18:51:19 +0800 Subject: [PATCH RESEND v7 01/10] drm/bridge: it6505: Change definition of AUX_FIFO_MAX_SIZE Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241230-v7-upstream-v7-1-e0fdd4844703@ite.corp-partner.google.com> References: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> In-Reply-To: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , AngeloGioacchino Del Regno , Hermes Wu , Allen Chen Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Pin-yen Lin , Kenneth Hung , Pet Weng , Hermes Wu , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1735555881; l=903; i=Hermes.wu@ite.corp-partner.google.com; s=20241230; h=from:subject:message-id; bh=Tyri1iviyPfgpFppBgVRv/Ms7xTN8BMh3eiXrgG9mds=; b=qoumaAU7IiDuXNg3a7EdY6cC/fkU2MGCqXOXdtqSzpder6OTi5vz5vhkiSHVgMK5JbhetHxi7 rGqBGQydCltCW6wRchX8UIwZ9d14kl+GlENn6CPRcQ8iKAswL0FqcdM X-Developer-Key: i=Hermes.wu@ite.corp-partner.google.com; a=ed25519; pk=qho5Dawp2WWj9CGyjtJ6/Y10xH8odjRdS6SXDaDAerU= X-Endpoint-Received: by B4 Relay for Hermes.wu@ite.corp-partner.google.com/20241230 with auth_id=307 X-Original-From: Hermes Wu Reply-To: Hermes.wu@ite.corp-partner.google.com From: Hermes Wu The hardware AUX FIFO is 16 bytes Change definition of AUX_FIFO_MAX_SIZE to 16 Fixes: b5c84a9edcd4 ("drm/bridge: add it6505 driver") Reviewed-by: Dmitry Baryshkov Signed-off-by: Hermes Wu Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/bridge/ite-it6505.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 7ff17aa14b01e4d9f626424e065131ae2b195c62..3272ca6951f2585f9592834869d= e23ac50ce41a4 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -300,7 +300,7 @@ #define MAX_CR_LEVEL 0x03 #define MAX_EQ_LEVEL 0x03 #define AUX_WAIT_TIMEOUT_MS 15 -#define AUX_FIFO_MAX_SIZE 32 +#define AUX_FIFO_MAX_SIZE 16 #define PIXEL_CLK_DELAY 1 #define PIXEL_CLK_INVERSE 0 #define ADJUST_PHASE_THRESHOLD 80000 --=20 2.34.1 From nobody Wed Mar 12 07:45:07 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 609754DA04 for ; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555861; cv=none; b=dJEVSNhqaEWDj3R5T/aGkVmnbZVZu6a9/PHvkx/5srP5OcBhiJA0VrE9HgnUBL+/l55ctJO6tHxXEa0TD4b7udnZ7SM1xu7VTkmbXHXalvhFvW5JtIgRQfNN27k4AcAAzLDPcLdk4PBuGu+Nj+Vh5p91mNmAj15AMh5ZmQPI/II= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555861; c=relaxed/simple; bh=SuDEzxxGQ/ta1asAIHNz3x/IkkoMDrKwg/H261/ZP48=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j6A8WhyRxgvudr2YiLkWdSWvEM8IYDf6OZWuMhq8V6nrSgCduViLBRsdhS1P4mZY+LnKP2Ef+RdYq3/8enQL/rHpqiC41McLKqh8x/qsGupBRvvKy2ctSD7hbrcJM9JMPYIixGSY8kWtI/m1+d42pb+HWd8koNe/cphl+WktIZg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UDBm/QUF; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UDBm/QUF" Received: by smtp.kernel.org (Postfix) with ESMTPS id 3A387C4CEDC; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1735555861; bh=SuDEzxxGQ/ta1asAIHNz3x/IkkoMDrKwg/H261/ZP48=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=UDBm/QUFIjxEi2jqR8C7cp9g+dB2e3jcCccjKyHletEsILSSl7paq4TtMN3NLCCUA TxtCYUot4K82rDGwJKWS46wfYSJUWaOywLvX0G47yq4fj4ldQoXhbCeUG1f5Cm5byT D5gdAOVaAdalZYCqm6OH010Cyw0gFMsSN6CfXQ8xS1jN4dLXMJgA2cjotVUntrOGrZ rUVen6PmLVUTNVEtL8A1h0bBHn1uNcbl9noF95MiZ89VNA/KjucXN6bLbZrN5RFB5s A7IhwszRxOasVyrEWwtsdpkn85rmNVvUz72RL7yuCVDshj2Vxy+fjnfNV1spS1a3s7 aUHC+GNRwj2rA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2871FE77196; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) From: Hermes Wu via B4 Relay Date: Mon, 30 Dec 2024 18:51:20 +0800 Subject: [PATCH RESEND v7 02/10] drm/bridge: it6505: improve AUX operation for edid read Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241230-v7-upstream-v7-2-e0fdd4844703@ite.corp-partner.google.com> References: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> In-Reply-To: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , AngeloGioacchino Del Regno , Hermes Wu , Allen Chen Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Pin-yen Lin , Kenneth Hung , Pet Weng , Hermes Wu , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1735555881; l=1532; i=Hermes.wu@ite.corp-partner.google.com; s=20241230; h=from:subject:message-id; bh=32P1BrTFeT18E3yzyJHILz0Ri1zpfzlb6udBE3GEmSs=; b=2dZOs9x4YkiBzmjSloW0X5EYKRnmDxVT6KNWOTd0csrkFpovHUYqftrT8v6xm/Se7wUElWlMn edmRGtwPVIuDmZdQSf2TK7/QUA6xmSHVmqpZSchvaSYEzMU//pmU+Nt X-Developer-Key: i=Hermes.wu@ite.corp-partner.google.com; a=ed25519; pk=qho5Dawp2WWj9CGyjtJ6/Y10xH8odjRdS6SXDaDAerU= X-Endpoint-Received: by B4 Relay for Hermes.wu@ite.corp-partner.google.com/20241230 with auth_id=307 X-Original-From: Hermes Wu Reply-To: Hermes.wu@ite.corp-partner.google.com From: Hermes Wu The original AUX operation using data registers is limited to 4 bytes. The AUX operation command CMD_AUX_I2C_EDID_READ uses AUX FIFO and is capable of reading 16 bytes. This improves the speed of EDID read. Reviewed-by: Dmitry Baryshkov Signed-off-by: Hermes Wu Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/bridge/ite-it6505.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 3272ca6951f2585f9592834869de23ac50ce41a4..9747d7ccf435d536da55c6a3ff7= 9e504b7c724f0 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -1076,10 +1076,13 @@ static ssize_t it6505_aux_do_transfer(struct it6505= *it6505, size_t size, enum aux_cmd_reply *reply) { int i, ret_size, ret =3D 0, request_size; + int fifo_max_size =3D (cmd =3D=3D CMD_AUX_I2C_EDID_READ) ? AUX_FIFO_MAX_S= IZE : 4; =20 mutex_lock(&it6505->aux_lock); - for (i =3D 0; i < size; i +=3D 4) { - request_size =3D min((int)size - i, 4); + i =3D 0; + do { + request_size =3D min_t(int, (int)size - i, fifo_max_size); + ret_size =3D it6505_aux_operation(it6505, cmd, address + i, buffer + i, request_size, reply); @@ -1088,8 +1091,9 @@ static ssize_t it6505_aux_do_transfer(struct it6505 *= it6505, goto aux_op_err; } =20 + i +=3D request_size; ret +=3D ret_size; - } + } while (i < size); =20 aux_op_err: mutex_unlock(&it6505->aux_lock); --=20 2.34.1 From nobody Wed Mar 12 07:45:07 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB00C1A726F for ; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555861; cv=none; b=ITDwxWKJmLHVM34zk5se6UIT9sJUWKQAA+zecnCSUcIkcUl5wzG9pM4nLGwuK1sHaNL3bdvYOLAO8J1l3PeEJCV1oIk0uflZveMu23gWJOpL9p8zqgoJN/w9/F5LZEeQQ/FhlPJhoGO3dttNR3XmG687gVev5Fn2n5Q2xgbv4NU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555861; c=relaxed/simple; bh=jebMeVHnxHKhzdHUo8lgZOGGKX3f7GBIrJuL6SI9xIc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Gaj3pNaXSNRKkSH7qpGfGeBEVsbg4yX/gfoftscAcjmjCEAhmC228r9RSYpY1Hdp99c2qMNR4cDYFrJuvM8lWi4wmUChUlklRs6bZQuEq+NcOIK5u0FrB4QcQyf2CHrIo9xlMBQVN8d7sGrXgLwdgLOeYSA2muTIbtGUMYQmlC4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YCeFbRR7; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="YCeFbRR7" Received: by smtp.kernel.org (Postfix) with ESMTPS id 4D6BFC4CEDE; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1735555861; bh=jebMeVHnxHKhzdHUo8lgZOGGKX3f7GBIrJuL6SI9xIc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=YCeFbRR7cdT2byN2jW3e7cYbS5WTzfU6QR7ZoqT0146+JRUWYKOc45ga1/hVKcWoX 0M1j0tWbW8yb4HK9SNJ/ZcecRtCtqt0mD5DkFKP1SbRu4WrnoGPeD3nu/ei2mM1DRF 6IQACvIYv/2HpjgHQUGh7bOEbBFipFabVQ8+r1Z6D7A5Gr8XyytTp1NG3hdmRcrfJ7 ePxRPmQ0NQkr9QjCzKs0sledBbklmFqpSkO3unLTWKPftuXABVoXEqUtRPdditjWfP SlTlYDtTCa9XBf4n9omNOik5GbKHWAe91+XCS/P4bhJx8vwSIg4OR3jSST9ZkUGKTC hMrMFDm3usIJQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3CCB5E77188; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) From: Hermes Wu via B4 Relay Date: Mon, 30 Dec 2024 18:51:21 +0800 Subject: [PATCH RESEND v7 03/10] drm/bridge: it6505: add AUX operation for HDCP KSV list read Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241230-v7-upstream-v7-3-e0fdd4844703@ite.corp-partner.google.com> References: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> In-Reply-To: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , AngeloGioacchino Del Regno , Hermes Wu , Allen Chen Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Pin-yen Lin , Kenneth Hung , Pet Weng , Hermes Wu , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1735555881; l=3615; i=Hermes.wu@ite.corp-partner.google.com; s=20241230; h=from:subject:message-id; bh=Qm0Yg8xBTZewdPuvHcs5ADcGIPqmFgB/FG4kqG8Nqvw=; b=TRAcBPwJiYJv2M8foUEu81QiMwurKxZ97X16hUmroqeIao/3Kdzh2Dlb4E0+GYMgi12kCtnEu o25Iv+daOBNC02a7J14pHk+rp7DR54cIRc+Tcb0+G2JGevJrMhF8ZXs X-Developer-Key: i=Hermes.wu@ite.corp-partner.google.com; a=ed25519; pk=qho5Dawp2WWj9CGyjtJ6/Y10xH8odjRdS6SXDaDAerU= X-Endpoint-Received: by B4 Relay for Hermes.wu@ite.corp-partner.google.com/20241230 with auth_id=307 X-Original-From: Hermes Wu Reply-To: Hermes.wu@ite.corp-partner.google.com From: Hermes Wu HDCP KSV list readback can choose to use AUX FIFO or general data register. For some DisplayPort devices, the KSV list must be read in 5 byte boundaries. The original AUX read command does not support these devices. The AUX command operation control register "REG_AUX_CMD_REQ" uses b[3:0] as AUX operacion control, and b[7:4] are status bits and read only. To change KSV read operation uses "CMD_AUX_NATIVE_READ" from using the data registers to using AUX FIFO. The extended command "CMD_AUX_GET_KSV_LIST" is added as "CMD_AUX_NATIVE_READ" with the 0x10 flag which selects AUX FIFO mode. Reviewed-by: Dmitry Baryshkov Signed-off-by: Hermes Wu Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/bridge/ite-it6505.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 9747d7ccf435d536da55c6a3ff79e504b7c724f0..ba37974967767a17b7025595f68= 64f057174efb9 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -19,6 +19,7 @@ #include #include #include +#include =20 #include =20 @@ -126,6 +127,7 @@ #define REG_AUX_OUT_DATA0 0x27 =20 #define REG_AUX_CMD_REQ 0x2B +#define M_AUX_REQ_CMD 0x0F #define AUX_BUSY BIT(5) =20 #define REG_AUX_DATA_0_7 0x2C @@ -324,6 +326,9 @@ enum aux_cmd_type { CMD_AUX_NATIVE_READ =3D 0x0, CMD_AUX_NATIVE_WRITE =3D 0x5, CMD_AUX_I2C_EDID_READ =3D 0xB, + + /* KSV read with AUX FIFO extend from CMD_AUX_NATIVE_READ*/ + CMD_AUX_GET_KSV_LIST =3D 0x10, }; =20 enum aux_cmd_reply { @@ -965,7 +970,8 @@ static ssize_t it6505_aux_operation(struct it6505 *it65= 05, it6505_set_bits(it6505, REG_AUX_CTRL, AUX_USER_MODE, AUX_USER_MODE); =20 aux_op_start: - if (cmd =3D=3D CMD_AUX_I2C_EDID_READ) { + /* HW AUX FIFO supports only EDID and DCPD KSV FIFO area */ + if (cmd =3D=3D CMD_AUX_I2C_EDID_READ || cmd =3D=3D CMD_AUX_GET_KSV_LIST) { /* AUX EDID FIFO has max length of AUX_FIFO_MAX_SIZE bytes. */ size =3D min_t(size_t, size, AUX_FIFO_MAX_SIZE); /* Enable AUX FIFO read back and clear FIFO */ @@ -996,7 +1002,7 @@ static ssize_t it6505_aux_operation(struct it6505 *it6= 505, size); =20 /* Aux Fire */ - it6505_write(it6505, REG_AUX_CMD_REQ, cmd); + it6505_write(it6505, REG_AUX_CMD_REQ, FIELD_GET(M_AUX_REQ_CMD, cmd)); =20 ret =3D it6505_aux_wait(it6505); if (ret < 0) @@ -1030,7 +1036,7 @@ static ssize_t it6505_aux_operation(struct it6505 *it= 6505, goto aux_op_start; } =20 - if (cmd =3D=3D CMD_AUX_I2C_EDID_READ) { + if (cmd =3D=3D CMD_AUX_I2C_EDID_READ || cmd =3D=3D CMD_AUX_GET_KSV_LIST) { for (i =3D 0; i < size; i++) { ret =3D it6505_read(it6505, REG_AUX_DATA_FIFO); if (ret < 0) @@ -1055,7 +1061,7 @@ static ssize_t it6505_aux_operation(struct it6505 *it= 6505, ret =3D i; =20 aux_op_err: - if (cmd =3D=3D CMD_AUX_I2C_EDID_READ) { + if (cmd =3D=3D CMD_AUX_I2C_EDID_READ || cmd =3D=3D CMD_AUX_GET_KSV_LIST) { /* clear AUX FIFO */ it6505_set_bits(it6505, REG_AUX_CTRL, AUX_EN_FIFO_READ | CLR_EDID_FIFO, @@ -1076,7 +1082,8 @@ static ssize_t it6505_aux_do_transfer(struct it6505 *= it6505, size_t size, enum aux_cmd_reply *reply) { int i, ret_size, ret =3D 0, request_size; - int fifo_max_size =3D (cmd =3D=3D CMD_AUX_I2C_EDID_READ) ? AUX_FIFO_MAX_S= IZE : 4; + int fifo_max_size =3D (cmd =3D=3D CMD_AUX_I2C_EDID_READ || cmd =3D=3D CMD= _AUX_GET_KSV_LIST) ? + AUX_FIFO_MAX_SIZE : 4; =20 mutex_lock(&it6505->aux_lock); i =3D 0; --=20 2.34.1 From nobody Wed Mar 12 07:45:07 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BAF661A7262 for ; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555861; cv=none; b=V/a2fvTwPHP0w9ccm/xCEwg6yIo9b6dXxZzCpqdQ9GubK7XXKQMBHNUvdxo3IB4XCDExKW8sjwCPwI2rOQrV5s18ZIhsqX0Xytu7DmWjKtwjSkzcARFFZDV87Yhs7JKkLTzjG53tFPytZ6RI0Hfj/WrLGXwFYa5+TPYw41gXn0E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555861; c=relaxed/simple; bh=V5YudWXnJ7rHUTU5EwXOV89odpcktqY9hIsiJyNOono=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YXFDb/j17takZrAPY6nYkVDYGX1hdeZ6267qkvfJD4L83z2A+mTP8f/C0g3nJJIgyGX8tEkHSLBLrdd+KOWJuS5dy6uUlD6bWwwAQ3NxTYNer8D6rFfccwXimYLJODJT5wg/gboxSzeFK8Yiejt2obrszJfAZvGvpA3EVwlU0ow= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oABRBj2+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oABRBj2+" Received: by smtp.kernel.org (Postfix) with ESMTPS id 5B9EAC4CEE1; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1735555861; bh=V5YudWXnJ7rHUTU5EwXOV89odpcktqY9hIsiJyNOono=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=oABRBj2+mlPqceb6n/6JHYfEV25T0Cd9VmNcrxmca8pg+s1eCV+IGSjuS0HgD6pcb mcqgnCmoVP7V1WySCffyFSwjRwYweGHJDt6fUNEUxV3q9YILeicifGyj25OECaB74n /tSMal0AUi1Maic3ZlzipUeTwOrmxsnctghIZg9C514oPudzKR5vmzLZR6Usx+auNH pBvITxK+UDUHYK3GqOAGveiqr7swfytUQYmGODAvXLgpQ9DIlmJfOSoEtPiGQIK3o4 RiGbgTe8MD9sSZrpGm4765j5UDr+I+1xqBikhX2XdUyNAKPwpPrmn10vcm5J2zgrJC YXBpHU7MfVktA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4DD67E77194; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) From: Hermes Wu via B4 Relay Date: Mon, 30 Dec 2024 18:51:22 +0800 Subject: [PATCH RESEND v7 04/10] drm/bridge: it6505: Change definition MAX_HDCP_DOWN_STREAM_COUNT Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241230-v7-upstream-v7-4-e0fdd4844703@ite.corp-partner.google.com> References: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> In-Reply-To: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , AngeloGioacchino Del Regno , Hermes Wu , Allen Chen Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Pin-yen Lin , Kenneth Hung , Pet Weng , Hermes Wu , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1735555881; l=994; i=Hermes.wu@ite.corp-partner.google.com; s=20241230; h=from:subject:message-id; bh=LXCX7YKUcq6qewqH/z3sJdCcnXEOYr4Q2Lg8igxzYE4=; b=iu9tF4s9GdTvlscvV0wpNicV9Lc5XLzKy1ve+EznaQkAAqjkVGE2UIzvwZstAYmylPkaGyKR8 KOS1PcHuttaC7JPpTsTXaWVM3aYq5TzBocEWvfQ5HgK4as/1ltin4BK X-Developer-Key: i=Hermes.wu@ite.corp-partner.google.com; a=ed25519; pk=qho5Dawp2WWj9CGyjtJ6/Y10xH8odjRdS6SXDaDAerU= X-Endpoint-Received: by B4 Relay for Hermes.wu@ite.corp-partner.google.com/20241230 with auth_id=307 X-Original-From: Hermes Wu Reply-To: Hermes.wu@ite.corp-partner.google.com From: Hermes Wu A HDCP source device shall support max downstream to 127 devices. Change definition MAX_HDCP_DOWN_STREAM_COUNT to 127 KSVs shall save for DRM blocked devices check. This results in struct it6505 growth by ~0.5 KiB. Reviewed-by: Dmitry Baryshkov Signed-off-by: Hermes Wu Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/bridge/ite-it6505.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index ba37974967767a17b7025595f6864f057174efb9..9a90a36d0421422038b04ad00b2= cb2e326a9cab4 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -298,7 +298,7 @@ #define MAX_LANE_COUNT 4 #define MAX_LINK_RATE HBR #define AUTO_TRAIN_RETRY 3 -#define MAX_HDCP_DOWN_STREAM_COUNT 10 +#define MAX_HDCP_DOWN_STREAM_COUNT 127 #define MAX_CR_LEVEL 0x03 #define MAX_EQ_LEVEL 0x03 #define AUX_WAIT_TIMEOUT_MS 15 --=20 2.34.1 From nobody Wed Mar 12 07:45:07 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BAFBF1A7264 for ; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555861; cv=none; b=O+9pbQWW06zxufpjJHe+FwcpWGp7ZQukEzyk6M5RK4j2Bre2AVTXTfa3PigAGVa9AloZUoutPqybubPaO1uIDHG0lTVQ5ZKi580Y982ARUgfJtdpztaVMbuBVJRNndMbrtMhJ1lNN5ROz0qE+wwvS7ZRlQY4hNOQcE7n3hqgeAM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555861; c=relaxed/simple; bh=O5YKofAFuVF+x8OXZQSiNKkX3T3r8k4gh/EML2qF2tM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oxWME54XK3pzvlH/tLxqrQw2ZbmTjdsSLKMK8ON/06z0Wq+kcMbaKMpdta8QqsA2lgS5IDmYpbqizragG+qxB1STgQUqioY8b26jGVhmWPiUld+ZojP48hick5s/tyExRBNOGscJoxtOewzF4I+qWzbnLTcf2iJKyIyqDyW7+9Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Drtol7ya; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Drtol7ya" Received: by smtp.kernel.org (Postfix) with ESMTPS id 73F92C4CEE3; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1735555861; bh=O5YKofAFuVF+x8OXZQSiNKkX3T3r8k4gh/EML2qF2tM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Drtol7yaWUNirKwKz/4qJbc0BlDcqfEXdHKqnI8uexNT9VX92E+LKxR2554w4AZQ7 m2HUMzC8vok+JP+Us4ObhR6dqI0hxMzvE4jIZB4wTyMQFi59fBcfRM/FLcZTjYyRbn WEkUxl1LI1NC8XNbwy7rYDPXiGE8B/DhwKiaV3k12GNoeca0vqyUO5W5WOVtLXiD12 kpHVUURxs0OkEPn5+R/fu0Ntevl/8n2xUw2gBkBpKUUA/Q7XVCFOHOy2EuNaQWcl94 Kd65nfA05ZQf1cX4kAqoKZfEfa1zrC0SGR3w8mzp7GkeLNij2FyA1s1EtZMD4VgNxX AVmDaukNXjzUA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6AD2CE77188; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) From: Hermes Wu via B4 Relay Date: Mon, 30 Dec 2024 18:51:23 +0800 Subject: [PATCH RESEND v7 05/10] drm/bridge: it6505: fix HDCP Bstatus check Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241230-v7-upstream-v7-5-e0fdd4844703@ite.corp-partner.google.com> References: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> In-Reply-To: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , AngeloGioacchino Del Regno , Hermes Wu , Allen Chen Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Pin-yen Lin , Kenneth Hung , Pet Weng , Hermes Wu , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1735555881; l=1572; i=Hermes.wu@ite.corp-partner.google.com; s=20241230; h=from:subject:message-id; bh=rnu9ObSyBuaI0l/D8L5MOJqyYmO7JqMRz5DsnO06FUA=; b=bpIuIa3ffw40lUivVrVQOGwJfOl6bRbz9LKO/9WnOhoZR0BggQheerjjYivd3rgzDPZDQcprh TvhEtzOGUiSD4tLAsd6KWUg/Aep0phtI+AJQN9CG8eF1NqNr2eggIba X-Developer-Key: i=Hermes.wu@ite.corp-partner.google.com; a=ed25519; pk=qho5Dawp2WWj9CGyjtJ6/Y10xH8odjRdS6SXDaDAerU= X-Endpoint-Received: by B4 Relay for Hermes.wu@ite.corp-partner.google.com/20241230 with auth_id=307 X-Original-From: Hermes Wu Reply-To: Hermes.wu@ite.corp-partner.google.com From: Hermes Wu When HDCP is activated, a DisplayPort source receiving CP_IRQ from the sink shall check Bstatus from DPCD and process the corresponding value Reviewed-by: Dmitry Baryshkov Signed-off-by: Hermes Wu Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/bridge/ite-it6505.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 9a90a36d0421422038b04ad00b2cb2e326a9cab4..760eab0b868874f96ccd4d5ec3e= 2f2d4ffb1e41c 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -2323,14 +2323,20 @@ static int it6505_process_hpd_irq(struct it6505 *it= 6505) DRM_DEV_DEBUG_DRIVER(dev, "dp_irq_vector =3D 0x%02x", dp_irq_vector); =20 if (dp_irq_vector & DP_CP_IRQ) { - it6505_set_bits(it6505, REG_HDCP_TRIGGER, HDCP_TRIGGER_CPIRQ, - HDCP_TRIGGER_CPIRQ); - bstatus =3D it6505_dpcd_read(it6505, DP_AUX_HDCP_BSTATUS); if (bstatus < 0) return bstatus; =20 DRM_DEV_DEBUG_DRIVER(dev, "Bstatus =3D 0x%02x", bstatus); + + /*Check BSTATUS when recive CP_IRQ */ + if (bstatus & DP_BSTATUS_R0_PRIME_READY && + it6505->hdcp_status =3D=3D HDCP_AUTH_GOING) + it6505_set_bits(it6505, REG_HDCP_TRIGGER, HDCP_TRIGGER_CPIRQ, + HDCP_TRIGGER_CPIRQ); + else if (bstatus & (DP_BSTATUS_REAUTH_REQ | DP_BSTATUS_LINK_FAILURE) && + it6505->hdcp_status =3D=3D HDCP_AUTH_DONE) + it6505_start_hdcp(it6505); } =20 ret =3D drm_dp_dpcd_read_link_status(&it6505->aux, link_status); --=20 2.34.1 From nobody Wed Mar 12 07:45:07 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EB5FA1A76DA for ; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555862; cv=none; b=uvoTPtETIVJHjHBkwldVfbhM5W/9fkOTJ4/hhT71biEnXmkrjWw6k7D3/TEbOEDwgk/HJtdT1YwAifKaSOYSA4eDw1Ho49TCJl1lJIRhLj5T9wvr1tny/uGQKMm0HRQR1/Ycft8xFyXNJtZwiBz0NWvutIWp5Ow7x8U4B/ZiKRI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555862; c=relaxed/simple; bh=jR2JMfJCmR1wfBbhPP6zy7q7nwwmkUtFCoBy/b3loG4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ip1ArAuASnNSABtTGcSvXb7zBGPUzcdKl1cIuFnrVTD9KXteJSpAMOkp7D4yq2I3UU6krlBZ279+FXucj4GPJjyJ1gukWAVw45fvp4w2rnmB2o/ZidNtUAEoV7JBRH4H/EIF1YBopgBP6YkaksQJ4ndlEVdpQcZXfRHvE2sSO5w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hy9do3z7; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hy9do3z7" Received: by smtp.kernel.org (Postfix) with ESMTPS id 8F2B9C4AF0C; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1735555861; bh=jR2JMfJCmR1wfBbhPP6zy7q7nwwmkUtFCoBy/b3loG4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=hy9do3z7Bl8sVIOKc0w5bCs+/9m1aIMHq1zyj3KdmtyssiEmPeG1HOHNj3ZmMmSeq JrwxpNWnK7N+jFCkF8V+xnaZHyUzjDnWq5iGV9UVZoxHs+684TRocVCEa8yWKC1pT5 MvS0fZy57QCeuc8t+DCGlKOyt8ot6btX8ou8cOkKOliTRt/SPIaGZXwQfpMYQYmVlg ZdGmffJmzj01tBUoMqrqsEbOT8DMKMhkST7niNQzgPoNQLWFmnB9xAvu70T04sURUw ZARUo4YkllvkXmCJOusNYvz00FplGOQjkLtzaV7X2zABU4RvU5zTRbLYSDrOPor7Vm jXgF6UoI/C/gQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 84D6FE7718F; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) From: Hermes Wu via B4 Relay Date: Mon, 30 Dec 2024 18:51:24 +0800 Subject: [PATCH RESEND v7 06/10] drm/bridge: it6505: fix HDCP encryption when R0 ready Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241230-v7-upstream-v7-6-e0fdd4844703@ite.corp-partner.google.com> References: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> In-Reply-To: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , AngeloGioacchino Del Regno , Hermes Wu , Allen Chen Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Pin-yen Lin , Kenneth Hung , Pet Weng , Hermes Wu X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1735555881; l=1834; i=Hermes.wu@ite.corp-partner.google.com; s=20241230; h=from:subject:message-id; bh=sT+HSufURG0ocwd8z5VQGG+kfKlsP8Ww3M5fRH8xXGg=; b=sYRm799dFZ0Wq/1SIzT8o5vkH5LBGxD54eUkCDUWhE4HSGmdo/TTr5B5xamJD9I/nE5F9e6Nc o2DBMczhmQeALauy8AYezAJrKtfLmhaLv7omKusdLJFhQ4XVktVs6ZP X-Developer-Key: i=Hermes.wu@ite.corp-partner.google.com; a=ed25519; pk=qho5Dawp2WWj9CGyjtJ6/Y10xH8odjRdS6SXDaDAerU= X-Endpoint-Received: by B4 Relay for Hermes.wu@ite.corp-partner.google.com/20241230 with auth_id=307 X-Original-From: Hermes Wu Reply-To: Hermes.wu@ite.corp-partner.google.com From: Hermes Wu 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: Hermes Wu Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/bridge/ite-it6505.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 760eab0b868874f96ccd4d5ec3e2f2d4ffb1e41c..614fbb6295237708aa5b692de87= ab5548c499da5 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -2092,15 +2092,12 @@ static void it6505_hdcp_wait_ksv_list(struct work_s= truct *work) ksv_list_check =3D 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); } =20 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 =3D it6505->dev; =20 - 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); } =20 --=20 2.34.1 From nobody Wed Mar 12 07:45:07 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C34B1A7AFD for ; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555862; cv=none; b=UmHOdNIUEmqK5TTRqoljNGmC7cPJOOeBuG1g+qwLmrSDCxafdpzznorxr8bOZLxw9R6YQBmMEQVnWEsuwAZymuNQX7U03eK5YU218TTPD6qecOOUYtovCAP/9iQpUqY/1Z8q60fdovvnvMNlaSQXt3SkF8YU/2P3T36I8KRSH9I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555862; c=relaxed/simple; bh=OrW7zJ21stvDnpp/P7e26kdsuNdebpykAQ0uJlts2ec=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dQhGlY06OtZBRJWDPJopC/GWaJ6yb/HRpLpyNvM8TQ5AMxBg0HxrxLNQS5YlruOdHBXOpttjhIXT/8aGYlVJhns7EobWutlMQ6P5qWbNPVrhJY6qXDvFS+qLO2dC4aYJJxb9k/MQKI3D1WTH8nZkLxNb8SmfSLVLviXSyzKqROg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oebVDqI9; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oebVDqI9" Received: by smtp.kernel.org (Postfix) with ESMTPS id A0D0FC4CEE6; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1735555861; bh=OrW7zJ21stvDnpp/P7e26kdsuNdebpykAQ0uJlts2ec=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=oebVDqI9J/kTukz57JaYX9lh3+WvPDxB1kJbxN8HQaOmZ+chvxvpBoMlMK+AytqoS izQmotQZ3oo1O4cHnH37gJaNIAQFl2atX7ADuDI148tmAiVk6DXvOoKFC1owbQtSMN aj04ZPKoMeW7XeBQt+u9S8ipwGbp1944WYwDh7YQkNyas3wmnQfRQCasHsd6jNmvyI dBl2MOufyY/mOhz0GhbR7foGu2XuryDm7k4eQH12ojxQ/By5xJ7Z+UISrR/nHWyUEz sVLUyg1KiM+McnejS3hSqnOKqStYIKHB0opLPQAHNpAXEH6BGu7Q+WSQCinpK77Y8b ROLiBZ9qK3gZA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 96FF6E77188; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) From: Hermes Wu via B4 Relay Date: Mon, 30 Dec 2024 18:51:25 +0800 Subject: [PATCH RESEND v7 07/10] drm/bridge: it6505: fix HDCP CTS KSV list read with UNIGRAF DPR-100. Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241230-v7-upstream-v7-7-e0fdd4844703@ite.corp-partner.google.com> References: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> In-Reply-To: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , AngeloGioacchino Del Regno , Hermes Wu , Allen Chen Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Pin-yen Lin , Kenneth Hung , Pet Weng , Hermes Wu , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1735555881; l=3017; i=Hermes.wu@ite.corp-partner.google.com; s=20241230; h=from:subject:message-id; bh=LkPmWJ3+m9M5J4gwKc6RK5juQw3WKrt44Jh3DJ8DUnY=; b=XhasEndtLKETx3pdOStimdJD4B7rLoxm68C/BuvCZj6km7HkEsMMqy8+VBUsz4t+EjKypiJxr VU9ZfEqwcwVB9rJf3EgnI7TP7VGGxdmqOE0Tjlj9xR9tRwmJfkjTn0k X-Developer-Key: i=Hermes.wu@ite.corp-partner.google.com; a=ed25519; pk=qho5Dawp2WWj9CGyjtJ6/Y10xH8odjRdS6SXDaDAerU= X-Endpoint-Received: by B4 Relay for Hermes.wu@ite.corp-partner.google.com/20241230 with auth_id=307 X-Original-From: Hermes Wu Reply-To: Hermes.wu@ite.corp-partner.google.com From: Hermes Wu When running the HDCP CTS test with UNIGRAF DPR-100. KSV list must be read from DP_AUX_HDCP_KSV_FIFO in an AUX request, and can not separate with multiple read requests. The AUX operation command "CMD_AUX_GET_KSV_LIST" reads the KSV list with AUX FIFO and is able to read DP_AUX_HDCP_KSV_FIFO in an AUX request. Add it6505_get_ksvlist() which uses CMD_AUX_GET_KSV_LIST operation to read the KSV list. Reviewed-by: Dmitry Baryshkov Signed-off-by: Hermes Wu Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/bridge/ite-it6505.c | 48 +++++++++++++++++++++++++++------= ---- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 614fbb6295237708aa5b692de87ab5548c499da5..4ed4899227602a4574a13ffa224= 42dcc4a5c2092 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -1189,6 +1189,37 @@ static int it6505_get_edid_block(void *data, u8 *buf= , unsigned int block, return 0; } =20 +static int it6505_get_ksvlist(struct it6505 *it6505, u8 *buf, size_t len) +{ + struct device *dev =3D it6505->dev; + enum aux_cmd_reply reply; + int request_size, ret; + int i =3D 0; + + do { + request_size =3D min_t(int, (int)len - i, 15); + + ret =3D it6505_aux_do_transfer(it6505, CMD_AUX_GET_KSV_LIST, + DP_AUX_HDCP_KSV_FIFO, + buf + i, request_size, &reply); + + DRM_DEV_DEBUG_DRIVER(dev, "request_size =3D %d, ret =3D%d", request_size= , ret); + if (ret < 0) + return ret; + + i +=3D request_size; + } while (i < len); + + DRM_DEV_DEBUG_DRIVER(dev, "ksv read cnt =3D %d down_stream_cnt=3D%d ", i,= i / 5); + + for (i =3D 0 ; i < len; i +=3D 5) { + DRM_DEV_DEBUG_DRIVER(dev, "ksv[%d] =3D %02X%02X%02X%02X%02X", + i / 5, buf[i], buf[i + 1], buf[i + 2], buf[i + 3], buf[i + 4]); + } + + return len; +} + static void it6505_variable_config(struct it6505 *it6505) { it6505->link_rate_bw_code =3D HBR; @@ -1970,7 +2001,7 @@ static int it6505_setup_sha1_input(struct it6505 *it6= 505, u8 *sha1_input) { struct device *dev =3D it6505->dev; u8 binfo[2]; - int down_stream_count, i, err, msg_count =3D 0; + int down_stream_count, err, msg_count =3D 0; =20 err =3D it6505_get_dpcd(it6505, DP_AUX_HDCP_BINFO, binfo, ARRAY_SIZE(binfo)); @@ -1995,18 +2026,11 @@ static int it6505_setup_sha1_input(struct it6505 *i= t6505, u8 *sha1_input) down_stream_count); return 0; } + err =3D it6505_get_ksvlist(it6505, sha1_input, down_stream_count * 5); + if (err < 0) + return err; =20 - for (i =3D 0; i < down_stream_count; i++) { - err =3D it6505_get_dpcd(it6505, DP_AUX_HDCP_KSV_FIFO + - (i % 3) * DRM_HDCP_KSV_LEN, - sha1_input + msg_count, - DRM_HDCP_KSV_LEN); - - if (err < 0) - return err; - - msg_count +=3D 5; - } + msg_count +=3D down_stream_count * 5; =20 it6505->hdcp_down_stream_count =3D down_stream_count; sha1_input[msg_count++] =3D binfo[0]; --=20 2.34.1 From nobody Wed Mar 12 07:45:07 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E10581A76D5 for ; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555862; cv=none; b=D1qU4jSt5tDT7buX5SFtKsuRI6xV4vDIxb1fTuILwG/6hygXXWcTbJnU7MtdX3kGqN75aJD5p+mZu+FDHjdbkzx+fbizAswnIvJkzBe9mLKWnUjL79+TV8DpXJJzkY8aMZuBTY6DyzJh5IxoAq3Kmf0Veslx+5hK5b1fdUrEIzA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555862; c=relaxed/simple; bh=Zl6JqppBNbMmE/iNTWjkyJ9wCrCrJmqXcVDW5n1uzUE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T2leOrV33l2kjqYCCM5au7JmVuErKRw5wOIyXOXU6NOrV2YuPwRbv4CRDUqVI3CLiGcBirB3GKeyFS0wDYBimfYQt6SUjZCv4dWHLx5eKeBice2Ll0Xr9lgYdDaV0cVx+aIcFGTShWPuqpsOghZnwbp7dzrMKAXD4tpw2I7miJM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bW1xoArp; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bW1xoArp" Received: by smtp.kernel.org (Postfix) with ESMTPS id B4F31C4CED0; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1735555861; bh=Zl6JqppBNbMmE/iNTWjkyJ9wCrCrJmqXcVDW5n1uzUE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=bW1xoArpyPevgQS7B42MvberX0vBlmS8mheBivXpy4aoBp/Ms8UV7rbZIFOGroy7Y zy70R6OTe441XXwaWNhyEJmeAKrxtza1Utzw0GXsZ+I5bV+Vww7/1vZP8uPf3WAp7T 2B4ZLHfdjDvwMmLF4SPxaZ6kkD/RvN4lECz2SGWFMkEv2eQefDYOPd0CAa7maakeMx r9MaU3Gdir3O4cbjLZImsllxkrNpFaCMvPNPqeSgu+GibyBjhfE5ldmKL3gZBsN7g+ HVsG4J/cZNBIy/6mMPMkifKTchJUUastCNJi27ftx41G6QPK8asAc4eucjZnhS5in6 q2BvE9do88YHw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id A918DE7718F; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) From: Hermes Wu via B4 Relay Date: Mon, 30 Dec 2024 18:51:26 +0800 Subject: [PATCH RESEND v7 08/10] drm/bridge: it6505: fix HDCP CTS compare V matching Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241230-v7-upstream-v7-8-e0fdd4844703@ite.corp-partner.google.com> References: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> In-Reply-To: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , AngeloGioacchino Del Regno , Hermes Wu , Allen Chen Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Pin-yen Lin , Kenneth Hung , Pet Weng , Hermes Wu X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1735555881; l=2090; i=Hermes.wu@ite.corp-partner.google.com; s=20241230; h=from:subject:message-id; bh=ZSAKlMN3TX9Z+Nap4xZYSRAsF5UPHncEdZ0YN4lKi7Q=; b=WuRbK6hOZmf6izaD3T8mR5orAibOS2VZShKTA/6ppdVymvVLra0zvNnxMgb35Ovu0ic2NbecA pG0iwvyjigkBk2b/L4GUosRGvlI2CJoND0H8NVf9sO5ZeR900b4wOG2 X-Developer-Key: i=Hermes.wu@ite.corp-partner.google.com; a=ed25519; pk=qho5Dawp2WWj9CGyjtJ6/Y10xH8odjRdS6SXDaDAerU= X-Endpoint-Received: by B4 Relay for Hermes.wu@ite.corp-partner.google.com/20241230 with auth_id=307 X-Original-From: Hermes Wu Reply-To: Hermes.wu@ite.corp-partner.google.com From: Hermes Wu When HDCP negotiation with a repeater device. Checking SHA V' matching must retry 3 times before restarting HDCP. Signed-off-by: Hermes Wu Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/bridge/ite-it6505.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 4ed4899227602a4574a13ffa22442dcc4a5c2092..2b8f208d1e17eebe3287ab0aa71= 180176dd0574e 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -2058,7 +2058,7 @@ static bool it6505_hdcp_part2_ksvlist_check(struct it= 6505 *it6505) { struct device *dev =3D it6505->dev; u8 av[5][4], bv[5][4]; - int i, err; + int i, err, retry; =20 i =3D it6505_setup_sha1_input(it6505, it6505->sha1_input); if (i <=3D 0) { @@ -2067,22 +2067,28 @@ static bool it6505_hdcp_part2_ksvlist_check(struct = it6505 *it6505) } =20 it6505_sha1_digest(it6505, it6505->sha1_input, i, (u8 *)av); + /*1B-05 V' must retry 3 times */ + for (retry =3D 0; retry < 3; retry++) { + err =3D it6505_get_dpcd(it6505, DP_AUX_HDCP_V_PRIME(0), (u8 *)bv, + sizeof(bv)); =20 - err =3D it6505_get_dpcd(it6505, DP_AUX_HDCP_V_PRIME(0), (u8 *)bv, - sizeof(bv)); + if (err < 0) { + dev_err(dev, "Read V' value Fail %d", retry); + continue; + } =20 - if (err < 0) { - dev_err(dev, "Read V' value Fail"); - return false; - } + for (i =3D 0; i < 5; i++) { + if (bv[i][3] !=3D av[i][0] || bv[i][2] !=3D av[i][1] || + av[i][1] !=3D av[i][2] || bv[i][0] !=3D av[i][3]) + break; =20 - for (i =3D 0; i < 5; i++) - if (bv[i][3] !=3D av[i][0] || bv[i][2] !=3D av[i][1] || - bv[i][1] !=3D av[i][2] || bv[i][0] !=3D av[i][3]) - return false; + DRM_DEV_DEBUG_DRIVER(dev, "V' all match!! %d, %d", retry, i); + return true; + } + } =20 - DRM_DEV_DEBUG_DRIVER(dev, "V' all match!!"); - return true; + DRM_DEV_DEBUG_DRIVER(dev, "V' NOT match!! %d", retry); + return false; } =20 static void it6505_hdcp_wait_ksv_list(struct work_struct *work) --=20 2.34.1 From nobody Wed Mar 12 07:45:07 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F214A1A76DE for ; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555862; cv=none; b=jV5pONLHl38vLLLCsdKEFMoOJPWzQUnNh4XrhRJ7KGIuZPhnUGzlZVFiPM6bnDu9TKZDdUN/P2NRVmDh/H8xpyr5eph4wZD8gLh7MFeuB3EyZMzqFNJfMSxBajeM2a9Jzbg4dbzYKI3g9VT7/7cRxvSJLd3k2ubc4dINBsn6A5o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555862; c=relaxed/simple; bh=v3lSQyy9gXzgX8M13zqUf14k/OSbA7fxqxLe1EaQEtc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZqmhLirEcJO+VCHln85MaomOuRwv2WYn44cA8JLyxJmsFmgrt4P4hlzd8FU+eZ5WkiqzsLr6Hcl+tFfQC0Lb+7fLwnfayE8JfCEJOz6XLR0Uu325hgSM5o50o+THm1C2nBFKbEXSFLwr9ETO5Nf5OFURsBvNftVM7k1c/sGRSao= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Vlk95j43; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Vlk95j43" Received: by smtp.kernel.org (Postfix) with ESMTPS id CE07EC4CEDC; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1735555861; bh=v3lSQyy9gXzgX8M13zqUf14k/OSbA7fxqxLe1EaQEtc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Vlk95j43UDauF7mohWjHVD23aJ4Ear8js97Wk+t7pPOT6lf5VKEByCATIDVK/xqGk DJaQ3Qbx8pnDZUllF0ry9Wk7exFOGYjdtthtoeZBYJ0GGOeIh01S6P9AS0tfaQZxFy H8+g+PCMMYnh+1kvB2kRI9hojkjuloX2RtkGypnYhW69ALzQVKZbsmpCaLn20Ehnfd 3+O6hP48QNYvRWiZpNeZnhi8dnxN/E4xHStjJ/66ikgT+1fFbT2+3FtV2xL6A3mQJC 7l0KdHPJdYEEPYKxDZcGumqL8YVnCZpaI9GXaOod6licZP8dLri6v9RN6XYykL5MjB LPPNjOKSanKBA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id C1514E77188; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) From: Hermes Wu via B4 Relay Date: Mon, 30 Dec 2024 18:51:27 +0800 Subject: [PATCH RESEND v7 09/10] drm/bridge: it6505: fix HDCP CTS KSV list wait timer Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241230-v7-upstream-v7-9-e0fdd4844703@ite.corp-partner.google.com> References: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> In-Reply-To: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , AngeloGioacchino Del Regno , Hermes Wu , Allen Chen Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Pin-yen Lin , Kenneth Hung , Pet Weng , Hermes Wu X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1735555881; l=1723; i=Hermes.wu@ite.corp-partner.google.com; s=20241230; h=from:subject:message-id; bh=QISr17OTE/349oMqfbcRg7gIss3cy8H02akOrW/SuWA=; b=XzCevaxH7W9/AwT9xJW+9Y7xqpM4+GfbLaaduHaJ4I5DQ9SL/5vAvROdOzpyGhELGPVVh7VsL Hc/zhMSqlQICS6Y/mxtkM8qvYWXGNb29S0jUH9RCUyL2qzIhVMtPd3O X-Developer-Key: i=Hermes.wu@ite.corp-partner.google.com; a=ed25519; pk=qho5Dawp2WWj9CGyjtJ6/Y10xH8odjRdS6SXDaDAerU= X-Endpoint-Received: by B4 Relay for Hermes.wu@ite.corp-partner.google.com/20241230 with auth_id=307 X-Original-From: Hermes Wu Reply-To: Hermes.wu@ite.corp-partner.google.com From: Hermes Wu HDCP must disabled encryption and restart authentication after waiting KSV for 5s. The original method uses a counter in a waitting loop that may wait much longer than it is supposed to. Use time_after() for KSV wait timeout. Signed-off-by: Hermes Wu Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/bridge/ite-it6505.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 2b8f208d1e17eebe3287ab0aa71180176dd0574e..83e2df618c97f8fe3e59789ffb8= 10ce8639f96bb 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -2096,12 +2096,13 @@ static void it6505_hdcp_wait_ksv_list(struct work_s= truct *work) struct it6505 *it6505 =3D container_of(work, struct it6505, hdcp_wait_ksv_list); struct device *dev =3D it6505->dev; - unsigned int timeout =3D 5000; - u8 bstatus =3D 0; + u8 bstatus; bool ksv_list_check; + /* 1B-04 wait ksv list for 5s */ + unsigned long timeout =3D jiffies + + msecs_to_jiffies(5000) + 1; =20 - timeout /=3D 20; - while (timeout > 0) { + for (;;) { if (!it6505_get_sink_hpd_status(it6505)) return; =20 @@ -2110,13 +2111,12 @@ static void it6505_hdcp_wait_ksv_list(struct work_s= truct *work) if (bstatus & DP_BSTATUS_READY) break; =20 - msleep(20); - timeout--; - } + if (time_after(jiffies, timeout)) { + DRM_DEV_DEBUG_DRIVER(dev, "KSV list wait timeout"); + goto timeout; + } =20 - if (timeout =3D=3D 0) { - DRM_DEV_DEBUG_DRIVER(dev, "timeout and ksv list wait failed"); - goto timeout; + msleep(20); } =20 ksv_list_check =3D it6505_hdcp_part2_ksvlist_check(it6505); --=20 2.34.1 From nobody Wed Mar 12 07:45:07 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 13E261A83E0 for ; Mon, 30 Dec 2024 10:51:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555862; cv=none; b=Gq8JxqPejinzZN10ZJcomhNsrYBXXrE6LgwXKftTZa5TdRO5Uu3OyuT2h5l4jTa2dGqI6OZFw37LT4wKFh2l6V0SIeAv0MTGmUgHXpZeh62XEWhzcirNOe/Kx1BVH166xXIJ5MRxcYmA12UTjOhrZYQZ0aiz41z0tN66I500fRQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735555862; c=relaxed/simple; bh=NJj0K2gdXXAJLf7drNqE5H8SvCozOqHpTpJbbKTSkmI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gLzJTD5IyKOOYkgvyYcBi32uVIYsXdg6h9uZvrdSH6+AWRg+mu3jAO2TJhPdepcEj0NPBWxMYOV07KxvyMErFAbxciM63Q5KWp2EgS51rOSZ7KkxuitQYurV7tp56Yl06AKb7k3fOe76gj/7NyIw1x5x2mb0QclivF80Mpm0dt0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZKJYEvJw; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZKJYEvJw" Received: by smtp.kernel.org (Postfix) with ESMTPS id E3C78C4CEED; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1735555861; bh=NJj0K2gdXXAJLf7drNqE5H8SvCozOqHpTpJbbKTSkmI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=ZKJYEvJwE6a+WWV8KwPOnH7ivLgkvnA1w0u3lAAhNelUif/nx5lMOgiuPqUhR/O5z 7SrR7ygzxcU/t1Gr3HHHCiQn5XemeokjURnIP3qeh6rfvJDrvzPlzw67535w9W5tzX yh1IRWDuSj9jDjeVlFPj6h4lFePV6A8fuDwqPYEdbX2kmWTrgjuS5dPJJ/WWdI5pkw zPwJRuTq1zZ7Ujv6yzy833IKuKVVyipv9gQKC3yx5sDpokrqMW2kUuhDG4fXaTwTsN 7iKS33FZORgybT39arBWYdqpvqtTu/ZitTcsFXeeFDjYoCTU/nCtx3n/I7I6LiPLwK itm43etbzjJBw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id D791BE7718F; Mon, 30 Dec 2024 10:51:01 +0000 (UTC) From: Hermes Wu via B4 Relay Date: Mon, 30 Dec 2024 18:51:28 +0800 Subject: [PATCH RESEND v7 10/10] drm/bridge: it6505: add I2C functionality on AUX Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241230-v7-upstream-v7-10-e0fdd4844703@ite.corp-partner.google.com> References: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> In-Reply-To: <20241230-v7-upstream-v7-0-e0fdd4844703@ite.corp-partner.google.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , AngeloGioacchino Del Regno , Hermes Wu , Allen Chen Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Pin-yen Lin , Kenneth Hung , Pet Weng , Hermes Wu , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1735555881; l=6930; i=Hermes.wu@ite.corp-partner.google.com; s=20241230; h=from:subject:message-id; bh=J4rvU2IuQU84l+7pDQWlWwKvnpve8QmHuGwdiA2w++k=; b=13nnuAtHANeIYaqLqLdCoZ+uhUqJIi1vPl1TMkKiwucDyZgbUPaUeixhxzt3amqM2P+pVVeMq wm8y8ZPGuR6CSnUP7dVE1ge9tlH0Ga/lXOjTivkJH8RCHmAecwc2FK+ X-Developer-Key: i=Hermes.wu@ite.corp-partner.google.com; a=ed25519; pk=qho5Dawp2WWj9CGyjtJ6/Y10xH8odjRdS6SXDaDAerU= X-Endpoint-Received: by B4 Relay for Hermes.wu@ite.corp-partner.google.com/20241230 with auth_id=307 X-Original-From: Hermes Wu Reply-To: Hermes.wu@ite.corp-partner.google.com From: Hermes Wu DisplayPort AUX protocol supports I2C transport which is capable of reading EDID or supports MCCS. In drm_dp_helper, drm_dp_i2c_xfer() packs I2C requests into a sequence of AUX requests. it6505_aux_i2c_operation() is implemented to match drm_dp_i2c_xfer() operactions. it6505_aux_i2c_transfer() adds I2C functionality for it6505_aux_transfer(). Reviewed-by: Dmitry Baryshkov Signed-off-by: Hermes Wu Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/bridge/ite-it6505.c | 177 ++++++++++++++++++++++++++++++++= +++- 1 file changed, 175 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 83e2df618c97f8fe3e59789ffb810ce8639f96bb..c2a846f5d8d9b7251913c82d21f= 7957401e35e5e 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -268,6 +268,18 @@ #define REG_SSC_CTRL1 0x189 #define REG_SSC_CTRL2 0x18A =20 +#define REG_AUX_USER_CTRL 0x190 +#define EN_USER_AUX BIT(0) +#define USER_AUX_DONE BIT(1) +#define AUX_EVENT BIT(4) + +#define REG_AUX_USER_DATA_REC 0x191 +#define M_AUX_IN_REC 0xF0 +#define M_AUX_OUT_REC 0x0F + +#define REG_AUX_USER_REPLY 0x19A +#define REG_AUX_USER_RXB(n) (n + 0x19B) + #define RBR DP_LINK_BW_1_62 #define HBR DP_LINK_BW_2_7 #define HBR2 DP_LINK_BW_5_4 @@ -303,6 +315,8 @@ #define MAX_EQ_LEVEL 0x03 #define AUX_WAIT_TIMEOUT_MS 15 #define AUX_FIFO_MAX_SIZE 16 +#define AUX_I2C_MAX_SIZE 4 +#define AUX_I2C_DEFER_RETRY 4 #define PIXEL_CLK_DELAY 1 #define PIXEL_CLK_INVERSE 0 #define ADJUST_PHASE_THRESHOLD 80000 @@ -325,7 +339,12 @@ enum aux_cmd_type { CMD_AUX_NATIVE_READ =3D 0x0, CMD_AUX_NATIVE_WRITE =3D 0x5, + CMD_AUX_GI2C_ADR =3D 0x08, + CMD_AUX_GI2C_READ =3D 0x09, + CMD_AUX_GI2C_WRITE =3D 0x0A, CMD_AUX_I2C_EDID_READ =3D 0xB, + CMD_AUX_I2C_READ =3D 0x0D, + CMD_AUX_I2C_WRITE =3D 0x0C, =20 /* KSV read with AUX FIFO extend from CMD_AUX_NATIVE_READ*/ CMD_AUX_GET_KSV_LIST =3D 0x10, @@ -1107,6 +1126,161 @@ static ssize_t it6505_aux_do_transfer(struct it6505= *it6505, return ret; } =20 +static bool it6505_aux_i2c_reply_defer(u8 reply) +{ + if (reply =3D=3D DP_AUX_NATIVE_REPLY_DEFER || reply =3D=3D DP_AUX_I2C_REP= LY_DEFER) + return true; + return false; +} + +static bool it6505_aux_i2c_reply_nack(u8 reply) +{ + if (reply =3D=3D DP_AUX_NATIVE_REPLY_NACK || reply =3D=3D DP_AUX_I2C_REPL= Y_NACK) + return true; + return false; +} + +static int it6505_aux_i2c_wait(struct it6505 *it6505, u8 *reply) +{ + int err =3D 0; + unsigned long timeout; + struct device *dev =3D it6505->dev; + + timeout =3D jiffies + msecs_to_jiffies(AUX_WAIT_TIMEOUT_MS) + 1; + + do { + if (it6505_read(it6505, REG_AUX_USER_CTRL) & AUX_EVENT) + break; + if (time_after(jiffies, timeout)) { + dev_err(dev, "Timed out waiting AUX I2C, BUSY =3D %X\n", + it6505_aux_op_finished(it6505)); + err =3D -ETIMEDOUT; + goto end_aux_i2c_wait; + } + usleep_range(300, 800); + } while (!it6505_aux_op_finished(it6505)); + + *reply =3D it6505_read(it6505, REG_AUX_USER_REPLY) >> 4; + + if (*reply =3D=3D 0) + goto end_aux_i2c_wait; + + if (it6505_aux_i2c_reply_defer(*reply)) + err =3D -EBUSY; + else if (it6505_aux_i2c_reply_nack(*reply)) + err =3D -ENXIO; + +end_aux_i2c_wait: + it6505_set_bits(it6505, REG_AUX_USER_CTRL, USER_AUX_DONE, USER_AUX_DONE); + return err; +} + +static int it6505_aux_i2c_readb(struct it6505 *it6505, u8 *buf, size_t siz= e, u8 *reply) +{ + int ret, i; + int retry; + + for (retry =3D 0; retry < AUX_I2C_DEFER_RETRY; retry++) { + it6505_write(it6505, REG_AUX_CMD_REQ, CMD_AUX_GI2C_READ); + + ret =3D it6505_aux_i2c_wait(it6505, reply); + if (it6505_aux_i2c_reply_defer(*reply)) + continue; + if (ret >=3D 0) + break; + } + + for (i =3D 0; i < size; i++) + buf[i] =3D it6505_read(it6505, REG_AUX_USER_RXB(0 + i)); + + return size; +} + +static int it6505_aux_i2c_writeb(struct it6505 *it6505, u8 *buf, size_t si= ze, u8 *reply) +{ + int i, ret; + int retry; + + for (i =3D 0; i < size; i++) + it6505_write(it6505, REG_AUX_OUT_DATA0 + i, buf[i]); + + for (retry =3D 0; retry < AUX_I2C_DEFER_RETRY; retry++) { + it6505_write(it6505, REG_AUX_CMD_REQ, CMD_AUX_GI2C_WRITE); + + ret =3D it6505_aux_i2c_wait(it6505, reply); + if (it6505_aux_i2c_reply_defer(*reply)) + continue; + if (ret >=3D 0) + break; + } + return size; +} + +static ssize_t it6505_aux_i2c_operation(struct it6505 *it6505, + struct drm_dp_aux_msg *msg) +{ + int ret; + ssize_t request_size, data_cnt =3D 0; + u8 *buffer =3D msg->buffer; + + /* set AUX user mode */ + it6505_set_bits(it6505, REG_AUX_CTRL, + AUX_USER_MODE | AUX_NO_SEGMENT_WR, AUX_USER_MODE); + it6505_set_bits(it6505, REG_AUX_USER_CTRL, EN_USER_AUX, EN_USER_AUX); + /* clear AUX FIFO */ + it6505_set_bits(it6505, REG_AUX_CTRL, + AUX_EN_FIFO_READ | CLR_EDID_FIFO, + AUX_EN_FIFO_READ | CLR_EDID_FIFO); + + it6505_set_bits(it6505, REG_AUX_CTRL, + AUX_EN_FIFO_READ | CLR_EDID_FIFO, 0x00); + + it6505_write(it6505, REG_AUX_ADR_0_7, 0x00); + it6505_write(it6505, REG_AUX_ADR_8_15, msg->address << 1); + + if (msg->size =3D=3D 0) { + /* IIC Start/STOP dummy write */ + it6505_write(it6505, REG_AUX_ADR_16_19, msg->request); + it6505_write(it6505, REG_AUX_CMD_REQ, CMD_AUX_GI2C_ADR); + ret =3D it6505_aux_i2c_wait(it6505, &msg->reply); + goto end_aux_i2c_transfer; + } + + /* IIC data transfer */ + data_cnt =3D 0; + do { + request_size =3D min_t(ssize_t, msg->size - data_cnt, AUX_I2C_MAX_SIZE); + it6505_write(it6505, REG_AUX_ADR_16_19, + msg->request | ((request_size - 1) << 4)); + if ((msg->request & DP_AUX_I2C_READ) =3D=3D DP_AUX_I2C_READ) + ret =3D it6505_aux_i2c_readb(it6505, &buffer[data_cnt], + request_size, &msg->reply); + else + ret =3D it6505_aux_i2c_writeb(it6505, &buffer[data_cnt], + request_size, &msg->reply); + + if (ret < 0) + goto end_aux_i2c_transfer; + + data_cnt +=3D request_size; + } while (data_cnt < msg->size); + ret =3D data_cnt; +end_aux_i2c_transfer: + + it6505_set_bits(it6505, REG_AUX_USER_CTRL, EN_USER_AUX, 0); + it6505_set_bits(it6505, REG_AUX_CTRL, AUX_USER_MODE, 0); + return ret; +} + +static ssize_t it6505_aux_i2c_transfer(struct drm_dp_aux *aux, + struct drm_dp_aux_msg *msg) +{ + struct it6505 *it6505 =3D container_of(aux, struct it6505, aux); + + guard(mutex)(&it6505->aux_lock); + return it6505_aux_i2c_operation(it6505, msg); +} + static ssize_t it6505_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg) { @@ -1116,9 +1290,8 @@ static ssize_t it6505_aux_transfer(struct drm_dp_aux = *aux, int ret; enum aux_cmd_reply reply; =20 - /* IT6505 doesn't support arbitrary I2C read / write. */ if (is_i2c) - return -EINVAL; + return it6505_aux_i2c_transfer(aux, msg); =20 switch (msg->request) { case DP_AUX_NATIVE_READ: --=20 2.34.1