From nobody Wed Jun 10 21:39:58 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 6586A349CFB; Wed, 10 Jun 2026 18:28:26 +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=1781116106; cv=none; b=tBTdwajhL+wBihintRpGMmiSAaTseynSBECGbmWY2h7mKkXi6snnPzO7rLTq03kh3xq5WMF/TVT6oAXVN1Cey3CLOkTpvuhGAj9W9uSJ9HUoh/LmpPg8HkEd4RsbyuvuN6JCK1uhbU77gmH8yU6YmKgVhMeOsVd9e9gw1Kh9RbE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781116106; c=relaxed/simple; bh=l4eCm8AIWkDUoE3WTsV7Zxme0lc2GyFF0+eYcS0+My8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Nok7uILWQoQSgcZ2J6xbcsTojyD3NKMADSe5RzZrEAsDx1+iuD9G1IXYt8BoeDxf9v11BVINUpoE0S2U/B1Y+9Kt8Q1ReOq46FfGVyoB+g+QGVGNi5rObTMk/5UTypyYkqhMHkm4LZkoF99NzPyuktK62N52SHYxCa7ia8/uMOg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IBRI3jmr; 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="IBRI3jmr" Received: by smtp.kernel.org (Postfix) with ESMTPS id 14B93C19425; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781116106; bh=l4eCm8AIWkDUoE3WTsV7Zxme0lc2GyFF0+eYcS0+My8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=IBRI3jmrrMJRj9X9ZK0ApOGLx4DAyC+Zer2YIwpn3QvJoQM3ZPrPofgXiut4tTDhe +hMYtjoApVH/FOJ7NK8rgXPNnOmpsikBfQGrK1NCdD4BZMGDjkUazs2KJwTtk2i6O8 eSJNINMGAsm7YlpTzuOHPKjiP0dPT2Me5gdlOZzJpvxtJ6yS85CR5EihDpycYEOmPE gwEQRy8OuLbg4IEDnFtUf1tvU7TL3qo3nB4p2MkyFhYyYdbsE4lmulr5Dzyez99ZXD KheNNjchzMLE+I55OVAlzrTdjAYFp9sdTJ4OeahKtMqWuRXUBY5BUrlHiurt1a593b hdoQLd0fQ7XYA== 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 08056CD8CB9; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 10 Jun 2026 20:28:21 +0200 Subject: [PATCH v8 1/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: <20260610-qcom-cphy-v8-1-cd4387785179@ixit.cz> References: <20260610-qcom-cphy-v8-0-cd4387785179@ixit.cz> In-Reply-To: <20260610-qcom-cphy-v8-0-cd4387785179@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/ZANAwAIAWACP8TTSSByAcsmYgBqKazHsNzKao2StPMyomhqbIoXjZXvSQY9/KTlw PnpRtBXziGJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaimsxwAKCRBgAj/E00kg cr47EACr81qGwSvjaBRUeVJd6oZTUjqz2DS1aD1LzLWMhs7id2+srd+Go9Izkmsgs2tU1BcPJ+j HMhI24Jx0rliHj+YhBtEVgl86I/6834xcHXY0UUoSj3WCA3cnoqS7EF0C0pYDiDFzbbZbnJBhtg hfGS3/GgnCTZdqA/tz4dUtmp9YPiUW0S2PmwrIN8dMMCe/4r9mwjOj7hc2iIRpzmQenMooF0OB8 0E118ZjkIqfFIvD4olpfuhkokLnl8cZgMzUvUFMw2snufBqngE4ObEsoIXEf/q2vmd8ZzXlvsnb btB5mzV30F4XDAC++hU6LqhaPM89fcPeD7vLo93jeYWcffO3UtecIB8vD0iauCBxd92tF1NhIL1 Dqn/4P7yVNkbPtk+TyOgidokrjMDj+TxMwTuARU65iN7+Q7PWB//RwjJDkSoB2yn4LQH0UewIeX T5/sv2g8g13OZq55Et68yOAkdscZ/xzoA/wSHw8absSPcbaXXeppww8XWR4kd0oKEKo/lIt8op2 Et5qiXjZiq87xDJf6ZeV1XJNPP1nUgohQx/yigfMLnTzTBWVt7u8Ja/F2817QqAWIMDM6aJIW8l Mly9gjmNJ/nfg1gHIKjE6lvF7wGMpjCSdYPg7AS6pVs8J6+U/f0hm2xoHfVZfSJ+VoudZWaCy1c bu4LwYriI1PKG1Q== 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 Wed Jun 10 21:39:58 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 6590034F48A; Wed, 10 Jun 2026 18:28:26 +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=1781116106; cv=none; b=Ns7xvOAoJi2gn8VOFeKlxKtB1F0G/2HQz5xQl5X80I6FFeClGFlgsp3487T98s3V/DMOsZfYV0UbdtEg+6clhEeEcSC7U1b9cSZ54dBZHwBgZiWKk+LeIelqpA5IcV1ad4RQuMHhc1ofdO3A9WGTyG18dA/7NIrezpHv2dBP/rY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781116106; c=relaxed/simple; bh=f8SrsdtyM1rgsFTUL63CV9k8mrmfy6y6rj81qhSxPK4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dpUeT8W0qsTwFmUt5i8wy2QTn5iq2cMceWik5mKLvnBxZmVA0yd9UhypDiCp3liXj32boCHRdxEjTAhZgq2cnFZ9dY16s+jPHVOH3adcRDKxdg6t4+Lf1ELaPKXG4S4o1abSj4iwkA/RQM/ihrbaPAiLLmus+JFg6ArDgL9Ac5o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WVRyNzN6; 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="WVRyNzN6" Received: by smtp.kernel.org (Postfix) with ESMTPS id 24721C2BCC7; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781116106; bh=f8SrsdtyM1rgsFTUL63CV9k8mrmfy6y6rj81qhSxPK4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=WVRyNzN6QUj29V847ygVs58FUIVVOU8wWYzd2p9OZ6h6qC4xgjcU8YcsLYCypH2y7 sz7m1y/ZXmntMy7lo93b8FcvYSpEVDLQ3OtXFt3fPqVbzOnr/fOPBN94/7s3mrwVaf 62SkVg6zkKAbQ16nqsGgB1FRa9SaofyCHcy8YFLTbESSn+Mx5TWjBrHhd25WD/msHH IW3PUxXWwOl5us4Rk1zUAhwoorMIuar5yu4XGpnkBYGlnievSXfrYlsuh6kRs78dRU jxbtOLi2LDvZJfYV0SGAqzVQgRIU6KC52cAweJu9uhBm5hGV4Td4/wzYlFrizOAq4C mc3qN4SflqUHg== 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 18666CD8C90; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 10 Jun 2026 20:28:22 +0200 Subject: [PATCH v8 2/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: <20260610-qcom-cphy-v8-2-cd4387785179@ixit.cz> References: <20260610-qcom-cphy-v8-0-cd4387785179@ixit.cz> In-Reply-To: <20260610-qcom-cphy-v8-0-cd4387785179@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 , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1206; i=david@ixit.cz; h=from:subject:message-id; bh=fVr/sKiSUifC1zTyd9NJfz2/7dlahZ+nJFq+MKqII4Q=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqKazHrEq72fCIjBjv5GAwcwAD87AwFCvVFNX8o UcaO9akx5uJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaimsxwAKCRBgAj/E00kg ctpwD/4/WsbiW6UstsGTs+oI+7288BjF7yxrlnh9CnB6PTSK0uj2fe50jkbGJWP45Gw0aCYoobM eabGhwamHCUahsw7Rmw3ewmJbIOcK5UNB/0NC57x/5XVZXMXYRLYF23AfC9O5wzHUh7RxZ4YeMY UNmuHdmhcyAahwrjAZTIBjbeqQUO9yFIFyrzXshdLlZE5ChpodZroYN0p2J7WVD/LDHIFsWEcHU Z636bAZ/72L9Zv5l3IUm8FgMZFG5vfHgJW1PdMwILI8UM7iVG71T+nTvfgTDRd0jQQ8ekwBkhqY DM7Q0qe9gsaXejuf8nA4+FLNOeMxrof7iw10YuVsI099/juO//84+HNWomMEAdbNN91bnFdnWwD lFNNDjvYC1AFxK3ApgbiitMZMP1YQN19hevUBOqZMNrvJ2K/v13fsZkts/LKApZuxcmKfoisHNG aWNRQfi+W//gqYg7nDBaiLWnO6B4RklvCJvYA68N3z478jkRIdJpmZGh5U6SG8LxUuBBSKthXqB 0w+YMH/Zoa8VVbrU2NNq2iQnzQZ7y2UDViAtil3sREALE8OAXeAh8YdNOsxfUVi2w3uv8GYx3LP f+BscvKk5Fvs+m+/xtO7udSCXkCUXcb7aXIaQx5wqTa7mzU4sy/k0fVcWCMdmvvvZl4O1yI+wfI 5CRlocIMb2+jzfQ== 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. Fixes: c94d21ffa814 ("media: camss: Add CSIPHY files") Cc: stable@vger.kernel.org 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 Wed Jun 10 21:39:58 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 6574D29C328; Wed, 10 Jun 2026 18:28:26 +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=1781116106; cv=none; b=m+BrpyZBNzKrmxSWjjhMJKKLs0aZ0c5VuNLBBICbgYRR0K1cE2Uf4AXzI9B+zzDg5s5QwfQNxHewP5XVXBEj/rkXWzkzJECuff2qWUVedL45XB+jfjojKuCl63UcLlJVAxaCEBdQGnT8PovP4pFqT6PVJf9KY3kqV9xlMnmluCg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781116106; c=relaxed/simple; bh=H1VFUp3PjkKWJdD41MKRZH7D7dfv43n0A4wgkEm6UuY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QspCyad/oXRnh8eY73YRxy/hEr+WsKSDZtziZXq0Z5GpOZbE0y6AmpMZt+756HCTO9Gol+GfsBH3XRR42hra8HTSJr9FOBbld2qD9RaqR1LqXz3aI+y2ZR39RsizlxdUqh6ix9VmGDi16vJrfGw2lJkJmfR7DM7DndTTyE4DiNw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MwuXagvy; 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="MwuXagvy" Received: by smtp.kernel.org (Postfix) with ESMTPS id 33DE1C4AF14; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781116106; bh=H1VFUp3PjkKWJdD41MKRZH7D7dfv43n0A4wgkEm6UuY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=MwuXagvyfCAaKiyA+gNGbYnvJyI8wKX5GJktLB3QlDl+lyvjIVggr3VitYODzzT92 zwez1o7m86yUWy/K0ESzA6nKnEyFWfrFPNVqthV8RpKyQKaHju0pX2XkIUyHV3La0Y Y+9HTEfqlc2mrTvDfU81pN3rSbkUBzaG9ttOybD2PcCXAeOl6PyAL1R1elcfW63c8I 277EKMeue5qD3dHOBphakJ1r+oxekQskRT7KD3owvIwRxVsIlxprfxbX9LteqelwmO w2fvsaDtax8yMf0MS4qZVWIBNj6j9NO9Vu/FIJmhhaYdP7zBfXee1GnV9Mc1KoRTNd NhYTVkDP9JSOg== 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 2B34FCD98C7; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 10 Jun 2026 20:28:23 +0200 Subject: [PATCH v8 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: <20260610-qcom-cphy-v8-3-cd4387785179@ixit.cz> References: <20260610-qcom-cphy-v8-0-cd4387785179@ixit.cz> In-Reply-To: <20260610-qcom-cphy-v8-0-cd4387785179@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=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqKazHq88a544lmWGFAghH+C0vt7VXhKfnt2e9A 1TmU6njwsuJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaimsxwAKCRBgAj/E00kg co9jEADH1IKGSsgWZ3amcuuM4I389OIuoXYOCheH/7IRPVmwg6zd6Rnd4YPkQ5DpYLr6uSBcg5f gNINwEmj+Vsu4bbel09NThpVotELMHwBTQwQjZaIugQ5s07Rsuap6tXm8OUqbG0gzuAL5EyU5yI Ybks+ND1iq1zu/qcdaaybCnKHKTqQd5iIkytn4gigEfEsgAZlFT1ZjL6+41BebEuDIBAay3YT+c qTzb8zL+n1MPaY+iu1RCQhzTIadZ3AdXUAAfUEJJlRbF/kgmyYUO0G1cy8ApsHaGg5d0+cnR3/c 2JTbUp6UgnM+caWS+JbhbXODltXepef7kwDhm47kgkrZGR+HffV+ta7rfri7SwywIg4hKqFfd6f shesCqbhQsF3KqZxrmXMGST6yZ5c+VJ+qMfrKhnKGHQ/Uo3JzQnwjhfpoyHMqsyXnnXvfj2CHQ2 HPF1XFnY+ceKVDUEGgNvIZCa1bIR4X8sq7Y6Q86kqD72V6eyFfdsBJWtNe6wzBgpNoW3rXD1wg1 hosDAS3vGzxiMFEZVn3ZF/8TIp+Od+OE0huIicF1rG798Fh2+yUH9WEj1IC9ek3wdciTfGl9zfe AUKZ6LlMvaaUOQsuTyu4HF82RQQvZav/HpSTRr9cS7xftCnlL5adHpO2WyUWVd7XiaiU0j0YsqJ UiW7YA5DHZN2VgQ== 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 Wed Jun 10 21:39:58 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 6CCA3351C1E; Wed, 10 Jun 2026 18:28:26 +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=1781116106; cv=none; b=d0b2wMKIpfHeqABDbe2+eiMLTvmBHmY6zP9J8UarHauYGfJZhizCHF6e0FTokc0J2E7MfarvE6Ey9BH6uUQrg0s9bHVhsKHpseOgeMr3dsstsWDHEgkvyIlagZnThKkaP+ShEdGjDDUocDW4hiw3J5/nLil+Jxj8SODRFM9ZI04= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781116106; c=relaxed/simple; bh=ZtkKxd60xEW43VntlvY4sLAKHlCHp3eULW5s/cjLDhk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EnDe5Dsoy31KEhDoihPhk4DDoUEipAMPaI5a0bXx9pS5q09h8RFIxkQhcG6TOKFb0gAEnLVMLpGh89939Zs/OlK64GYLWe9ERuHismycZOPlgAx1Mzq39Rgnmn+dxycCZz2Gd1zlMZrm3XpyPJsDc8eJcWpLLdN06Km1cWQN8a0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AznlsIpq; 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="AznlsIpq" Received: by smtp.kernel.org (Postfix) with ESMTPS id 42F76C4AF12; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781116106; bh=ZtkKxd60xEW43VntlvY4sLAKHlCHp3eULW5s/cjLDhk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=AznlsIpqKOZ8WnVXSUr1biWDX5CrlQd6QcEV2VbWKAnV7MoyFiT4kiQjGUpZRlt24 LfmuQ5YZSQNuumN/i5r76lfPqkaK79QkHRLv7r6iFbNMtpGlSnKZ2lO8cWEoqcE6ys Tym/xyQsQhrIIT2JHveXJcIuU2+tsgI2RC6vMQ+mfQ6JYx/gyiO/DBhrVKAiAmURd1 NUkSpgYUkm+eyRIu3m7L126BAEN8WokW2OONaHH42q0OjwKx1qrq5tYdc0RCcRHFpB 4nd6gQDdGLmXzpxXkhuFzW1UwQ4D8SjG7BP6TonZN5hxzusFApdgj2lOd2Z97ZNbER b2Zvz7F2iV82w== 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 3B286CD98CC; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 10 Jun 2026 20:28:24 +0200 Subject: [PATCH v8 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: <20260610-qcom-cphy-v8-4-cd4387785179@ixit.cz> References: <20260610-qcom-cphy-v8-0-cd4387785179@ixit.cz> In-Reply-To: <20260610-qcom-cphy-v8-0-cd4387785179@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/ZANAwAIAWACP8TTSSByAcsmYgBqKazH1vXNpv7DeI4Q+TdB6JCr3L+v1C9cKY7+M TJxkOu1hPCJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaimsxwAKCRBgAj/E00kg crC8EACDiPwsSM1LbfkMESMw/85iVtlEbdIkdRhWX2AFOCDlHOj5l0JuOxBP65ySfRw7RQCFWu1 /GGk+Ox6ET+b48+6ykVKfFVo5NMavSlP/CdS8CzEEBKgKrnvJ0eT3MM1kKOMDY2i39/mr9Xd2i3 VbKZZH5CtgXXrYbhiedl4mjXogc3pLD2qoSbCYXUGw41ADlr2cYg5oZ9gyefyJjpApQyB62Dl/M MY67qo1TnKZGVCqRvxP6Gh3QOOhrwXDqb/YyoKDQz5C28fWH4VC8dHYIc8eLNIQ5dpPbOAo7JcF UU0QOpH/AiJv2PEheHNKixIDK+aTBq2Z4mIFXUAq/wmhTcl8bQ4WBtA9JPESOHI+bqQneuEu9Z6 hjjrIj6ZI5W7Ag/HQH7fnvsAV61S4xPKLiq4z1bjush+YskA3VeF43hgJKdM8hSopuCmgRnw0av i6JHwfTTx93UiBNiAkyCm9kyCiikKhLBuYMvujZ93X+/xXEvbzE48I6jo6VzX4NBEYj/9RK2Atd +cERzkUtSdYo5ELZPFOBcpxU4COUw/CVbKWeNK2t2ldkeKNGDD68Ii6plPl1+Fit1pzC6dailMb bAvvq0gZi3sAb84+C5a1suMaLmYSWUw7YyYK3+nc9JILsTEFVxQ37739OBA9M5l2Kwf+Nt7WcAi 1KFLTNmqcj+LJ4Q== 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 Wed Jun 10 21:39:58 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 90DFA35675D; Wed, 10 Jun 2026 18:28:26 +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=1781116106; cv=none; b=uU7ao5qtSTsy2Hkb1xTjO1O/i5PVX1JfSdcqRbfKUoYXj8XtthYct3+lfA/eUfLUJfmIeFZwWq5Cmalrql39M6m0URFXjtjVaSEk4Yn12HV3c4G69GNJedlO/eEedS/7rH8nT3IY1ReW6cq4xUU6dyJo7Fd+yDexf2MCpPSziBc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781116106; c=relaxed/simple; bh=VhZv2kSpvcCOIx43ZVUdlzppnSnwY6aJLztdMc3WHoE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K92cmYL1MN1aTEMDzGXaDG4Ta7pSLdCs/sDiowGzEvvrjGvV45N9mtNbkAvYZ759M/c3Rm3/u6q6Cqf8TgsrmkUDGwbv6ip9zDhmEbUTB5SZWy3Zipjp4mimgmyDItenjA/Pi1q52IDbOyDAkx5voqSHDUqj778SOxoIxF7EEGw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TLlR+Rjj; 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="TLlR+Rjj" Received: by smtp.kernel.org (Postfix) with ESMTPS id 55E83C4AF11; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781116106; bh=VhZv2kSpvcCOIx43ZVUdlzppnSnwY6aJLztdMc3WHoE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=TLlR+Rjjt3WOlxLBfa1faQTCv90PztfdvJvPkboe4i6EHp/Me/dSDCh/p69XB9P6u QUMD+jbsGC34SJxHKtydjS70N2EIokhhutkSDcdTTexUb5uMTsCY4wijHxSlN7Lqck 5DfQ7JR5C8O11j6JXVGehySjno8y05Hu1DUJ6Ii/yRMmHKFFYxLrzz27DivD4yxVz7 Q6KylKf4lwEVHvevrMjfJLzgc0FVM2NSu9xbm2yVA0nC/oWueHUvc9nW6tqqSnrAMs GjijE9CBwjdHRQQEQClS2Yg+Jn1U3DIzOfLj+vKVPEIK1hlVWLSOxBu6DoVVsvvuJJ wmtpfPTuvFmkA== 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 4D417CD8C90; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 10 Jun 2026 20:28:25 +0200 Subject: [PATCH v8 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: <20260610-qcom-cphy-v8-5-cd4387785179@ixit.cz> References: <20260610-qcom-cphy-v8-0-cd4387785179@ixit.cz> In-Reply-To: <20260610-qcom-cphy-v8-0-cd4387785179@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/ZANAwAIAWACP8TTSSByAcsmYgBqKazHRlNWfHKH2CuOLPnY54+Ri366QxPUKxh3v vV7Vjel8CqJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaimsxwAKCRBgAj/E00kg cmdzD/9YJj//xkw6XepXz1MYhPeIJvQOzug+1jXfOzmvxCosBsvElvqHLTAwqgNiFhJxBJe4mWk SLKmPmMaWwKpmAJBo25NtIHG4pbSHtBKGTD20Mnz37LDbzxVyvy7UnSS1v56nBZzNXid9KvpSA9 8B7ZAjcMddUQoe/ACXpCXh+tKb6Z5/35BkIm5YMHXeTTxRXQgKtGrhErsU4jYxvqmUgFPqngLw5 yY0Kh25GoKLWh/KRy/BZLMa9p/MqXv+wsjYYfqju0m26PDrVn5mmGvxpPfXPpptB7DbsPjtMyvN r3AHgy0OT2wMozRq6Mw4Y7zFJOXH2uspyIkPsrK+KRuoU1gRMBjpmS+ye9hLPTcsTj1GDXWq61Z sOQAcSz6T1l7T362ANT6nlh/HU6lRA5swyEjrhz4PAEq5sZJEOyp+Yf6k/3HBHnjK6/BFbxuIB+ TWT28K+jCVfK8Gx0ZmQSfN00rsWP5we+a+kLIN6UH6+vTK/UKLDFU0pe+md+Bqu24d/uA1qI4s9 eCFmCxmE6mRBb0NQtr5dF+U1RugV1cT7bQHbQYDeHVgX915dNIF+MNuwcOS8xSRRU9jBV0ETyxh OT75m+8dGQjaV6mKtpG/uELXp3iYvUsPsa7O59EJXaaVV9PkjMxNBG4buBg9V4TZlciDwlVQdbM W/nxsKgprv/qb1g== 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 Wed Jun 10 21:39:58 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 967E835676A; Wed, 10 Jun 2026 18:28:26 +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=1781116106; cv=none; b=pBuGV7p19baOe9WVaIhSYfEAksl4QsQ7Eo/WyjqOP+JakgUGluZ8xiXzbnJTJLnTO00BswcdQfXsZTpric5+yGiarvd4NPSp46Yu9CwtxXU2MXz9WkfQLhw1y8xfYwui4Eqp6a411NodEekpjrsS6HnQ57glvPNSc+K+N8AnxPE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781116106; c=relaxed/simple; bh=/Ld33kPcldA/4ZgF6WMG5MlfWdjJUlH247byvDhDQLY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ip8PSNBJmUVO0sS3NDuhYnifGwVP8iLTtOkkxIYJ66ParKOWohm0JlxPni4orbbPnfO015zeNXUR4xHStnNjR99YWRQxmI2qzfuDhb3A2uzwitxb5P2Umw1sja0opqxOizhRpjwsKehnYcmqH2dheMhK5vRSYVAcz2cfM1M1MuI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hQlOGeAT; 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="hQlOGeAT" Received: by smtp.kernel.org (Postfix) with ESMTPS id 65D5EC4AF15; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781116106; bh=/Ld33kPcldA/4ZgF6WMG5MlfWdjJUlH247byvDhDQLY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=hQlOGeATiuhXvy+si4srANKRIjBALY/abnlKz8t8Sy1KJCHz0d66Or+l+Xpn96Q5p 4JQvAdmCs+dgqU9G2EOj3ewxqsi/eF6q8zurX++e4NVydfjQnE19ibu/FF7K8Qessn Iino2GfiUlfMpd3gSYILS/XCIDqvVgJbCjgx7qkOizPnWIysL0Zz7uiPCmj27PrxOM LxgcTrMEpDQe8XbMeSpWwnV+qJTtt4EycC33/aIaQw1dYZgAu8YUXc370qugXdvtIp +OrJA9NI0lL5ND6Jbrfk84EqJWy+Tc0WFA8etatmUZk9KSEdkCsmC2yjHBg9TmzQBa H54Mcb8mMvZcA== 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 5D560CD8CB9; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 10 Jun 2026 20:28:26 +0200 Subject: [PATCH v8 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: <20260610-qcom-cphy-v8-6-cd4387785179@ixit.cz> References: <20260610-qcom-cphy-v8-0-cd4387785179@ixit.cz> In-Reply-To: <20260610-qcom-cphy-v8-0-cd4387785179@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/ZANAwAIAWACP8TTSSByAcsmYgBqKazHLMjEtpPthWC3CV3pq/phCmKEgl+7AbfBB WxOzKjdMtmJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaimsxwAKCRBgAj/E00kg chr9D/49i+wn6020A1fSzTvADBYrPNXWYkpF/rS7/ZpiMgam5zHZTESmQGq9RlmkA/U0WlSeqCB EdjYDZjg9Jzw+I+CQRjDK+OosQ373wcfQ9QxBwivjRtm7FxklxXxOzTPwGSXRMUfID38ZTxfWHr NbiiSOSP2DmLIgOwjKo6pWsGp2+JGpl/cy3Yg2n0dgKOzmsbtXRuLnb71hKUx5ax/S4eDXUH1Gx PekcvNZ/Ib3B2ARFRwrNcXvTuumRtxHUYdDF3LjB+sb7P+akme7mnz7aVaQ8gA97tpEXD+My4Q9 QEQPN1JhOn4FEzd2J6Am5JTQizeMiCHd7lTSakCqDSd1A2aYbei7ctQ8bGqkuN88LQoHC54DUD+ k+sNOCRgjevH+kuU/fFxBg6aXcg2Md/3Mke1CVGRirYUgJJ3P2sKKOsS1lraWV6Q5kkSwt8WLev +DhRlx9r7bOIRtbJLuZPXZTJ/Mef2UlSl59oLKnWiRGH746gr7bOBxXbRBMT9k0H+coa+yt/1bz fNtr8+1W1VVRuJzTn5CM6vPc21d9fKFlgb1hCwqIwi1Y6t+ZDYgZCZB6OGx34k7/io7K18zPnnq 1K6vemn7AXkxBmFacYQ3yL6Vd5rQ6ei1+zT9mQ/jZYU9AFEzXXFHGswa4C8YpeDEAyzK9hNrk9W dmQaM8+XYzOo0pQ== 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 Wed Jun 10 21:39:58 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 A7E01356773; Wed, 10 Jun 2026 18:28:26 +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=1781116106; cv=none; b=H0Tv33s7T7BMHPCFWmxnmovafsvEL/ScdwLHcLjCbXbXM34mGRqNrWwuVBXpVk+zwTVmAJs48O0xdB1N7lJevIGiP7IrmKLZA6o5LtyNL4zRSF0PWAwMTiafri7PNHgFf76P4YK1/HDy50OI+WROGP/ZEZY0YupxnNstmkKc3BQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781116106; c=relaxed/simple; bh=Hmb4bUwpZRDfkAIAKiklux/fxZdU9O/GSSXBmJriI4A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UJ7KCwmbZdk7LPDycFf1n8x3KR9S2YNzHaUHCGXeqaMajqYYSA2uZpVOOf6eA0LMp+C8ylvynTlosKVj4Ie8o8kg/Y3eBKk/m1Wum0tN6f4/66s2GDLFzGPbw8MIbKZPseYoGs6PDcYjArZzi2vgt6ytev5JF5FPfHxRoJRYLWY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kUJHA+/+; 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="kUJHA+/+" Received: by smtp.kernel.org (Postfix) with ESMTPS id 78668C4AF1A; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781116106; bh=Hmb4bUwpZRDfkAIAKiklux/fxZdU9O/GSSXBmJriI4A=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=kUJHA+/+evU3OMtacoFBkJCzjgX50+UbqHsVMTfxr4QICvX5fhA3UEUkG5EWxiKWm EsKcV8mqktfMhuh3JQuApoS79eedehX/Q6zctm9VMuKebaaOSgTRd1PsVt6AACuzhM wJFBzSWATIqLJDce5UxHpot4tvoADZBwvamVSkGaZeGHRkrVr/PYlts1QTrOGN35kz Y0aZp9VB/kXjjCqBmRGaFR/odulb2qY3ZHuxYb08sx2PxJR4UIPU6SDcW9kkSlO742 +T8llC0UU/vTTyCm9DIWetxqvDfYnrHKLHTXb2sbeOb6ahNGz521r6ZyA0puuNjpuN 3ZfxylDxgiEpA== 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 6CCD6CD98C7; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 10 Jun 2026 20:28:27 +0200 Subject: [PATCH v8 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: <20260610-qcom-cphy-v8-7-cd4387785179@ixit.cz> References: <20260610-qcom-cphy-v8-0-cd4387785179@ixit.cz> In-Reply-To: <20260610-qcom-cphy-v8-0-cd4387785179@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/ZANAwAIAWACP8TTSSByAcsmYgBqKazHSN/SOp24cMw+sZZXvQ+CfzTCNoZFoktge 0w7Q/NH68uJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaimsxwAKCRBgAj/E00kg cvQnD/4mVYnIPyPoGTUoGGRwE0RyOuru8yxhjtRMVFZ2Gd+ZCIZoMP2QiLs5UrkHU5Xt6Sr6mGE x+J8yaE1UGmJNIn9akQZ6L9b12xJnl8jd4MB9O6sYqNeO50UIicbwbD7iuywqPJU2WxHf/ipDJH JFwIuWI2qINIOzgT4Z71DWsCaFfLYIU/ddl0X3Sd9qp0faKuXR2DIW8a4rAmM9HA8QGuej/ea2b XI/djlHWZeDdLRLuSEaqmHQbOxMblpWx4QtrD0e0IUrJSe2V0OeiCaixDCg07ve7N8EXJmNvi4/ 9WMS96VvyGLNRSqyQB03XURvtZoWLbIEvkSFQZd6+WI11WbrGN7HG9eBl2dqAnhyIlM+Dixdrmm AWzalk5nJE3rWlZ2/sAY2oTrwVcolYQJCBVuyss374BtxwHoIBqqFBGTeKkGXE9y0JrZYQpsdCW 0JT67LgBMtHGGw/E8wopNEO3kYnJ7oQseKeHJX5x5f653aghJzr3u+n4lVYkpus8unl83u8vIpo kzH2PmpJDbxbwqiam3NdsugQPWj1b+Qp1odJ5OW+brhmWtfZ10mZ7MAIiZsVU3HcFaS9MDt457Q 6B7/8uJ6E47C0lkuNNO7JzvmtJjy/5XWBXfcJQs218jKTyoD1p+aZeggE1LwXH4dz5WlPRIbXYH +LlkEbZKMlo96+A== 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 Wed Jun 10 21:39:58 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 B5F7E357D0C; Wed, 10 Jun 2026 18:28:26 +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=1781116106; cv=none; b=RJaVnM+EkMyYdUDCTHN52iXwwUg+L4BmlgnTvVM+YajXcCvTg6JfI3LsuKh0jsbnhwUs6ztmPsZSiC07LaE6+5uj3z95SHI/kvf9FccSX1aPpzXOgWFXZT9mKQElsfe2NYhGFNwntOd7e+fCyzh1kO1sxMXQF0g4vSL2r3PBgNA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781116106; c=relaxed/simple; bh=23ujETeHyNMlyqF2CM9K0eByUZo1COTvzR1UvtGRCR8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qjz2+hGlUXusgfwQYxn2Fj2Wh52e/EKMtcnMOxPEW+9dRgbSg72GaecEhOfKmhRDgFBSE5KMKKlSYOxLYWHRUoPER2KNCw5oviHD7umTs20wVQp5XXzr94ahQyUCiZbYnc1EwmnZSiVGNMFinY5gn6MrTW5K2wIYu6tJKO7OTj8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=H2qJYRRo; 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="H2qJYRRo" Received: by smtp.kernel.org (Postfix) with ESMTPS id 87DABC2BCC7; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781116106; bh=23ujETeHyNMlyqF2CM9K0eByUZo1COTvzR1UvtGRCR8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=H2qJYRRoYNISRHVTZm8esfcOZ8pdUbq+xCncepSwj+FOLXpGVWeKX2T51e+m/cUTS K8qdc+YIoZaHf4epRNJqX52gEg9h1FKUD15SGXJdSpecMGWx2KqwrKjlMqRySlaU+M +tW7B1j3L308YEI84rlExiJP+amfYmGY3uAEmmJhw+NTsvRDGA1LCtFNe++GnvSNIh KWPsjB8/nJM38IIdQYK0MkeMhAuUpJxigw0tyhY2fAS1N7vSaddHrwgneFKXitqiJc /cqSx9qc3GopSz9II+f8hRlE8Z7UULjEFAO58YbvxOvIyZiypPWg53ge1HZQNffW/E 4lY8GG37f2QAg== 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 8022BCD98CC; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 10 Jun 2026 20:28:28 +0200 Subject: [PATCH v8 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: <20260610-qcom-cphy-v8-8-cd4387785179@ixit.cz> References: <20260610-qcom-cphy-v8-0-cd4387785179@ixit.cz> In-Reply-To: <20260610-qcom-cphy-v8-0-cd4387785179@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/ZANAwAIAWACP8TTSSByAcsmYgBqKazHAF84d7nVkkgCE7VYGHj3ShNf3CZvAGanT qhWZbBezeaJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaimsxwAKCRBgAj/E00kg ctfdD/9uup5MR/5vJ2wVzy2nT67yAU42jTHrN3CT73F2VhWQ5vsa6PfhS0d4wd3x6wclYD+1IY4 o6TwEQ7htBwJZuzTD5RNP+w+ET8ISY9d6eyZkuZiDQpa9sArSDdG7LC5UuYFtdy9iSgwlCftIwZ 1AcNclRByHQfQSNiDz4CPusabBaOkjPQg8/mwQv3Vq52JlP2mj9se5QPItbjPjMYSdhx+zPK3Y0 03fu5lI0nFicPSHlcNNtiDUee79dlToo4SJlGeIrJBFt9ODzBKjH4LAjrSVxYB9RDC8VvtAFrxj t8TVsucNRt6thw3KinsBUW0fPsLd6CV9bOAVRAbyJpNoeuFbdzRlojFJsCYN3MLPCFVYcu7BL+n kX/YWJFzhDYIphhOhSMzRQVPzqAERtK3ymmrnKsEfHT4Zhx9R0YvOgSSe69SLcE5XNtJM0PdKJI 0TrTbQiT1GEWlr5ik602Vx8/NHfKGk60VBX0g5UwH1VMnyUEUwyISK6EYXbDdkEAPvzt01T9svW kXMj4S3bf3jQfzBRbePJwjqawqCBfIFIcwuLl3llCUbkRhTNAMMl96xZUrFEIi06/JdsE0Z8OUB BRvEIEgUcFnAN3NU1Xbnd46fJdJomcTq6h0e5wucKFiXi69e08tueYALRCvE5hyzn3R632CLpA3 WVUt4x3EVsGZrDQ== 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 Wed Jun 10 21:39:58 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 C09D635839E; Wed, 10 Jun 2026 18:28:26 +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=1781116106; cv=none; b=GeR2wO/5j2orjPeMFOCIhNfvF81kykAPJKim/NiK1AGj7bmkrhiL7UmVlRJy+ZfqTmcTeRQw/yy2FXnaWO43mm9mCgVvHQXk4J1OJfxP+x04AFWPGZO2myz3TRH8aVWaTAiSmIp1rgVQk56F3Vv5v98GB76b0Qs2ywqFO10RVKA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781116106; c=relaxed/simple; bh=l3uzC5RqqxzM3n8/+39StV34+5jEjjflyVqKlx4xsuA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lO3Bbfip7mQILhqPt/giOWw3zPgMdABnVxQHzKOnqJ8SloXYDlknjTi+Z5g5sh9VfN+aCoyw6qWZ4r9KvurPG9egJavW3TJXfAGnJBLQ3uuqTiiKiRe0aQIsbtbb6IXuSIsJr4Fzj/bq3GVK4NAVAbO2E1P85e/MmJcoBBR7k7M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QvX3e0yd; 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="QvX3e0yd" Received: by smtp.kernel.org (Postfix) with ESMTPS id 99154C4AF14; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1781116106; bh=l3uzC5RqqxzM3n8/+39StV34+5jEjjflyVqKlx4xsuA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=QvX3e0yduywUUC4nm3Or2VNkToDEr91OeBKnpSRoFu7sJ+7AhaEv2UC0lJGLfj/sW h9na5xEnXX5ZU3uKrUc+TeVcpCZhVeJJczK9/htSBiH/B8C3iiZk7Qw/6PsvE4WICd bKGqZUD3hIEM8Wlg2U2C+goqEoyU6RLnoLnyw/+P3FcPzPq1lYKL/UCtVm9BIQn3gB GEtnTrSnNZpvdOJaHlr4Pv1zvXtA3sgaT8nWQYUDp4GjswUfSNJINDT0sgB84GwYCK XepLKkpcjLmZLHjJF6byMqxrUB2lL4FsgGcJmgY3LgXttJMqNqqIn8ViR6js5PDktG 0YhFwOSquIFFg== 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 90123CD98CF; Wed, 10 Jun 2026 18:28:26 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Wed, 10 Jun 2026 20:28:29 +0200 Subject: [PATCH v8 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: <20260610-qcom-cphy-v8-9-cd4387785179@ixit.cz> References: <20260610-qcom-cphy-v8-0-cd4387785179@ixit.cz> In-Reply-To: <20260610-qcom-cphy-v8-0-cd4387785179@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/ZANAwAIAWACP8TTSSByAcsmYgBqKazHPe7CrgTnpkmLrgbTun0CS0vFquYPcOBUc KqlyD1M+sqJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaimsxwAKCRBgAj/E00kg co6BD/9zJdywY/m3WkTsIDim0Q6DStBPZcAFcGNUAKlldtZmEaG79K/bXMT3ioLz/dFHToNqwxm fzg75YJ1ZvElGmEW4rgRs2T+elX8zkgPfKCTqYIjxnSR7d7hrAPIPG1R9+jh3r8P4+i7GO0annI /eFkigAtIAvCGWuK14B1Kx61rERze4Edi4wPrn3DPXhR4G+YMAFIRfRxndLW8vXR2zgAVdj3ys9 mQto3/EcRBNGt4aJ3zpvi5OQkpW04nsEyg6sycP6P/85ehBEv6Zic30ZIygbFW0pGfGzVJotNeU InEEUsiWvaZJ0ryOTFLZGoux0qa6vV6oe/k/rTigEVS7Z/BsWab17gLsTCTXQcqEh7RvT3OIWMg Lugm0moVOHaBvgvSrVnOz+YUln/JlfG1REKVevv7z36Ukn6i3grvhqoyNCejSMHXLJ5NlTUUAGi bkwyleFIJl73/47s/XHVIAp5V/79HunTC/EMhC7RIQ6gGUceYhS0I4mMz9u8vlzCjLORZ0RtD4D +o/YMG8a8mZt3fsTQg9c3yXIUDHwdmsqjBJ2hVAI4+kXcCgxx6utbYcbL3Cty47ZT6y5dJfdW12 y0i4NyC71Kp+1GLUkf6R0ulqT75lqNy7cNKEcCwgexMk/WMqAWBKlHVhDKqF9HOplnBEHaU+3c0 okxRp8ki8X8Jowg== 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