From nobody Sun Jun 21 15:57:43 2026 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 413B717BCA; Wed, 17 Jun 2026 08:32:25 +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=1781685145; cv=none; b=fpf7a34F9jftJj0yvRBQoLxXbBNyMIj2OTibd2kt7Q0haQLJLSpTyJN4l9xAwiVqtSHcy5kSgbgF69y678KuBu2H9s9aL94QfX7V6AlRh6j9WMhN16Lm3X1/22gvktedzAz/cb+ExIeIKRUudUFEUyjp/qOWTcnDpsuN6OtYA5o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781685145; c=relaxed/simple; bh=Uk/b7YYDhvgsGviOg3h2t2SDHyXuI+Sg+OG/3Q4uIb4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BXmuYiXIsIVOCkijnEkH6kPDW9fv0fsQTzlMtx9ctico5CR9lt4oijoE+V4dX76BLZHa81stSOLzZ5w4lseitPk9ENdFFqVfnSauoV/K+jARB92Uy9poM6iQvG5N6Z67fJ1R8gDvLz3mUTmlYysYubDkhU0cfNzAhs0qO93QljE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iWhi8ln4; 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="iWhi8ln4" Received: by smtp.kernel.org (Postfix) with ESMTPS id DCE74C4AF0E; Wed, 17 Jun 2026 08:32:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781685144; bh=Uk/b7YYDhvgsGviOg3h2t2SDHyXuI+Sg+OG/3Q4uIb4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=iWhi8ln4YkX3BfbRR4MQrQCIFd9ZmSwuSNISfI9CjoJK0GAPCdgmot+TYgFJ9WakM re/fuOxqKeCkOFbWYTzjZmZFM5tAkNZZ5Rw/x9DiU9CxDuh511YWH/BuePBlfVvWUY vePeUnkCBNj4yqYeTfej5IiOf6UGPteP2RAGfqK7Q4o2UOxyByR1JdTM6ytl3hz4pS UVJ+XBV0xxlq3FBxICqDiCBtxpAFFPxLUFMpE6lR2/voOX+6gKZNDalKsp3OyFzBtv z1kU/b5eH0V6by5b0KVxtnM+WD/ve8yNhqKuUXvTI7GMrzH6Xeaz5hzs1bdYNqYg6k 0w1820nHKsuhg== 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 C6BE9CD98E4; Wed, 17 Jun 2026 08:32:24 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 17 Jun 2026 10:32:19 +0200 Subject: [PATCH v9 1/9] media: qcom: camss: csiphy-3ph: Fix lane mask calculation 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: <20260617-qcom-cphy-v9-1-83da8a8e4e44@ixit.cz> References: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> In-Reply-To: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> To: Robert Foss , Todor Tomov , Bryan O'Donoghue , Bryan O'Donoghue , Vladimir Zapolskiy , Mauro Carvalho Chehab , Luca Weiss , Petr Hodina , "Dr. Git" , Cory Keitz , Loic Poulain , Hans Verkuil , Nihal Kumar Gupta Cc: Frank Li , Konrad Dybcio , Kieran Bingham , Sakari Ailus , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1187; i=david@ixit.cz; h=from:subject:message-id; bh=4gZLnNPEAXXeOriBAOpQ0RLijJCSPBaruO2JK2La25Y=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqMluVDaYt23kX5sYernqkW2OsBYpSt53wLLfQS FNNVrQ8LuuJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCajJblQAKCRBgAj/E00kg cpeWEACHOPgSurC7v8KGNNYxgItBKG1rKNOXQxucd90zRFVR0vaZwNc+haE3e8IfalVBeGQR2Kn jzcJ/Op5+YbTkug+N+3vX1bCHkhURxFA2MO5rCAYgDR9qQS73NUn3HOJFYew5wzADDOmmRDnQHl SUnhn64zwXaXRSp3D2YRZEi3ALlINLmNzgzR3kxAoNsGeuueVl9CPjqqHqGVZd/PEf/R4r5goBO R1toPw9/f/bvvIOvZW7d1byETo+ckbFAMqG0d71QdSICNmv5E/WIBk3blWzbgtuye3K28KZDjd/ dLEtRacIj/N2QcHFB8g3tVacsaKYKGVKfR6vEuCeOGGK1xzSTbWiU6oUBlTLv5QTSwntc4PWFBe 5KX9vmCjM1hxu4frm0Q3bWzEmrR7V8a5vUh2hYUWJI81uXSY6ef1FMRNULaIZFr+miBP8+TIwAC g79GkR/Cpm73yJprj+QdwLeiInfctf8G5DHJUKnl9C88sPK+U8ddyfVmVQ0Q/W5gD6pvEYBpPUX b77FLtIe5k6cFYKfWKeFok1JyNHR/DYK7/kYETYk+82nFf5L2raUDT9dLqVFAPOBN0f5s4UdSDO OpnfGzlsmWs9OdNZSQA4fm3QfdbE10NGUiLbEsoEoTLBAF0rBCi4+xSqw8RKL2Iony8PNw3TKMt TOx0HDNhjUkdD4w== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg The lane mask must be multiplied by 2, but this was accidentally omitted. Reviewed-by: Vladimir Zapolskiy Suggested-by: Nihal Kumar Gupta Signed-off-by: David Heidelberg --- drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c b/dri= vers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c index dac8d2ecf7995..7c8c0e41bc62f 100644 --- a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c +++ b/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c @@ -1114,17 +1114,17 @@ static void csiphy_gen2_config_lanes(struct csiphy_= device *csiphy, static u8 csiphy_get_lane_mask(struct csiphy_lanes_cfg *lane_cfg) { u8 lane_mask; int i; =20 lane_mask =3D CSIPHY_3PH_CMN_CSI_COMMON_CTRL5_CLK_ENABLE; =20 for (i =3D 0; i < lane_cfg->num_data; i++) - lane_mask |=3D 1 << lane_cfg->data[i].pos; + lane_mask |=3D BIT(lane_cfg->data[i].pos * 2); =20 return lane_mask; } =20 static bool csiphy_is_gen2(u32 version) { bool ret =3D false; =20 --=20 2.53.0 From nobody Sun Jun 21 15:57:43 2026 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 50765384CED; Wed, 17 Jun 2026 08:32:25 +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=1781685145; cv=none; b=EUlweNdGVDMibYVZnIXwXyGxxtwY8opaOIkmd/FcvNotokaScf7K5yQrEuw4avJMRXKg9DYEh+WzNFHMIqNcQ406agFmKRxwdZtHOT15m7+EQuhKiCaZSnFQKac8IAg68ZQF06LsMKUuhsaOjJoAkvknRzljrxBL2F/xLJV7fNo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781685145; c=relaxed/simple; bh=l4eCm8AIWkDUoE3WTsV7Zxme0lc2GyFF0+eYcS0+My8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cif4Gl3YOQHWW5BxJgqI3gd6ea/mAPkeSZBISnQCa0eldPBHriaZhuDKTJq7/Y1umiTOZfnla40xwSElk1vcfDvR9nzqcLotTWsKYOvIEksjzaeNLI9xItyXgE1npiCpJ+vhlME/nlI2lUr9RiZl5US6yz53zLGirL8i0S+1y+s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZydUme/t; 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="ZydUme/t" Received: by smtp.kernel.org (Postfix) with ESMTPS id ECCF7C4AF0F; Wed, 17 Jun 2026 08:32:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781685145; bh=l4eCm8AIWkDUoE3WTsV7Zxme0lc2GyFF0+eYcS0+My8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=ZydUme/tdGDj8I/fUfepOBlWpazbP6XU50KP+KgAmXx9dz/6JkaW7uF/+BtGSuTYc nNbdDikwWwEiUVMT9ASPFcK5lGTLkQCbpbEZqWItnpSyJGbYV2k4kiEzGV6OVCvmfL 8IBkDDgjymUxD7feBT2nsxXRDaWERpfNzjiMMC45lVkJR0THUNKEvdxS7bBhOPqumQ I6ywiN5xtTZodS0yQ6hK/U0QNNPyYEBSovMbvOX1TX1XNI4aEc0dNyEuGPa8LgQ+HU 6ccVflEGc11RPR0DBspdTjahmpyHU+702LJPji8cXhwJI1T8/YEV6BuncIyXA/bhaB whTFHNISzRiqg== 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 D9713CD98E2; Wed, 17 Jun 2026 08:32:24 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 17 Jun 2026 10:32:20 +0200 Subject: [PATCH v9 2/9] media: qcom: camss: csiphy: Introduce PHY configuration 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: <20260617-qcom-cphy-v9-2-83da8a8e4e44@ixit.cz> References: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> In-Reply-To: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> To: Robert Foss , Todor Tomov , Bryan O'Donoghue , Bryan O'Donoghue , Vladimir Zapolskiy , Mauro Carvalho Chehab , Luca Weiss , Petr Hodina , "Dr. Git" , Cory Keitz , Loic Poulain , Hans Verkuil , Nihal Kumar Gupta Cc: Frank Li , Konrad Dybcio , Kieran Bingham , Sakari Ailus , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2428; i=david@ixit.cz; h=from:subject:message-id; bh=X7AOYJ4niyGHoBf3ode1cySyXfbTbBCjzlnLn/fppe8=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqMluWfk8xLb1YV6k4z20PmlXeTqiWy9M8UZC3u dMpjBF/NImJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCajJblgAKCRBgAj/E00kg cgJ1EADR3Pfq6Fk6HMV98qkTvEsD0g5hCJ2ZcLZ9ZsbAsPINeqBA15VU8Yy1WQbd24BLeM231M0 DSE7MIPJI3lqWi+QUKuXPaj8DZfQ6t05CG6aEApJ7yw3hb0sHXgetR8JnfeiE5hJ+0xxz3txjtT T0u8Nfjao4e4nhA8HJyqCxl/B9BV79wN05EXjzrKZdJdBaQs7b/mK/06QMwPhHhUr8B3+anLLYP KCMCqdYUOdsuq6c0ifIyByd3j4TsoSB6GYFAVENYbiPD0GY0XM/HfQVZoUF181QMjQOvj7+QJYc mFt0tgO//sgcM6TncSmoxAmjvRgX6zfBH/6OnQyobxiC9PYtORhhBKIVQdSOf3dOfP10uNwl7AO nEhd164bp/6JYJVE0Ibk1Rou9gL+6tP5PkVqynuEwPtZ8s/jcALo0v1roIpFF/mqkuH8xml9PPK fK0RHeVY2pm3uwpwTYB9jbqX55b08IuSHAwi5Ggy/GaksBquiFLmyGVY5AZETh+k6H9m5vJ2Thb HOowgxaiITaOR88r05q3vjG5d+WIYTh0RcK1nmTTSzKqOa0/sIDvN30Idt4QN5J8nq3X3Uke+f0 lZMc1XSqQpsCd3leDVkGy2thuePR2zS6MwIWX95LhAQdEWS2t4yjG8K3O9x+Nh+4L1V+Hcdzz+s Fey2+xdf9mhIpdA== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Read PHY configuration from the device-tree bus-type and save it into the csiphy structure for later use. For C-PHY, skip clock line configuration, as there is none. Acked-by: Cory Keitz Reviewed-by: Bryan O'Donoghue Reviewed-by: Frank Li Signed-off-by: David Heidelberg --- drivers/media/platform/qcom/camss/camss-csiphy.h | 2 ++ drivers/media/platform/qcom/camss/camss.c | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/qcom/camss/camss-csiphy.h b/drivers/med= ia/platform/qcom/camss/camss-csiphy.h index 9d9657b82f748..2ebb307be18ba 100644 --- a/drivers/media/platform/qcom/camss/camss-csiphy.h +++ b/drivers/media/platform/qcom/camss/camss-csiphy.h @@ -25,21 +25,23 @@ =20 struct csiphy_lane { u8 pos; u8 pol; }; =20 /** * struct csiphy_lanes_cfg - CSIPHY lanes configuration + * @phy_cfg: interface selection (C-PHY or D-PHY) * @num_data: number of data lanes * @data: data lanes configuration * @clk: clock lane configuration (only for D-PHY) */ struct csiphy_lanes_cfg { + enum v4l2_mbus_type phy_cfg; int num_data; struct csiphy_lane *data; struct csiphy_lane clk; }; =20 struct csiphy_csi2_cfg { struct csiphy_lanes_cfg lane_cfg; }; diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/plat= form/qcom/camss/camss.c index 2123f6388e3d7..072c428e25166 100644 --- a/drivers/media/platform/qcom/camss/camss.c +++ b/drivers/media/platform/qcom/camss/camss.c @@ -4761,19 +4761,23 @@ static int camss_parse_endpoint_node(struct device = *dev, if (vep.bus_type !=3D V4L2_MBUS_CSI2_DPHY) { dev_err(dev, "Unsupported bus type %d\n", vep.bus_type); return -EINVAL; } =20 csd->interface.csiphy_id =3D vep.base.port; =20 mipi_csi2 =3D &vep.bus.mipi_csi2; - lncfg->clk.pos =3D mipi_csi2->clock_lane; - lncfg->clk.pol =3D mipi_csi2->lane_polarities[0]; lncfg->num_data =3D mipi_csi2->num_data_lanes; + lncfg->phy_cfg =3D vep.bus_type; + + if (lncfg->phy_cfg !=3D V4L2_MBUS_CSI2_CPHY) { + lncfg->clk.pos =3D mipi_csi2->clock_lane; + lncfg->clk.pol =3D mipi_csi2->lane_polarities[0]; + } =20 lncfg->data =3D devm_kcalloc(dev, lncfg->num_data, sizeof(*lncfg->data), GFP_KERNEL); if (!lncfg->data) return -ENOMEM; =20 for (i =3D 0; i < lncfg->num_data; i++) { --=20 2.53.0 From nobody Sun Jun 21 15:57:43 2026 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 4745231A813; Wed, 17 Jun 2026 08:32:25 +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=1781685145; cv=none; b=clYPoZPN7gCk/PKuRA6UQvNCz1quFYhs2Y6MyVhyZ9JwRYXi5RGosOAgkYvqLXXMlGWfgM8R/C6SWBWX1l005r3qE6atiidiLfgzeha7AJb90/A0X4XYQ8OrkUCBE4zw8Kzwafa40Bg+Vgap4rJVAVG4FEsMN2Y50kxsB4NgYaA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781685145; c=relaxed/simple; bh=H1VFUp3PjkKWJdD41MKRZH7D7dfv43n0A4wgkEm6UuY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qmOAu3X2qEfa6ssUDOGARt8orn+kjmYc7e8amvhzP3xIHbORO+RDmr8C4MnAifn7ffh7nntzhNKo2Ay6YMi07R3zOZSEg8KXx2ISVm9NU91lELXLqOpEPRzyHF3ab+6DKxqCOwMT6dUGYrEVh61eHSwYRaourWkxWAlfMXnrOdw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Q2Qk8Rtg; 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="Q2Qk8Rtg" Received: by smtp.kernel.org (Postfix) with ESMTPS id 02860C4AF10; Wed, 17 Jun 2026 08:32:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781685145; bh=H1VFUp3PjkKWJdD41MKRZH7D7dfv43n0A4wgkEm6UuY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Q2Qk8RtgTJ8MmIkDWSztRbTuyq0pn7PNLSBkOPFZLNcCgHNuLu+nE6IAyxO3HTOsL +FPl5dEtjoBIqKjFTbDZiQvmM8IWVf5Jhw1erxiYS+jv+CaCySowQL83E8ZzkDzTWj OcnSLJbzEER8OXJDAe0pUcsxwYle+CEziaEVkPbDjZhuaEyg2BuDWH1gy2i3KOG1A2 vskjgXhR5uSUx5e7Jtmk9MWNerp8kFu3BW5Szj1/AEtvgdwJGkOVtsJlaVtZ58YfdI PC2WjhYhO8i9XaPnUuiQBSIy+cE9M23qlCwdKw9anI53qNSiUZL5NcuC53d6X69BJZ AAjk3sU8/cXsA== 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 EA057CD98F3; Wed, 17 Jun 2026 08:32:24 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 17 Jun 2026 10:32:21 +0200 Subject: [PATCH v9 3/9] media: qcom: camss: csiphy-3ph: Use odd bits for configuring C-PHY lanes 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: <20260617-qcom-cphy-v9-3-83da8a8e4e44@ixit.cz> References: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> In-Reply-To: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> To: Robert Foss , Todor Tomov , Bryan O'Donoghue , Bryan O'Donoghue , Vladimir Zapolskiy , Mauro Carvalho Chehab , Luca Weiss , Petr Hodina , "Dr. Git" , Cory Keitz , Loic Poulain , Hans Verkuil , Nihal Kumar Gupta Cc: Frank Li , Konrad Dybcio , Kieran Bingham , Sakari Ailus , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3113; i=david@ixit.cz; h=from:subject:message-id; bh=TVUoRIJn5ULvYNpapsB4ZItCc34ZCZTZby6Hd3C8I2o=; b=owEBbAKT/ZANAwAIAWACP8TTSSByAcsmYgBqMluWfUjjVHlJpHyZz+U52zgc/28encT5gyJV8 k3wzOiWasWJAjIEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCajJblgAKCRBgAj/E00kg cv0ED/dLTzOO2m/vnWueadTUMzsABVmaeM3cQyuPE3xVZY137KcC7VvNmurVXuJN8leYMABbPpB A0iyzHSA1bIldJQhsgmZEkhI5nS1oiqNtkxaap2sorwUfWsMe7c8ev4tAh449rKMyj6Nt0XewSe q2WJ3Qq58H5SasqvQLjd5S31hF0E+zdShsGHGuk1yEPY2pSTmYYcJexROICPw31y5XPE9Y+MpvT Vz9DpBcKy8fPbsaCgBOmQqCewcA0Ry/+3odyFDQwH3SDYtFSIHmIWbWAvUJ2ffJ2EwsbQprt/38 2ghVRtlOVA3YIYUyvw+xyGp7DCKUvu5H0Mx2sCmjxR2OV2YHHPLpp5Ztg4pxYik/6IR84MbkDtU 5zhjbRIQVzuGBeDCf95b6UqJivDNtJkYt1hJrFe2jMhurluGntWIT9ltwS8w/uleRQ8D0vZqVx7 zDC6YdeiNtXB3Aezpf52p42WmB9lGwwd6hqWXntJsk92ilnqmJ0wj4kbNwqQL0QIiegPouV5sni qHztPAIam7CSSwDx7PwKzjsE+pUYXeRSyTf9EWsVVZCuUYlA+RJI/XU7DK2q8tfgTWQjUhJWi/E Wo6+zO9X7zRM7O8QITvfG1AVKraXqGkI5DC0awLb1siJMNPK+TFpPcQlI0scb7DmgkaNh+BY5nj 97dx7Oh76xwIw X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg So far, only D-PHY mode was supported, which uses even bits when enabling or masking lanes. For C-PHY configuration, the hardware instead requires using the odd bits. Since there can be unrecognized configuration allow returning failure. Acked-by: Cory Keitz Reviewed-by: Bryan O'Donoghue Signed-off-by: David Heidelberg --- .../platform/qcom/camss/camss-csiphy-3ph-1-0.c | 25 ++++++++++++++----= ---- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c b/dri= vers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c index 7c8c0e41bc62f..dfcd9ed2eb7a3 100644 --- a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c +++ b/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c @@ -9,16 +9,17 @@ */ =20 #include "camss.h" #include "camss-csiphy.h" =20 #include #include #include +#include =20 #define CSIPHY_3PH_LNn_CFG1(n) (0x000 + 0x100 * (n)) #define CSIPHY_3PH_LNn_CFG1_SWI_REC_DLY_PRG (BIT(7) | BIT(6)) #define CSIPHY_3PH_LNn_CFG2(n) (0x004 + 0x100 * (n)) #define CSIPHY_3PH_LNn_CFG2_LP_REC_EN_INT BIT(3) #define CSIPHY_3PH_LNn_CFG3(n) (0x008 + 0x100 * (n)) #define CSIPHY_3PH_LNn_CFG4(n) (0x00c + 0x100 * (n)) #define CSIPHY_3PH_LNn_CFG4_T_HS_CLK_MISS 0xa4 @@ -1108,23 +1109,32 @@ static void csiphy_gen2_config_lanes(struct csiphy_= device *csiphy, writel_relaxed(val, csiphy->base + r->reg_addr); if (r->delay_us) udelay(r->delay_us); } } =20 static u8 csiphy_get_lane_mask(struct csiphy_lanes_cfg *lane_cfg) { - u8 lane_mask; - int i; + u8 lane_mask =3D 0; + u8 offset =3D 0; =20 - lane_mask =3D CSIPHY_3PH_CMN_CSI_COMMON_CTRL5_CLK_ENABLE; + switch (lane_cfg->phy_cfg) { + case V4L2_MBUS_CSI2_CPHY: + offset =3D 1; + break; + case V4L2_MBUS_CSI2_DPHY: + lane_mask =3D CSIPHY_3PH_CMN_CSI_COMMON_CTRL5_CLK_ENABLE; + break; + default: + break; + } =20 - for (i =3D 0; i < lane_cfg->num_data; i++) - lane_mask |=3D BIT(lane_cfg->data[i].pos * 2); + for (int i =3D 0; i < lane_cfg->num_data; i++) + lane_mask |=3D BIT((lane_cfg->data[i].pos * 2) + offset); =20 return lane_mask; } =20 static bool csiphy_is_gen2(u32 version) { bool ret =3D false; =20 @@ -1155,20 +1165,17 @@ static void csiphy_lanes_enable(struct csiphy_devic= e *csiphy, struct csiphy_lanes_cfg *c =3D &cfg->csi2->lane_cfg; struct csiphy_device_regs *regs =3D csiphy->regs; u8 settle_cnt; u8 val; int i; =20 settle_cnt =3D csiphy_settle_cnt_calc(link_freq, csiphy->timer_clk_rate); =20 - val =3D CSIPHY_3PH_CMN_CSI_COMMON_CTRL5_CLK_ENABLE; - for (i =3D 0; i < c->num_data; i++) - val |=3D BIT(c->data[i].pos * 2); - + val =3D csiphy_get_lane_mask(c); writel_relaxed(val, csiphy->base + CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 5)); =20 val =3D CSIPHY_3PH_CMN_CSI_COMMON_CTRL6_COMMON_PWRDN_B; writel_relaxed(val, csiphy->base + CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 6)); =20 val =3D 0x02; --=20 2.53.0 From nobody Sun Jun 21 15:57:43 2026 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 59ABD38AC64; Wed, 17 Jun 2026 08:32:25 +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=1781685145; cv=none; b=p0xP+QFUu/I9cPg0vbDpV7AEdYqnxVhmm02N6QcPRnpB+DZP85uy3dpno8K8tDohK2eSflStI2+/Wv51eXqG/KUTN6X52HmRpaqZL5ROIDCOc4PGuV9Vj844/k7z/KQwbaUeNSPx/WMATQ7TWgToAoWxlHcsvJLREzauKgjhEx0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781685145; c=relaxed/simple; bh=ZtkKxd60xEW43VntlvY4sLAKHlCHp3eULW5s/cjLDhk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=e6+oCX2bcvKtNila1rc2U2dBzJ6B+rT4dfXIwAbC/XnYF9aMa35yMinCeyrDNbCLeaj6qXmCLoBR570ktM1ynvgiClM60gXXEFrOfXKRLjC0Z6IkgncJUagnmWuEgTITZJoeLTwmtN6v+Q22/fiVmxmq/mFtJnenL+RtpXRR3DE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tutiFQwt; 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="tutiFQwt" Received: by smtp.kernel.org (Postfix) with ESMTPS id 11A05C4AF13; Wed, 17 Jun 2026 08:32:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781685145; bh=ZtkKxd60xEW43VntlvY4sLAKHlCHp3eULW5s/cjLDhk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=tutiFQwtgZ+v6/2YUdxNfQSpD4I20qVdhro4yg7u3dqWEagsfALwIYaF8aizCtmu+ gs7LoDJt0+4T15duH6Zgwbz4H13oqN0PWZWrcTcMzlkPZ4vvkFc/ywhPtoJAIRMYm+ hHjfbH6/meDsgRw8IObqUx2jefA+6Ox5urZcMZmB5tG77GM1j4PvoPoDNb+6ZODyE4 pxiVp1VPPwEW1Y7k4948ufmRbVHA2fT8j0m0dZw/KUw+zytvFApOgrGbGOLDlSkCmc tid2h8DmvdJqxiu+o5Iko4OLcBN0khjpagwoakT/XKu/XJxhGh+V0BlkXWzO8pt35o KqQ0EJkD+lYqA== 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 05CB4CD98F0; Wed, 17 Jun 2026 08:32:25 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 17 Jun 2026 10:32:22 +0200 Subject: [PATCH v9 4/9] media: qcom: camss: Prepare CSID for C-PHY support 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: <20260617-qcom-cphy-v9-4-83da8a8e4e44@ixit.cz> References: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> In-Reply-To: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> To: Robert Foss , Todor Tomov , Bryan O'Donoghue , Bryan O'Donoghue , Vladimir Zapolskiy , Mauro Carvalho Chehab , Luca Weiss , Petr Hodina , "Dr. Git" , Cory Keitz , Loic Poulain , Hans Verkuil , Nihal Kumar Gupta Cc: Frank Li , Konrad Dybcio , Kieran Bingham , Sakari Ailus , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3790; i=david@ixit.cz; h=from:subject:message-id; bh=Dwf77+B9c0r+gobTTVReD8yJa9lkMli7TZg+cx0MdpU=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqMluWFYkHjfkv959FzpqVXGYGJGYMhehLE8ROx qqHK4d9ns2JAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCajJblgAKCRBgAj/E00kg cmLJD/416StAXqxmLPnYwExvzmGFfz3Qjck+r9SIzKZKkt8yaZU2194R0ZuyON+fGwO1F3NtaIo I7qWWwkOb62eslFHpNHW+OJVPtoh0NqM67gbtC4lMP/T6Gz6AP8xTI3G8/Iuc00zWwIUtxcmHUM xY1BQRh7C1FNth3zQ/svlW/3EMiErXEOeiunRCGwDDaWVne7+oE+HmZUji54qUKuLxWs1cZAxtV H/jd4j5e+9axSO/nySWILGUnBVYPn2Rcn9oieoacwfcahZ5Rg+4zpstoxSRn1votE1NA27Ulysc vM+bFiIlkJ2aBqtgllCMIyA86AieVFgwJhTiXypo0IosXDVyyxE3ghGR0Lc+TcAqkb8D8CLBy46 CPkjVLtWYXTtG9MrC0dUaQc6oq6r3/93Gv1IWAEUoj0LkIUQB9uwj7Ha8e4+8A7dR868bpzv5Hw A7kRYGGF6i1EZtCrfdXzYPCTMRvR2MAeqCgLzqzxXSaVNYEhzzSbhPFsLiZSxiL65n9Cdjo8FE7 S0J3VmtBxp+RT9JE7VN99DESEupyQeGg61/7Fby7YYFAWs750lluaF4p/+drR7zaHmVt2vIZYV0 E+h8co6Q2wnREAQplJSUZSsbbRvgEmIyykqmMvGKbrc/46z7RFMygp4oWa1NF5Me/OQzAU/oAxR oL8pe4XHy54UGcw== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Inherit C-PHY information from CSIPHY, so we can configure CSID properly. CSI2_RX_CFG0_PHY_TYPE_SEL must be set to 1, when C-PHY mode is used. Reviewed-by: Bryan O'Donoghue Acked-by: Cory Keitz Reviewed-by: Frank Li Signed-off-by: David Heidelberg --- drivers/media/platform/qcom/camss/camss-csid-gen2.c | 1 + drivers/media/platform/qcom/camss/camss-csid.c | 5 +++++ drivers/media/platform/qcom/camss/camss-csid.h | 6 ++++++ 3 files changed, 12 insertions(+) diff --git a/drivers/media/platform/qcom/camss/camss-csid-gen2.c b/drivers/= media/platform/qcom/camss/camss-csid-gen2.c index eadcb2f7e3aaa..a5b406cc8ead3 100644 --- a/drivers/media/platform/qcom/camss/camss-csid-gen2.c +++ b/drivers/media/platform/qcom/camss/camss-csid-gen2.c @@ -178,16 +178,17 @@ static void __csid_configure_rx(struct csid_device *c= sid, int val; =20 if (!lane_cnt) lane_cnt =3D 4; =20 val =3D (lane_cnt - 1) << CSI2_RX_CFG0_NUM_ACTIVE_LANES; val |=3D phy->lane_assign << CSI2_RX_CFG0_DL0_INPUT_SEL; val |=3D phy->csiphy_id << CSI2_RX_CFG0_PHY_NUM_SEL; + val |=3D csid->phy.phy_sel << CSI2_RX_CFG0_PHY_TYPE_SEL; writel_relaxed(val, csid->base + CSID_CSI2_RX_CFG0); =20 val =3D 1 << CSI2_RX_CFG1_PACKET_ECC_CORRECTION_EN; if (vc > 3) val |=3D 1 << CSI2_RX_CFG1_VC_MODE; val |=3D 1 << CSI2_RX_CFG1_MISR_EN; writel_relaxed(val, csid->base + CSID_CSI2_RX_CFG1); } diff --git a/drivers/media/platform/qcom/camss/camss-csid.c b/drivers/media= /platform/qcom/camss/camss-csid.c index 48459b46a981b..bcc34ac9dd212 100644 --- a/drivers/media/platform/qcom/camss/camss-csid.c +++ b/drivers/media/platform/qcom/camss/camss-csid.c @@ -1286,16 +1286,21 @@ static int csid_link_setup(struct media_entity *ent= ity, /* do no allow a link from CSIPHY to CSID */ if (!csiphy->cfg.csi2) return -EPERM; =20 csid->phy.csiphy_id =3D csiphy->id; =20 lane_cfg =3D &csiphy->cfg.csi2->lane_cfg; csid->phy.lane_cnt =3D lane_cfg->num_data; + if (lane_cfg->phy_cfg =3D=3D V4L2_MBUS_CSI2_CPHY) + csid->phy.phy_sel =3D CSID_PHY_SEL_CPHY; + else + csid->phy.phy_sel =3D CSID_PHY_SEL_DPHY; + csid->phy.lane_assign =3D csid_get_lane_assign(lane_cfg, lane_cfg->num_= data); csid->tpg_linked =3D false; } } /* Decide which virtual channels to enable based on which source pads are= enabled */ if (local->flags & MEDIA_PAD_FL_SOURCE) { struct v4l2_subdev *sd =3D media_entity_to_v4l2_subdev(entity); struct csid_device *csid =3D v4l2_get_subdevdata(sd); diff --git a/drivers/media/platform/qcom/camss/camss-csid.h b/drivers/media= /platform/qcom/camss/camss-csid.h index 5296b10f6bac8..e65590b0df69f 100644 --- a/drivers/media/platform/qcom/camss/camss-csid.h +++ b/drivers/media/platform/qcom/camss/camss-csid.h @@ -39,16 +39,21 @@ enum csid_testgen_mode { CSID_PAYLOAD_MODE_USER_SPECIFIED =3D 6, CSID_PAYLOAD_MODE_NUM_SUPPORTED_GEN1 =3D 6, /* excluding disabled */ CSID_PAYLOAD_MODE_COMPLEX_PATTERN =3D 7, CSID_PAYLOAD_MODE_COLOR_BOX =3D 8, CSID_PAYLOAD_MODE_COLOR_BARS =3D 9, CSID_PAYLOAD_MODE_NUM_SUPPORTED_GEN2 =3D 9, /* excluding disabled */ }; =20 +enum csid_phy_sel { + CSID_PHY_SEL_DPHY =3D 0, + CSID_PHY_SEL_CPHY =3D 1 +}; + struct csid_format_info { u32 code; u8 data_type; u8 decode_format; u8 bpp; u8 spp; /* bus samples per pixel */ }; =20 @@ -65,16 +70,17 @@ struct csid_testgen_config { }; =20 struct csid_phy_config { u8 csiphy_id; u8 lane_cnt; u32 lane_assign; u32 en_vc; u8 need_vc_update; + enum csid_phy_sel phy_sel; }; =20 struct csid_device; =20 struct csid_hw_ops { /* * configure_stream - Configures and starts CSID input stream * @csid: CSID device --=20 2.53.0 From nobody Sun Jun 21 15:57:43 2026 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 6D7283905F0; Wed, 17 Jun 2026 08:32:25 +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=1781685145; cv=none; b=UDr4pu/COCxd0EpC0dYAdb8f2uHHI2ZFaTTPaitfCUxhfFl6qAcg+I2Pl5eixbmVPwWzq0zOZWjE1dLLDN3ScFnqBkBboVHQhE6Q2hcyaW4Ejlgo1tT00aVMPOfMIzjP+6lDoGrrvO1Ly4eqyqnfF0eROlZWkVamptTg+ok08sg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781685145; c=relaxed/simple; bh=VhZv2kSpvcCOIx43ZVUdlzppnSnwY6aJLztdMc3WHoE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ob0Vyv+iiZCKkngXvqhaJ3xqf/wli6jl3pz6Av+5bcnlKIvxexvSPALJ4EMfzUL5SrUZ/+T2Exda70rRARhio9tbwvSNqbOPIsUtlqgCMDpztyN2QUlgrvGVp4dEjAjZHzpcbYzTYFy+TK8xGH6C4C571Qm/WeTz/oNmjJNVaVU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uSNSuBua; 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="uSNSuBua" Received: by smtp.kernel.org (Postfix) with ESMTPS id 20DD3C4AF4D; Wed, 17 Jun 2026 08:32:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781685145; bh=VhZv2kSpvcCOIx43ZVUdlzppnSnwY6aJLztdMc3WHoE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=uSNSuBua9HM7RjnDeeOJ+TijT2AG6Tr/swAPjy5mOvFCWi2b/yqmBMePg1OsPyyer 70+hhh79yqyIUOo65beEEvb7A5g7Q/FLOjBgcCVRsgvUviI1ko/SiZ0tIuL4dwpGbP jxb91t/zJv7eSlplu7lIHFttYcrTCLPhkygzpQmPsC44Rqqhg3wnDBZ4J6082XIPgL MlDo2MdsnMteEZOs33eTo7ydjdeATgkONIyfY7XreAG2WXHiVTi94GIJsbPW27C6fC G75PHX+QGQbWst75XXrq5zryDNK6CbEE5PHOzRkBLwCIP97lc6/MwiyeNsslMA8GK/ gT9niH+gFuzRQ== 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 18922CD98EE; Wed, 17 Jun 2026 08:32:25 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 17 Jun 2026 10:32:23 +0200 Subject: [PATCH v9 5/9] media: qcom: camss: Initialize lanes after lane configuration is available 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: <20260617-qcom-cphy-v9-5-83da8a8e4e44@ixit.cz> References: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> In-Reply-To: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> To: Robert Foss , Todor Tomov , Bryan O'Donoghue , Bryan O'Donoghue , Vladimir Zapolskiy , Mauro Carvalho Chehab , Luca Weiss , Petr Hodina , "Dr. Git" , Cory Keitz , Loic Poulain , Hans Verkuil , Nihal Kumar Gupta Cc: Frank Li , Konrad Dybcio , Kieran Bingham , Sakari Ailus , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=6446; i=david@ixit.cz; h=from:subject:message-id; bh=g/o3rVD1r6gJeV04eBIyOcKsTC0b/LLqeKtjGiZ/dKQ=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqMluWJXNE7OI012Tt3+nj33l2tX8JIVN0wy6KJ +j+NcRIGpmJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCajJblgAKCRBgAj/E00kg clWIEADMywTY8fvM7Z+A1XyGydDJRt7ajj4bCO6ZuKA6fwOExPef1xeV0/mFFNV2+AjvGM32HqL Hv7Epfh+UhSpjs/Hj13W0M7UuPnoVu3J8rSe3TW93kkSDd5s8XcRFLtNt69+NfqNTvnerEIYodV pCcvSrHJmU8bcxviAWzVljhyWAargXsN+5OROHr9SaQIRLF67jlLCCVXhNlA4kJ8DjniKrPKiyy CCzoR3RCdvsYBbDTr/5MItYGdjkPCz8WIyMsW79Z5OBN3vACDUC42RIMnSw6/+4igwcqgnJ2TmJ b/5lvPSEl1PlAXroPiOQCmpKSvqMTWhXOblPpPlJvsCO/zbczXJSDMbErJe+Y5jVD2Ay0zBDyuS FDK4TfAmz0ScueJLKGsHF7MW3lVsgHr7Y8QB1fr9seaidDJy5zDwPvGe53GSsiCipHHLVnWkaGI 8sUIQkN42CKB8wdoddIasDMDkuXtb6THZ0AuD8IfuIlrEIvvu4nlxWiWViG55b+UcR82DB5K2n0 s26jfGbT54I37Zp0Z6Y/JMeIkID1o3wcskWzWOk+uSHyco24jPIPpcCTMgpcN/8FsgOFPlfyx2i 4B7GaaJhrcE1w8BMsiihHgGoW/oE1tq+oQtYkieDTbFxVnd4l4vIoJ4dT6Q8H1L2PSdjnwPja2q BjSKobn6cpQwUyg== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg The lanes must not be initialized before the driver has access to the lane configuration, as it depends on whether D-PHY or C-PHY mode is in use. Move the lane initialization to csiphy_lanes_enable which is called when the configuration structures are available. Co-developed-by: Petr Hodina Signed-off-by: Petr Hodina Reviewed-by: Bryan O'Donoghue Acked-by: Cory Keitz Reviewed-by: Frank Li Signed-off-by: David Heidelberg --- .../platform/qcom/camss/camss-csiphy-3ph-1-0.c | 131 +++++++++++++++--= ---- 1 file changed, 93 insertions(+), 38 deletions(-) diff --git a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c b/dri= vers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c index dfcd9ed2eb7a3..5c07aa9d19c51 100644 --- a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c +++ b/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c @@ -1163,16 +1163,108 @@ static void csiphy_lanes_enable(struct csiphy_devi= ce *csiphy, s64 link_freq, u8 lane_mask) { struct csiphy_lanes_cfg *c =3D &cfg->csi2->lane_cfg; struct csiphy_device_regs *regs =3D csiphy->regs; u8 settle_cnt; u8 val; int i; =20 + switch (csiphy->camss->res->version) { + case CAMSS_845: + if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_DPHY) { + regs->lane_regs =3D &lane_regs_sdm845[0]; + regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sdm845); + } else if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_CPHY) { + regs->lane_regs =3D NULL; + regs->lane_array_size =3D 0; + } + break; + case CAMSS_2290: + case CAMSS_6150: + if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_DPHY) { + regs->lane_regs =3D &lane_regs_qcm2290[0]; + regs->lane_array_size =3D ARRAY_SIZE(lane_regs_qcm2290); + } else if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_CPHY) { + regs->lane_regs =3D NULL; + regs->lane_array_size =3D 0; + } + break; + case CAMSS_6350: + if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_DPHY) { + regs->lane_regs =3D &lane_regs_sm6350[0]; + regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sm6350); + } else if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_CPHY) { + regs->lane_regs =3D NULL; + regs->lane_array_size =3D 0; + } + break; + case CAMSS_7280: + case CAMSS_8250: + if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_DPHY) { + regs->lane_regs =3D &lane_regs_sm8250[0]; + regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sm8250); + } else if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_CPHY) { + regs->lane_regs =3D NULL; + regs->lane_array_size =3D 0; + } + break; + case CAMSS_8280XP: + if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_DPHY) { + regs->lane_regs =3D &lane_regs_sc8280xp[0]; + regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sc8280xp); + } else if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_CPHY) { + regs->lane_regs =3D NULL; + regs->lane_array_size =3D 0; + } + break; + case CAMSS_X1E80100: + if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_DPHY) { + regs->lane_regs =3D &lane_regs_x1e80100[0]; + regs->lane_array_size =3D ARRAY_SIZE(lane_regs_x1e80100); + } else if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_CPHY) { + regs->lane_regs =3D NULL; + regs->lane_array_size =3D 0; + } + break; + case CAMSS_8550: + if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_DPHY) { + regs->lane_regs =3D &lane_regs_sm8550[0]; + regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sm8550); + } else if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_CPHY) { + regs->lane_regs =3D NULL; + regs->lane_array_size =3D 0; + } + break; + case CAMSS_8650: + if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_DPHY) { + regs->lane_regs =3D &lane_regs_sm8650[0]; + regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sm8650); + } else if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_CPHY) { + regs->lane_regs =3D NULL; + regs->lane_array_size =3D 0; + } + break; + case CAMSS_8300: + case CAMSS_8775P: + if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_DPHY) { + regs->lane_regs =3D &lane_regs_sa8775p[0]; + regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sa8775p); + } else if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_CPHY) { + regs->lane_regs =3D NULL; + regs->lane_array_size =3D 0; + } + break; + default: + break; + } + + if (!regs->lane_regs) + WARN_ONCE(1, "Missing lane_regs definition!\n"); + settle_cnt =3D csiphy_settle_cnt_calc(link_freq, csiphy->timer_clk_rate); =20 val =3D csiphy_get_lane_mask(c); writel_relaxed(val, csiphy->base + CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 5)); =20 val =3D CSIPHY_3PH_CMN_CSI_COMMON_CTRL6_COMMON_PWRDN_B; writel_relaxed(val, csiphy->base + @@ -1215,63 +1307,26 @@ static int csiphy_init(struct csiphy_device *csiphy) struct device *dev =3D csiphy->camss->dev; struct csiphy_device_regs *regs; =20 regs =3D devm_kmalloc(dev, sizeof(*regs), GFP_KERNEL); if (!regs) return -ENOMEM; =20 csiphy->regs =3D regs; - regs->offset =3D 0x800; regs->common_status_offset =3D 0xb0; =20 switch (csiphy->camss->res->version) { - case CAMSS_845: - regs->lane_regs =3D &lane_regs_sdm845[0]; - regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sdm845); - break; - case CAMSS_2290: - case CAMSS_6150: - regs->lane_regs =3D &lane_regs_qcm2290[0]; - regs->lane_array_size =3D ARRAY_SIZE(lane_regs_qcm2290); - break; - case CAMSS_6350: - regs->lane_regs =3D &lane_regs_sm6350[0]; - regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sm6350); - break; - case CAMSS_7280: - case CAMSS_8250: - regs->lane_regs =3D &lane_regs_sm8250[0]; - regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sm8250); - break; - case CAMSS_8280XP: - regs->lane_regs =3D &lane_regs_sc8280xp[0]; - regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sc8280xp); - break; case CAMSS_X1E80100: - regs->lane_regs =3D &lane_regs_x1e80100[0]; - regs->lane_array_size =3D ARRAY_SIZE(lane_regs_x1e80100); - regs->offset =3D 0x1000; - break; case CAMSS_8550: - regs->lane_regs =3D &lane_regs_sm8550[0]; - regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sm8550); - regs->offset =3D 0x1000; - break; case CAMSS_8650: - regs->lane_regs =3D &lane_regs_sm8650[0]; - regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sm8650); regs->offset =3D 0x1000; break; - case CAMSS_8300: - case CAMSS_8775P: - regs->lane_regs =3D &lane_regs_sa8775p[0]; - regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sa8775p); - break; default: + regs->offset =3D 0x800; break; } =20 return 0; } =20 const struct csiphy_hw_ops csiphy_ops_3ph_1_0 =3D { .get_lane_mask =3D csiphy_get_lane_mask, --=20 2.53.0 From nobody Sun Jun 21 15:57:43 2026 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 6CDEA39022E; Wed, 17 Jun 2026 08:32:25 +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=1781685145; cv=none; b=rm2S1ekmIkQmqFj9U2eCdS34Y7OTTWFCdg092bHRLJ5QW8DyrjhjpIpFUIA18Pe/ENIu5GbdF/HUxdbYdhyRCtwNI7ddygit5inpF1KRt8M0SXKEKr4yP0BR86uWViQ8rzdJ2TKkiotWgeQ4fO/0USDfXFRZ5y77dimoiqiEaHM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781685145; c=relaxed/simple; bh=/Ld33kPcldA/4ZgF6WMG5MlfWdjJUlH247byvDhDQLY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dLikCLQOwMIbVBq4omZ1WHriMebwdDz06BijQ1Zk/fkvLvoXRWl8gf3uZdFKqGJJ/6eGOJFPPMn+QHfm4vwhX/UslkNeCJegZiCEQxjQ0CWEUfE8sUEzoa8/MK0obbV820KSRapnacIXTl39atpmo+bcuTW2pvmpZsILMocmzfg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IGSn6ZG9; 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="IGSn6ZG9" Received: by smtp.kernel.org (Postfix) with ESMTPS id 37307C4AF12; Wed, 17 Jun 2026 08:32:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781685145; bh=/Ld33kPcldA/4ZgF6WMG5MlfWdjJUlH247byvDhDQLY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=IGSn6ZG927VPoiF3XdL5hVAfhcUg7Lf6fVS47tlfUaRZTI8i1WxV3I0wz4GXclHpQ v+JbNEjIseU8yEWTm54An3YO0af6szbzzbA3TzEG3yTbf0G/AqFmIWU3zHSVtcdxTs qTYhIHbcKQ+Oinz+WiL6Zt8J4LLbvUhBkl4wmo2kzCNXG+yPCGg4HWwsHhocWIfmyC amOHOY9uA9szEhX6Cw3NlCF2Xmch4LTmom1kwSu7VNCcZwACLOsuI90lPFcZYMc/jB CCjas1XQt7rAw6wMkEkch5HoU4cJWQ3WABfq9qSPbvIcwB653Q46zq1Ag8NrRlTpcd BTpNBSndkqKwg== 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 2DB2BCD98E2; Wed, 17 Jun 2026 08:32:25 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 17 Jun 2026 10:32:24 +0200 Subject: [PATCH v9 6/9] media: qcom: camss: csiphy-3ph: Add Gen2 v1.1 MIPI CSI-2 C-PHY init 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: <20260617-qcom-cphy-v9-6-83da8a8e4e44@ixit.cz> References: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> In-Reply-To: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> To: Robert Foss , Todor Tomov , Bryan O'Donoghue , Bryan O'Donoghue , Vladimir Zapolskiy , Mauro Carvalho Chehab , Luca Weiss , Petr Hodina , "Dr. Git" , Cory Keitz , Loic Poulain , Hans Verkuil , Nihal Kumar Gupta Cc: Frank Li , Konrad Dybcio , Kieran Bingham , Sakari Ailus , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=8349; i=david@ixit.cz; h=from:subject:message-id; bh=dy80+1abSdK1pREaR0ATlTnDBKglSu5VoN7y50Mk/ho=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqMluW3//nOB7BCHTcl3tH0UauCJr3elCVwfzeX orBIHtqvdSJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCajJblgAKCRBgAj/E00kg corvD/4+3ygQfKQ7VaW5BTHuHjM9Xo9dzMuw1KZXRI7fv0bxcWjM3jqcEXnsUAw9ys1pVDER1s8 Nyjbvaye+ZZdcJ5+rAlWGqDjnhkcFxayicAHci+LOqNpdKhqn3AXPURPd8Pbcey3u5qb/DzaUh9 rH56lPqjUXTK9MfiY4ENZAWrcmVJyTA2b0olofAm4U8HXL4d9643JeKB+WnTPxvU10wR7hI6vIR JMIJ6oOypwvL93Q00J0rPrjPvSXNTE1nGLZozOHo5PBg3Ql3XVb5JE68Qld7STPWNxmrrZMuTK5 ZA/FPTLCQXhoIju//KBzezPNrRQ2O7Nfjey4iz95+MT3iqVX6EO+ugVSg5raVdhrMV/HuOIDJdp TziUEt+4jWMTdyelHrOUkpo+8xQSmx3Lqzjw9JTw+AsYxVs44UZn2ab40L0SEu7CCkdhtwocYy9 13OoXrqa7B0eirw5JAq98rapvRY46riEVfrfGm8MrFCxkKMtpLEU0Lsmy/dE/FOfSUmIP3qdEqx D7KjBQYwo0Ffl0j401/3SoTp6uEJvne2nXIE9n+uhHm8j3GYYKgdHCy5fUDuPPNLbWKfLG8dnE0 Z6lNGG9r/EghV22McRUha7UK1BQkn5gLiVpF/uetXABTfl0W8ZYa5COapHgLaeLUnMeEUP1eNQE QA2Ti1XUTq/2HMw== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Add a PHY configuration sequence for the sdm845 which uses a Qualcomm Gen 2 version 1.1 CSI-2 PHY. The PHY can be configured as two phase or three phase in C-PHY or D-PHY mode. This configuration supports three-phase C-PHY mode. Acked-by: Cory Keitz Signed-off-by: David Heidelberg --- .../platform/qcom/camss/camss-csiphy-3ph-1-0.c | 78 ++++++++++++++++++= +++- 1 file changed, 76 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c b/dri= vers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c index 5c07aa9d19c51..83de89a88dbb1 100644 --- a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c +++ b/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c @@ -45,16 +45,23 @@ =20 #define CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(offset, n) ((offset) + 0x4 * (n)) #define CSIPHY_3PH_CMN_CSI_COMMON_CTRL5_CLK_ENABLE BIT(7) #define CSIPHY_3PH_CMN_CSI_COMMON_CTRL6_COMMON_PWRDN_B BIT(0) #define CSIPHY_3PH_CMN_CSI_COMMON_CTRL6_SHOW_REV_ID BIT(1) #define CSIPHY_3PH_CMN_CSI_COMMON_STATUSn(offset, common_status_offset, n)= \ ((offset) + (common_status_offset) + 0x4 * (n)) =20 +#define CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(n) \ + (0x0100 + ((n) * 0x4)) +#define CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(n) \ + (0x0300 + ((n) * 0x4)) +#define CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(n) \ + (0x0500 + ((n) * 0x4)) + #define CSIPHY_DEFAULT_PARAMS 0 #define CSIPHY_LANE_ENABLE 1 #define CSIPHY_SETTLE_CNT_LOWER_BYTE 2 #define CSIPHY_SETTLE_CNT_HIGHER_BYTE 3 #define CSIPHY_DNP_PARAMS 4 #define CSIPHY_2PH_REGS 5 #define CSIPHY_3PH_REGS 6 #define CSIPHY_SKEW_CAL 7 @@ -141,16 +148,17 @@ csiphy_lane_regs lane_regs_sa8775p[] =3D { {0x0460, 0xFD, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0464, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x065C, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0660, 0xFD, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0664, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }; =20 /* GEN2 1.0 2PH */ +/* 5 entries: clock + 4 lanes */ static const struct csiphy_lane_regs lane_regs_sdm845[] =3D { {0x0004, 0x0C, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x002C, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0034, 0x0F, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x001C, 0x0A, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0014, 0x60, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0028, 0x00, 0x00, CSIPHY_DNP_PARAMS}, @@ -215,16 +223,82 @@ csiphy_lane_regs lane_regs_sdm845[] =3D { {0x0608, 0x00, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, {0x060C, 0x00, 0x00, CSIPHY_DNP_PARAMS}, {0x0610, 0x52, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0638, 0xFE, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0660, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0664, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }; =20 +/* GEN2 1.0 3PH */ +/* 3 entries: 3 lanes (C-PHY) */ +static const struct +csiphy_lane_regs lane_regs_sdm845_3ph[] =3D { + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(23), 0x43, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(26), 0xa0, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(27), 0x25, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(1), 0x06, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(3), 0x12, 0x00, CSIPHY_SETTLE_CNT_LOWER_B= YTE}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(2), 0x00, 0x00, CSIPHY_SETTLE_CNT_HIGHER_= BYTE}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(5), 0x20, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(20), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(6), 0x3e, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(7), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(8), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(9), 0x7f, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(10), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(11), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(17), 0x12, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(24), 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(51), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(25), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(55), 0x51, 0x00, CSIPHY_DEFAULT_PARAMS}, + + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(23), 0x43, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(26), 0xa0, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(27), 0x25, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(1), 0x06, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(3), 0x12, 0x00, CSIPHY_SETTLE_CNT_LOWER_B= YTE}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(2), 0x00, 0x00, CSIPHY_SETTLE_CNT_HIGHER_= BYTE}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(5), 0x20, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(20), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(6), 0x3e, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(7), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(8), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(9), 0x7f, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(10), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(11), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(17), 0x12, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(24), 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(51), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(25), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(55), 0x51, 0x00, CSIPHY_DEFAULT_PARAMS}, + + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(23), 0x43, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(26), 0xa0, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(27), 0x25, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(1), 0x06, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(3), 0x12, 0x00, CSIPHY_SETTLE_CNT_LOWER_B= YTE}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(2), 0x00, 0x00, CSIPHY_SETTLE_CNT_HIGHER_= BYTE}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(5), 0x20, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(20), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(6), 0x3e, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(7), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(8), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(9), 0x7f, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(10), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(11), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(17), 0x12, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(24), 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(51), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(25), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(55), 0x51, 0x00, CSIPHY_DEFAULT_PARAMS}, + +}; + /* GEN2 1.1 2PH */ static const struct csiphy_lane_regs lane_regs_sc8280xp[] =3D { {0x0004, 0x0C, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x002C, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0034, 0x0F, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x001C, 0x0A, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0014, 0x60, 0x00, CSIPHY_DEFAULT_PARAMS}, @@ -1169,18 +1243,18 @@ static void csiphy_lanes_enable(struct csiphy_devic= e *csiphy, int i; =20 switch (csiphy->camss->res->version) { case CAMSS_845: if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_DPHY) { regs->lane_regs =3D &lane_regs_sdm845[0]; regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sdm845); } else if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_CPHY) { - regs->lane_regs =3D NULL; - regs->lane_array_size =3D 0; + regs->lane_regs =3D &lane_regs_sdm845_3ph[0]; + regs->lane_array_size =3D ARRAY_SIZE(lane_regs_sdm845_3ph); } break; case CAMSS_2290: case CAMSS_6150: if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_DPHY) { regs->lane_regs =3D &lane_regs_qcm2290[0]; regs->lane_array_size =3D ARRAY_SIZE(lane_regs_qcm2290); } else if (c->phy_cfg =3D=3D V4L2_MBUS_CSI2_CPHY) { --=20 2.53.0 From nobody Sun Jun 21 15:57:43 2026 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 6F0813909AB; Wed, 17 Jun 2026 08:32:25 +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=1781685145; cv=none; b=Scpf6L3UE55TbSzCQTFVdSMv6BbdnTgXBowDtruRI2mXd8Gp1x8qD0SinmtjIlb3+mJJI00FqKXUr4N/+6HdWhJ2mQcL0CohPGlFWS+Ns2oPmy4AbCWgbpiKcAgycioTAMjER4bHBcOXNM9spF9j9kair0/VPHLX7Xqwjo5rpjw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781685145; c=relaxed/simple; bh=Hmb4bUwpZRDfkAIAKiklux/fxZdU9O/GSSXBmJriI4A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=F+CF+eWeyMyJR9/gMIT52b3SXsL/liXohdo19mW+VHi7KnPowK4nLhwe17VmjmAJWz0igXKIPfO4+1svQKRIC4K+1Kj1+cfMfOeeUEyhRDQYeadTati9kP/wx/kSeHInXMFRXL2SLx/1rw86k+98yFcOlN1UPVqss+WYuQArgC0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aiyNxvjI; 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="aiyNxvjI" Received: by smtp.kernel.org (Postfix) with ESMTPS id 46F9AC4AF1A; Wed, 17 Jun 2026 08:32:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781685145; bh=Hmb4bUwpZRDfkAIAKiklux/fxZdU9O/GSSXBmJriI4A=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=aiyNxvjIGVhkGqgzwHpWuFmGIevgSetqiIErlGPWPtzG9ZPoRPwHq4uxJWjvGtqPW HDLv1E/iWTJ5aHeiJJ/eR622sxJp5iDgS7ZqTriSaGqfe2a5hz0ptpd4KSiLpl3eJ7 qt8h9WgNzj+SP4YpuJffHASqGX5UfXdz+3eez9ZYWS/rAlyRxtOJhwXxa3rF6bNEDU e2K50a9Wbdz3VFbzxYYsQi1JWIFzHIo+/FTnc8G4fWDHsVdSw8+zKkIEtp6s7J8jgE v2mvg13h03wyybVeTNMgQTrvkvbROqCd7ZBQwb5zCLzhkHFg4KrQ4P+zIzX4mUkV6X wkcmZGgvqpgVA== 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 3F0B3CD98EE; Wed, 17 Jun 2026 08:32:25 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 17 Jun 2026 10:32:25 +0200 Subject: [PATCH v9 7/9] media: qcom: camss: csiphy-3ph: Update Gen2 v1.1 MIPI CSI-2 C-PHY init 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: <20260617-qcom-cphy-v9-7-83da8a8e4e44@ixit.cz> References: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> In-Reply-To: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> To: Robert Foss , Todor Tomov , Bryan O'Donoghue , Bryan O'Donoghue , Vladimir Zapolskiy , Mauro Carvalho Chehab , Luca Weiss , Petr Hodina , "Dr. Git" , Cory Keitz , Loic Poulain , Hans Verkuil , Nihal Kumar Gupta Cc: Frank Li , Konrad Dybcio , Kieran Bingham , Sakari Ailus , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=6215; i=david@ixit.cz; h=from:subject:message-id; bh=bHMX4//aWDpheSP2KzZh84W22nyuHR1zfC/sMVCosog=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqMluWhCc5z9Gz0UVdg2a6tjS0pMqky8nvMsJbb XaUL/ukiH6JAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCajJblgAKCRBgAj/E00kg cuAJD/9pEpvwWVG7DlmycDK8pig9+TCMcqIMwWwsmRV9HKCybzwieA0AZgqQjFoYdffr0WIgWIs CTfEeUy7DpMFxp7MqAVmogPOF1xw0FMJkqEZY82U0MII4S+6HPkriwyA7+360qGjQRaNPXgfVR1 uHGdzRyXDfbTi0co+fNxPKD0ETiK/ssHvSy1vo9YL2FGI69CAEIaqv6AE3Pz5VkDQbCC1uK/RE9 nxVSay+neRKoAulKcOz9jh75QAsUKfMFgZyPSJ255kp8BpauMoN0xRAEtGvs7o5CA7uDBihPxC5 DEHECKm+UW2yUb72aE3UVYXo6l3DJpbCQOFmIrBGSjr1slRk1Sc4LG0Tsl7Clo0MUJirEqinYpF TDqN5eVravwyqQnhHTEZxvNjCBE77Te8x9SObq/iIxCEjkORKfeGMDvbKHDgmLpq1RF4fi/1Rdq +eotgRENin87JuR6YrKZdXYJv2H67S8ShVkphkrgVx44+yFGAlMXvoyXX+hXQ8/fFpzFBmzR2DI xuggEHYaS0CX2Pljubj6SRz2FhFG/teyt8wg0hmLpvzym8UP4HYY2/yoGL6woSDZw8DrAuRXyVs bhBmcROuUl1K9BSCMaItV5vdwFQLeVr8MSVrBx6wkGxMq418lWOmCnckn6NUduKdjs6IgYdGDCf fKmYnhFpbxNbeDA== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg These values should improve C-PHY behaviour. Should match most recent Qualcomm code. Acked-by: Cory Keitz Suggested-by: Konrad Dybcio Signed-off-by: David Heidelberg --- .../media/platform/qcom/camss/camss-csiphy-3ph-1-0.c | 19 +++++++++------= ---- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c b/dri= vers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c index 83de89a88dbb1..25a3554ef2016 100644 --- a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c +++ b/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c @@ -227,19 +227,19 @@ csiphy_lane_regs lane_regs_sdm845[] =3D { {0x0660, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0664, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }; =20 /* GEN2 1.0 3PH */ /* 3 entries: 3 lanes (C-PHY) */ static const struct csiphy_lane_regs lane_regs_sdm845_3ph[] =3D { - {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(23), 0x43, 0x00, CSIPHY_DEFAULT_PARAMS}, - {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(26), 0xa0, 0x00, CSIPHY_DEFAULT_PARAMS}, - {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(27), 0x25, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(23), 0x63, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(26), 0xac, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(27), 0xa5, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(1), 0x06, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(3), 0x12, 0x00, CSIPHY_SETTLE_CNT_LOWER_B= YTE}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(2), 0x00, 0x00, CSIPHY_SETTLE_CNT_HIGHER_= BYTE}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(5), 0x20, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(20), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(6), 0x3e, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(7), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(8), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, @@ -247,19 +247,19 @@ csiphy_lane_regs lane_regs_sdm845_3ph[] =3D { {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(10), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(11), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(17), 0x12, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(24), 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(51), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(25), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN1_CSI_3PH_CTRLn_ADDR(55), 0x51, 0x00, CSIPHY_DEFAULT_PARAMS}, =20 - {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(23), 0x43, 0x00, CSIPHY_DEFAULT_PARAMS}, - {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(26), 0xa0, 0x00, CSIPHY_DEFAULT_PARAMS}, - {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(27), 0x25, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(23), 0x63, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(26), 0xac, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(27), 0xa5, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(1), 0x06, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(3), 0x12, 0x00, CSIPHY_SETTLE_CNT_LOWER_B= YTE}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(2), 0x00, 0x00, CSIPHY_SETTLE_CNT_HIGHER_= BYTE}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(5), 0x20, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(20), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(6), 0x3e, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(7), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(8), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, @@ -267,36 +267,35 @@ csiphy_lane_regs lane_regs_sdm845_3ph[] =3D { {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(10), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(11), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(17), 0x12, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(24), 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(51), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(25), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN3_CSI_3PH_CTRLn_ADDR(55), 0x51, 0x00, CSIPHY_DEFAULT_PARAMS}, =20 - {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(23), 0x43, 0x00, CSIPHY_DEFAULT_PARAMS}, - {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(26), 0xa0, 0x00, CSIPHY_DEFAULT_PARAMS}, - {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(27), 0x25, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(23), 0x63, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(26), 0xac, 0x00, CSIPHY_DEFAULT_PARAMS}, + {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(27), 0xa5, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(1), 0x06, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(3), 0x12, 0x00, CSIPHY_SETTLE_CNT_LOWER_B= YTE}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(2), 0x00, 0x00, CSIPHY_SETTLE_CNT_HIGHER_= BYTE}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(5), 0x20, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(20), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(6), 0x3e, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(7), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(8), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(9), 0x7f, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(10), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(11), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(17), 0x12, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(24), 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(51), 0x41, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(25), 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {CSIPHY_LN5_CSI_3PH_CTRLn_ADDR(55), 0x51, 0x00, CSIPHY_DEFAULT_PARAMS}, - }; =20 /* GEN2 1.1 2PH */ static const struct csiphy_lane_regs lane_regs_sc8280xp[] =3D { {0x0004, 0x0C, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x002C, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0034, 0x0F, 0x00, CSIPHY_DEFAULT_PARAMS}, --=20 2.53.0 From nobody Sun Jun 21 15:57:43 2026 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 80467391855; Wed, 17 Jun 2026 08:32:25 +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=1781685145; cv=none; b=euOwykTWIr22TNTUQuNpM+Q0+nwC6n+IBPw5bsV8uF4soh7JMUzs7GJIUuqCJQU4PkqCEhJo7ecRjgGORPAR3/NK73UUkw1XMQdjdiBROKensI7WcxihKlZdbmtF7ibIiORyHf+BHz5F8CnIiL6hCIKPIsNpDyG2gPve6kdxk+8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781685145; c=relaxed/simple; bh=23ujETeHyNMlyqF2CM9K0eByUZo1COTvzR1UvtGRCR8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NfLYNABqJ4hWLowpGoT8W1X9qukaFE/JA4vy0FOvCxovis13aVdu44bgGjjrpvrI0vdVvKW2UNSOZ1aQq/ee03KiStsQskaXD57ytHXTXCeIQjdcvoCbLzPw9whdGJaCdUnQW6CLpuVWH0TWy19fDlae34owOxpRZFmqQZZbTOg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sYAkEl6o; 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="sYAkEl6o" Received: by smtp.kernel.org (Postfix) with ESMTPS id 5AFCBC4AF19; Wed, 17 Jun 2026 08:32:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781685145; bh=23ujETeHyNMlyqF2CM9K0eByUZo1COTvzR1UvtGRCR8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=sYAkEl6o2kpz7x/QV2AuXL07sfuWwo5X5Oc/J4gCYTdkxUTIpzkSR4270/ekMIxvj SLWgV/6ak7ngTpOkAkTBmCCg+pkH29HtsPxlnYxZBfKPWeMOJeUGLu6aM4M+GX/pVx RbNQSLUWYRBDuYy1UmGD4JhBPBfkmBSOw32SciCSKgFRdJN/vrPCTDJFcNe+h30Hyn mjFvJnqp8hiex90AZyKnDlsOb9hI3PqbtSlDooTfp9+R+EbkAt6HplaTd5vSBcLywc QgB8oJQnHQhj96FF/47DbZSrGrI0dPo6DIEio4Z5J2sccIAiamBYDP3po3ehu3swfk +isRJ5+HLr2bA== 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 53707CD98E2; Wed, 17 Jun 2026 08:32:25 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 17 Jun 2026 10:32:26 +0200 Subject: [PATCH v9 8/9] media: qcom: camss: Account for C-PHY when calculating link frequency 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: <20260617-qcom-cphy-v9-8-83da8a8e4e44@ixit.cz> References: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> In-Reply-To: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> To: Robert Foss , Todor Tomov , Bryan O'Donoghue , Bryan O'Donoghue , Vladimir Zapolskiy , Mauro Carvalho Chehab , Luca Weiss , Petr Hodina , "Dr. Git" , Cory Keitz , Loic Poulain , Hans Verkuil , Nihal Kumar Gupta Cc: Frank Li , Konrad Dybcio , Kieran Bingham , Sakari Ailus , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=7330; i=david@ixit.cz; h=from:subject:message-id; bh=sVPrk/XzjkPG3qz+AM7isEZRhSTJ3CSoEJ0qxo3ZGDs=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqMluWskKMaEo1WlNRlhWXvXJSKd+iTgwshfsXv fTM0ZaTQ4mJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCajJblgAKCRBgAj/E00kg cr/dD/0RD4yoUY54H01nfdFpqaKSsaXSEbWNTZvXc1h7epoi00k5AJwjNily2RWv2cDNsWqEunD MaYpxNu31zVwxyfNUtd5SaCbGv8yrc/3lC3ripvYS14txWOfu3QnVw2ryfJ2JJmjp52yDbI7jyO hvF6AE4wh0kO6Q5pn60awScta8sbrWPT4K22MaYSEhtHrdWgVwTr+N4mgNUbV5suRpPNIQUEeU8 6az40ndkfAvJkpfyX/J13hPFgzGZjrGUGNHzPv0QuIbZPNoU9OOn6p3+182ZYDIUGOYbvM+hOoG cl94/N5KJipW3uhbK40XvF/L5k0JxKwsglO6+WdFnSsop0dYPa80c+ire8fGUSkMDt+oaK98tSP tLjdChanNjmhNUcATxybPtWXdaWoTQJi+t6CU05PWF6KeW48mWM5qX8bifJrmgR3ujFW5U7KPfr 9xNiE6a8TIj7wmqxmJn66vsQLvtcwdZ+goZ5VSz/I8dJyTPQlcVzZH8RzmEuMBmeKJP6sVWygV0 mOyAi5vlp0ICfQY3KD73tIxHIzV745HuxvVoAqZ0esFVRK2jimdrMd6FcVhJkB58BSzK6Vzg6n1 sGvpUosKUcSRVDBUzjrHjtA5VREIuzS7aAYlNJ5/jDJXZdnjM3LzrtqGVyi9K6O6VgGVcut/uQA G2ZAAB3BHiRKIMA== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Ensure that the link frequency divider correctly accounts for C-PHY operation. The divider differs between D-PHY and C-PHY, as described in the MIPI CSI-2 specification. For more details, see: https://docs.kernel.org/driver-api/media/tx-rx.html#pixel-rate Suggested-by: Sakari Ailus Link: https://docs.kernel.org/driver-api/media/tx-rx.html#pixel-rate Signed-off-by: David Heidelberg --- drivers/media/platform/qcom/camss/camss-csid.c | 6 ++++-- drivers/media/platform/qcom/camss/camss-csiphy.c | 6 ++++-- drivers/media/platform/qcom/camss/camss.c | 15 +++++++++++++-- drivers/media/platform/qcom/camss/camss.h | 2 +- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/drivers/media/platform/qcom/camss/camss-csid.c b/drivers/media= /platform/qcom/camss/camss-csid.c index bcc34ac9dd212..c8cb6f1a3d3bc 100644 --- a/drivers/media/platform/qcom/camss/camss-csid.c +++ b/drivers/media/platform/qcom/camss/camss-csid.c @@ -535,24 +535,26 @@ const struct csid_format_info *csid_get_fmt_entry(con= st struct csid_format_info /* * csid_set_clock_rates - Calculate and set clock rates on CSID module * @csiphy: CSID device */ static int csid_set_clock_rates(struct csid_device *csid) { struct device *dev =3D csid->camss->dev; const struct csid_format_info *fmt; + const bool cphy =3D (csid->phy.phy_sel =3D=3D CSID_PHY_SEL_CPHY); + s64 link_freq; int i, j; int ret; =20 fmt =3D csid_get_fmt_entry(csid->res->formats->formats, csid->res->format= s->nformats, csid->fmt[MSM_CSIPHY_PAD_SINK].code); - link_freq =3D camss_get_link_freq(&csid->subdev.entity, fmt->bpp, - csid->phy.lane_cnt); + + link_freq =3D camss_get_link_freq(&csid->subdev.entity, fmt->bpp, csid->p= hy.lane_cnt, cphy); if (link_freq < 0) link_freq =3D 0; =20 for (i =3D 0; i < csid->nclocks; i++) { struct camss_clock *clock =3D &csid->clock[i]; =20 if (!strcmp(clock->name, "csi0") || !strcmp(clock->name, "csi1") || diff --git a/drivers/media/platform/qcom/camss/camss-csiphy.c b/drivers/med= ia/platform/qcom/camss/camss-csiphy.c index 539ac4888b608..a136cd27880a6 100644 --- a/drivers/media/platform/qcom/camss/camss-csiphy.c +++ b/drivers/media/platform/qcom/camss/camss-csiphy.c @@ -139,18 +139,19 @@ static int csiphy_set_clock_rates(struct csiphy_devic= e *csiphy) struct device *dev =3D csiphy->camss->dev; s64 link_freq; int i, j; int ret; =20 u8 bpp =3D csiphy_get_bpp(csiphy->res->formats->formats, csiphy->res->for= mats->nformats, csiphy->fmt[MSM_CSIPHY_PAD_SINK].code); u8 num_lanes =3D csiphy->cfg.csi2->lane_cfg.num_data; + const bool cphy =3D (csiphy->cfg.csi2->lane_cfg.phy_cfg =3D=3D V4L2_MBUS_= CSI2_CPHY); =20 - link_freq =3D camss_get_link_freq(&csiphy->subdev.entity, bpp, num_lanes); + link_freq =3D camss_get_link_freq(&csiphy->subdev.entity, bpp, num_lanes,= cphy); if (link_freq < 0) link_freq =3D 0; =20 for (i =3D 0; i < csiphy->nclocks; i++) { struct camss_clock *clock =3D &csiphy->clock[i]; =20 if (csiphy->rate_set[i]) { u64 min_rate =3D link_freq / 4; @@ -265,19 +266,20 @@ static int csiphy_set_power(struct v4l2_subdev *sd, i= nt on) static int csiphy_stream_on(struct csiphy_device *csiphy) { struct csiphy_config *cfg =3D &csiphy->cfg; s64 link_freq; u8 lane_mask =3D csiphy->res->hw_ops->get_lane_mask(&cfg->csi2->lane_cfg); u8 bpp =3D csiphy_get_bpp(csiphy->res->formats->formats, csiphy->res->for= mats->nformats, csiphy->fmt[MSM_CSIPHY_PAD_SINK].code); u8 num_lanes =3D csiphy->cfg.csi2->lane_cfg.num_data; + const bool cphy =3D (csiphy->cfg.csi2->lane_cfg.phy_cfg =3D=3D V4L2_MBUS_= CSI2_CPHY); u8 val; =20 - link_freq =3D camss_get_link_freq(&csiphy->subdev.entity, bpp, num_lanes); + link_freq =3D camss_get_link_freq(&csiphy->subdev.entity, bpp, num_lanes,= cphy); =20 if (link_freq < 0) { dev_err(csiphy->camss->dev, "Cannot get CSI2 transmitter's link frequency\n"); return -EINVAL; } =20 if (csiphy->base_clk_mux) { diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/plat= form/qcom/camss/camss.c index 072c428e25166..66171069057f8 100644 --- a/drivers/media/platform/qcom/camss/camss.c +++ b/drivers/media/platform/qcom/camss/camss.c @@ -27,16 +27,24 @@ #include #include =20 #include "camss.h" =20 #define CAMSS_CLOCK_MARGIN_NUMERATOR 105 #define CAMSS_CLOCK_MARGIN_DENOMINATOR 100 =20 +/* + * C-PHY encodes data by 16/7 ~ 2.28 bits/symbol + * D-PHY doesn't encode data, thus 16/16 =3D 1 b/s + */ +#define CAMSS_COMMON_PHY_DIVIDENT 16 +#define CAMSS_CPHY_DIVISOR 7 +#define CAMSS_DPHY_DIVISOR 16 + static const struct parent_dev_ops vfe_parent_dev_ops; =20 static const struct camss_subdev_resources csiphy_res_8x16[] =3D { /* CSIPHY0 */ { .regulators =3D {}, .clock =3D { "top_ahb", "ispif_ahb", "ahb", "csiphy0_timer" }, .clock_rate =3D { { 0 }, @@ -4619,29 +4627,32 @@ struct media_pad *camss_find_sensor_pad(struct medi= a_entity *entity) } } =20 /** * camss_get_link_freq - Get link frequency from sensor * @entity: Media entity in the current pipeline * @bpp: Number of bits per pixel for the current format * @lanes: Number of lanes in the link to the sensor + * @cphy: If C-PHY encoding is used. * * Return link frequency on success or a negative error code otherwise */ s64 camss_get_link_freq(struct media_entity *entity, unsigned int bpp, - unsigned int lanes) + unsigned int lanes, const bool cphy) { struct media_pad *sensor_pad; + unsigned int div =3D lanes * 2 * (cphy ? CAMSS_CPHY_DIVISOR : + CAMSS_DPHY_DIVISOR); =20 sensor_pad =3D camss_find_sensor_pad(entity); if (!sensor_pad) return -ENODEV; =20 - return v4l2_get_link_freq(sensor_pad, bpp, 2 * lanes); + return v4l2_get_link_freq(sensor_pad, CAMSS_COMMON_PHY_DIVIDENT * bpp, di= v); } =20 /* * camss_get_pixel_clock - Get pixel clock rate from sensor * @entity: Media entity in the current pipeline * @pixel_clock: Received pixel clock value * * Return 0 on success or a negative error code otherwise diff --git a/drivers/media/platform/qcom/camss/camss.h b/drivers/media/plat= form/qcom/camss/camss.h index 93d691c8ac63b..12b14ba8fcec3 100644 --- a/drivers/media/platform/qcom/camss/camss.h +++ b/drivers/media/platform/qcom/camss/camss.h @@ -164,17 +164,17 @@ struct parent_dev_ops { }; =20 void camss_add_clock_margin(u64 *rate); int camss_enable_clocks(int nclocks, struct camss_clock *clock, struct device *dev); void camss_disable_clocks(int nclocks, struct camss_clock *clock); struct media_pad *camss_find_sensor_pad(struct media_entity *entity); s64 camss_get_link_freq(struct media_entity *entity, unsigned int bpp, - unsigned int lanes); + unsigned int lanes, const bool cphy); int camss_get_pixel_clock(struct media_entity *entity, u64 *pixel_clock); int camss_pm_domain_on(struct camss *camss, int id); void camss_pm_domain_off(struct camss *camss, int id); int camss_vfe_get(struct camss *camss, int id); void camss_vfe_put(struct camss *camss, int id); void camss_delete(struct camss *camss); void camss_buf_done(struct camss *camss, int hw_id, int port_id); void camss_reg_update(struct camss *camss, int hw_id, --=20 2.53.0 From nobody Sun Jun 21 15:57:43 2026 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 94E5C392C2F; Wed, 17 Jun 2026 08:32:25 +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=1781685145; cv=none; b=kIvBDkYdvDHWQ+QUWuHOF6vSr2HQ6TuS1KbXCEcx6jRRRrb8MJKSyEGV3NyFSUCwa690SmW2kYZi/qmgLzoNGUPCgJbPVmxsmHre48wd84ul/9kc5FFCMxxcbYK4YCCH23i8aCtx169Fmtk4+VKriaxQWgh7SrKXVmy6SaX2TEI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781685145; c=relaxed/simple; bh=l3uzC5RqqxzM3n8/+39StV34+5jEjjflyVqKlx4xsuA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OtwtV1zAyBnjUFOThnXaV/ZT3Q0+I/kbSZ4985tMPWDLsAMaY3OOGdvgZSgsfMzNCFGzSlKQaSaVi5ef1v/PbhkDiRJs/tRdeN00Z5W60FQ86ev4fL6GAL4Nw6RuAMrweJkFxqS1ayJtBOWe5vyp5j15wF/cBEZLekCsNn1XGe8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jNRlPxaG; 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="jNRlPxaG" Received: by smtp.kernel.org (Postfix) with ESMTPS id 77A73C4AF0F; Wed, 17 Jun 2026 08:32:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781685145; bh=l3uzC5RqqxzM3n8/+39StV34+5jEjjflyVqKlx4xsuA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=jNRlPxaGoR26GRZPIu8xKr7wWGV50qC6JYNxRZfYham/nAJ2TRCD9Be3l2rlj0AS2 xSdYynam6FLRAuS0Qh0GP+yK1mapxw3UUoP6aQkxEyfM53zcLH751WJ0qBCkv9T+io MAZGu4CfVYliOYYshbR1b+Vc2mdjUcnaOfFQgg4erT7OtcFtL0iQC1dGB99vBvAVhW OG4sDQNFv7Aqmjd0nTYw+kqHp7Mj7X4sxqCR6Mf27dsCRh8NJVLQYuDropESd7Z6d/ 3xoop9zvBnhawWLxT85oSlM2zgSC8k/d1zrFyz5DXPIefcBHl0nwTgAk/Zg/poG8mj +j0gTKQA4pQzg== 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 6F3DDCD98F0; Wed, 17 Jun 2026 08:32:25 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 17 Jun 2026 10:32:27 +0200 Subject: [PATCH v9 9/9] media: qcom: camss: Enable C-PHY where available 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: <20260617-qcom-cphy-v9-9-83da8a8e4e44@ixit.cz> References: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> In-Reply-To: <20260617-qcom-cphy-v9-0-83da8a8e4e44@ixit.cz> To: Robert Foss , Todor Tomov , Bryan O'Donoghue , Bryan O'Donoghue , Vladimir Zapolskiy , Mauro Carvalho Chehab , Luca Weiss , Petr Hodina , "Dr. Git" , Cory Keitz , Loic Poulain , Hans Verkuil , Nihal Kumar Gupta Cc: Frank Li , Konrad Dybcio , Kieran Bingham , Sakari Ailus , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1392; i=david@ixit.cz; h=from:subject:message-id; bh=XCi14gM/uWIoK+pzO3oCf9ehRkiwcrxS49fsQobP0+s=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqMluW+jF3Lr8VpM2COVKWC6hom9xxExNCesNF0 ji1AO+ZoZqJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCajJblgAKCRBgAj/E00kg cgKqEACYPm+mneNrVxrgg9Cz90IrI+Lw0KVPE3vMznPnf2VnIGXHtMbVIWNUoWDsQnWymZqOaM5 4rLQHTc/Fq3lkDFlYUkuZ21fcYT9/760MUyiSrp5Eg/vhrLYXmO6mZl4bZgh27JYbpiDw+OgFho rQH0svTAMn6gfrUe14vrfAmb6+k6B/H4Z0h+CPq6EkGIDFmaECxcmRMOydv+QyBlJzflXHkBO1i 8yzs+RK0RTVnYQOKKzMDYg5T0uP+vWexNdWVW0wIQRUBU+LbL6CeOB+ZE2hCfckx9y43NpK8tfX ijsiUmCWOppkUQqIQn3+GedKo/AHGlzur7cx82zR0m1xKrhDPaV23kK/F3oUovg7e9PWMDaPGUi xD5qeyBgQqFcgp5tQY9nVGOkmlb5EQwHslvXOpNsJYlK6Pbp69nHWqm3Obdkn5vmcyAcYD/cFwg ndF5uGxec0RmjKzRumFL1+EP3hn7EiF0SeewgJnwW7+QSVKxcbkY7P19xgA73U429k7mp3T2/bM 7AAFpkWc+qD/vGikV8iENakNtm1ldblBad+4p2nfAIAj+NvHTxnzqKFFwVoAXNdRmWHPSfN6ijM 0D/mY1PglUVQdddpWGgySSTbFKONS2i4NuTmyLM6o9+YmaFXAuPj0Mcg6GZSgxvG7YsViO6LtyQ Amj/5NUDzpYhd/w== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg After all the changes done we can now safely enable C-PHY for a SoC where it's available. Acked-by: Cory Keitz Reviewed-by: Bryan O'Donoghue Reviewed-by: Frank Li Signed-off-by: David Heidelberg --- drivers/media/platform/qcom/camss/camss.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/plat= form/qcom/camss/camss.c index 66171069057f8..ebf8f21b5fa2e 100644 --- a/drivers/media/platform/qcom/camss/camss.c +++ b/drivers/media/platform/qcom/camss/camss.c @@ -4760,21 +4760,21 @@ static int camss_parse_endpoint_node(struct device = *dev, struct v4l2_fwnode_endpoint vep =3D { { 0 } }; unsigned int i; int ret; =20 ret =3D v4l2_fwnode_endpoint_parse(ep, &vep); if (ret) return ret; =20 - /* - * Most SoCs support both D-PHY and C-PHY standards, but currently only - * D-PHY is supported in the driver. - */ - if (vep.bus_type !=3D V4L2_MBUS_CSI2_DPHY) { + switch (vep.bus_type) { + case V4L2_MBUS_CSI2_CPHY: + case V4L2_MBUS_CSI2_DPHY: + break; + default: dev_err(dev, "Unsupported bus type %d\n", vep.bus_type); return -EINVAL; } =20 csd->interface.csiphy_id =3D vep.base.port; =20 mipi_csi2 =3D &vep.bus.mipi_csi2; lncfg->num_data =3D mipi_csi2->num_data_lanes; --=20 2.53.0