Re: [PATCH v6 3/8] media: qcom: camss: Prepare CSID for C-PHY support

Frank Li <[email protected]>
Newsgroups org.kernel.vger.phone-devel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-media
Message-ID <aiHM94-IDjiJWeqe@lizhi-Precision-Tower-5810>
On Thu, Jun 04, 2026 at 02:34:49PM +0200, David Heidelberg wrote:
> On 03/06/2026 23:47, Frank Li wrote:
> > On Wed, Jun 03, 2026 at 01:30:41AM +0200, David Heidelberg wrote:
> > > 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 <[email protected]>
> > > Acked-by: Cory Keitz <[email protected]>
> > > Signed-off-by: David Heidelberg <[email protected]>
> > > ---
> > >   drivers/media/platform/qcom/camss/camss-csid-gen2.c | 1 +
> > >   drivers/media/platform/qcom/camss/camss-csid.c      | 1 +
> > >   drivers/media/platform/qcom/camss/camss-csid.h      | 1 +
> > >   3 files changed, 3 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..52ef730b10553 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 *csid,
> > >   	int val;
> > >
> > >   	if (!lane_cnt)
> > >   		lane_cnt = 4;
> > >
> > >   	val = (lane_cnt - 1) << CSI2_RX_CFG0_NUM_ACTIVE_LANES;
> > >   	val |= phy->lane_assign << CSI2_RX_CFG0_DL0_INPUT_SEL;
> > >   	val |= phy->csiphy_id << CSI2_RX_CFG0_PHY_NUM_SEL;
> > > +	val |= csid->phy.cphy << CSI2_RX_CFG0_PHY_TYPE_SEL;
> >
> > shift a bool type is not good habbit. some compiler may treat as undefine
> > beheavor.
> >
> > Frank
>
> Oh I found out Bryan commented on the older revisions about the boolean usage.
>
> So idea is convert this to:
>
> +enum csid_phy_sel {
> +       CSID_PHY_SEL_DPHY = 0,
> +       CSID_PHY_SEL_CPHY = 1
> +};
> +
>
> [...]
>
>  struct csid_phy_config {
>         u8 csiphy_id;
>         u8 lane_cnt;
>         u32 lane_assign;
>         u32 en_vc;
>         u8 need_vc_update;
> -       bool cphy;
> +       enum csid_phy_sel phy_sel;
>  };
>
> Frank, Bryan, snds good?

good for me

Frank
>
> >
> > >   	writel_relaxed(val, csid->base + CSID_CSI2_RX_CFG0);
> > >
> > >   	val = 1 << CSI2_RX_CFG1_PACKET_ECC_CORRECTION_EN;
> > >   	if (vc > 3)
> > >   		val |= 1 << CSI2_RX_CFG1_VC_MODE;
> > >   	val |= 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..8d5c872f84ed5 100644
> > > --- a/drivers/media/platform/qcom/camss/camss-csid.c
> > > +++ b/drivers/media/platform/qcom/camss/camss-csid.c
> > > @@ -1286,16 +1286,17 @@ static int csid_link_setup(struct media_entity *entity,
> > >   			/* do no allow a link from CSIPHY to CSID */
> > >   			if (!csiphy->cfg.csi2)
> > >   				return -EPERM;
> > >
> > >   			csid->phy.csiphy_id = csiphy->id;
> > >
> > >   			lane_cfg = &csiphy->cfg.csi2->lane_cfg;
> > >   			csid->phy.lane_cnt = lane_cfg->num_data;
> > > +			csid->phy.cphy = (lane_cfg->phy_cfg == V4L2_MBUS_CSI2_CPHY);
> > >   			csid->phy.lane_assign = csid_get_lane_assign(lane_cfg, lane_cfg->num_data);
> > >   			csid->tpg_linked = 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 = media_entity_to_v4l2_subdev(entity);
> > >   		struct csid_device *csid = 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..00e2669db64c9 100644
> > > --- a/drivers/media/platform/qcom/camss/camss-csid.h
> > > +++ b/drivers/media/platform/qcom/camss/camss-csid.h
> > > @@ -65,16 +65,17 @@ struct csid_testgen_config {
> > >   };
> > >
> > >   struct csid_phy_config {
> > >   	u8 csiphy_id;
> > >   	u8 lane_cnt;
> > >   	u32 lane_assign;
> > >   	u32 en_vc;
> > >   	u8 need_vc_update;
> > > +	bool cphy;
> > >   };
> > >
> > >   struct csid_device;
> > >
> > >   struct csid_hw_ops {
> > >   	/*
> > >   	 * configure_stream - Configures and starts CSID input stream
> > >   	 * @csid: CSID device
> > >
> > > --
> > > 2.53.0
> > >
>
> --
> David Heidelberg
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.