Re: [PATCH 1/6] media: qcom: camss: Program CSIPHY common control registers
From: Anusha Arun Nandi
Date: Mon Jul 20 2026 - 16:02:09 EST
On 7/20/2026 12:56 AM, Loic Poulain wrote:
> On Sat, Jul 18, 2026 at 1:13 AM Anusha Arun Nandi
> <anusha.nandi@xxxxxxxxxxxxxxxx> wrote:
>>
>> From: Jigarkumar Zala <jigarkumar.zala@xxxxxxxxxxxxxxxx>
>>
>> Program the CSIPHY common-control registers during lane enable so
>> SA8775P uses the required 3-phase 1.5 Gsps reset-release values for
>> both C-PHY and D-PHY. Keep the existing reset-release value for the
>> other CAMSS variants.
>>
>> Co-developed-by: Anusha Arun Nandi <anusha.nandi@xxxxxxxxxxxxxxxx>
>> Signed-off-by: Anusha Arun Nandi <anusha.nandi@xxxxxxxxxxxxxxxx>
>> Signed-off-by: Jigarkumar Zala <jigarkumar.zala@xxxxxxxxxxxxxxxx>
>> ---
>> .../qcom/camss/camss-csiphy-3ph-1-0.c | 36 ++++++++++++++++---
>> 1 file changed, 31 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c b/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c
>> index 25a3554ef201..11b7a236e607 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
>> @@ -1031,8 +1031,6 @@ static void csiphy_reset(struct csiphy_device *csiphy)
>> writel_relaxed(0x1, csiphy->base +
>> CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 0));
>> usleep_range(5000, 8000);
>> - writel_relaxed(0x0, csiphy->base +
>> - CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 0));
>> }
>>
>> static irqreturn_t csiphy_isr(int irq, void *dev)
>> @@ -1343,9 +1341,37 @@ static void csiphy_lanes_enable(struct csiphy_device *csiphy,
>> writel_relaxed(val, csiphy->base +
>> CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 6));
>>
>> - val = 0x02;
>> - writel_relaxed(val, csiphy->base +
>> - CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 7));
>> + switch (csiphy->camss->res->version) {
>> + case CAMSS_8300:
>> + case CAMSS_8775P:
>> + if (c->phy_cfg == V4L2_MBUS_CSI2_CPHY) {
>> + val = 0x5A;
>> + writel_relaxed(val, csiphy->base +
>> + CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 7));
>> + val = 0xE;
>> + writel_relaxed(val, csiphy->base +
>> + CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 0));
>> + } else {
>> + val = 0x02;
>> + writel_relaxed(val, csiphy->base +
>> + CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 7));
>> + writel_relaxed(val, csiphy->base +
>> + CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 0));
>> + }
>> + break;
>> + case CAMSS_7280:
>> + case CAMSS_8250:
>> + case CAMSS_8280XP:
>> + case CAMSS_845:
>> + default:
>> + val = 0x02;
>> + writel_relaxed(val, csiphy->base +
>> + CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 7));
>> + val = 0x0;
>> + writel_relaxed(val, csiphy->base +
>> + CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(regs->offset, 0));
>> + break;
>> + }
>
> I don't really like this big camss-version switch case with magic,
> which also introduces more magic values. Maybe we should have a
> different version of csiphy_lanes_enable, based on the phy compatible
> or revision.
>
Thank you for the feedback! We agree with your suggestion and will
refactor this to use a version-specific implementation of
csiphy_lanes_enable, based on the PHY compatible or revision, in the
upcoming patchset.>>
>> val = 0x00;
>> writel_relaxed(val, csiphy->base +
>> --
>> 2.34.1
>>
>>