Message ID | 20250417145819.626733-4-loic.poulain@oss.qualcomm.com |
---|---|
State | Superseded |
Headers | show |
Series | media: qcom: camss: Add qcm2290 support | expand |
On 17/04/2025 15:58, Loic Poulain wrote: > This is the CSI PHY version found in QCS2290/QCM2290 SoCs. > The table is extracted from downstream camera driver. > > Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com> > --- > .../qcom/camss/camss-csiphy-3ph-1-0.c | 89 +++++++++++++++++++ > drivers/media/platform/qcom/camss/camss.h | 1 + > 2 files changed, 90 insertions(+) > > 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 f732a76de93e..1857c802cf70 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 > @@ -319,6 +319,90 @@ csiphy_lane_regs lane_regs_sm8250[] = { > {0x0884, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > }; > > +/* GEN2 2.0.1 2PH DPHY mode */ I'd be grateful if the comment could be more specific here: https://gitlab.freedesktop.org/linux-media/media-committers/-/blob/next/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c?ref_type=heads#L427 Process node and "mission mode" if you can find it would be appreciated. > +static const struct > +csiphy_lane_regs lane_regs_qcm2290[] = { > + {0x0030, 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x002c, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0034, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0028, 0x04, 0x00, CSIPHY_DNP_PARAMS}, > + {0x003c, 0xb8, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x001c, 0x0a, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0000, 0xd7, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0004, 0x08, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0020, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0008, 0x04, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, > + {0x000c, 0xff, 0x00, CSIPHY_DNP_PARAMS}, > + {0x0010, 0x50, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0038, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0060, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0064, 0x3f, 0x00, CSIPHY_DEFAULT_PARAMS}, > + > + {0x0730, 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x072c, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0734, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0728, 0x04, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x073c, 0xb8, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x071c, 0x0a, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0700, 0xc0, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0704, 0x08, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0720, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0708, 0x04, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, > + {0x070c, 0xff, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0710, 0x50, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0738, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0760, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0764, 0x3f, 0x00, CSIPHY_DEFAULT_PARAMS}, > + > + {0x0230, 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x022c, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0234, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0228, 0x04, 0x00, CSIPHY_DNP_PARAMS}, > + {0x023c, 0xb8, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x021c, 0x0a, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0200, 0xd7, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0204, 0x08, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0220, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0208, 0x04, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, > + {0x020c, 0xff, 0x00, CSIPHY_DNP_PARAMS}, > + {0x0210, 0x50, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0238, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0260, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0264, 0x3f, 0x00, CSIPHY_DEFAULT_PARAMS}, > + > + {0x0430, 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x042c, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0434, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0428, 0x04, 0x00, CSIPHY_DNP_PARAMS}, > + {0x043c, 0xb8, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x041c, 0x0a, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0400, 0xd7, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0404, 0x08, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0420, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0408, 0x04, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, > + {0x040C, 0xff, 0x00, CSIPHY_DNP_PARAMS}, > + {0x0410, 0x50, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0438, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0460, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0464, 0x3f, 0x00, CSIPHY_DEFAULT_PARAMS}, > + > + {0x0630, 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x062c, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0634, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0628, 0x04, 0x00, CSIPHY_DNP_PARAMS}, > + {0x063c, 0xb8, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x061c, 0x0a, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0600, 0xd7, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0604, 0x08, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0620, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0608, 0x04, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, > + {0x060C, 0xff, 0x00, CSIPHY_DNP_PARAMS}, > + {0x0610, 0x50, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0638, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0660, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, > + {0x0664, 0x3f, 0x00, CSIPHY_DEFAULT_PARAMS}, > +}; > + > /* GEN2 2.1.2 2PH DPHY mode */ > static const struct > csiphy_lane_regs lane_regs_sm8550[] = { > @@ -744,6 +828,7 @@ static bool csiphy_is_gen2(u32 version) > bool ret = false; > > switch (version) { > + case CAMSS_2290: > case CAMSS_7280: > case CAMSS_8250: > case CAMSS_8280XP: > @@ -829,6 +914,10 @@ static int csiphy_init(struct csiphy_device *csiphy) > regs->lane_regs = &lane_regs_sdm845[0]; > regs->lane_array_size = ARRAY_SIZE(lane_regs_sdm845); > break; > + case CAMSS_2290: > + regs->lane_regs = &lane_regs_qcm2290[0]; > + regs->lane_array_size = ARRAY_SIZE(lane_regs_qcm2290); > + break; > case CAMSS_7280: > case CAMSS_8250: > regs->lane_regs = &lane_regs_sm8250[0]; > diff --git a/drivers/media/platform/qcom/camss/camss.h b/drivers/media/platform/qcom/camss/camss.h > index 63c0afee154a..377707d91ff2 100644 > --- a/drivers/media/platform/qcom/camss/camss.h > +++ b/drivers/media/platform/qcom/camss/camss.h > @@ -78,6 +78,7 @@ enum pm_domain { > > enum camss_version { > CAMSS_660, > + CAMSS_2290, > CAMSS_7280, > CAMSS_8x16, > CAMSS_8x53, Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
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 f732a76de93e..1857c802cf70 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 @@ -319,6 +319,90 @@ csiphy_lane_regs lane_regs_sm8250[] = { {0x0884, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, }; +/* GEN2 2.0.1 2PH DPHY mode */ +static const struct +csiphy_lane_regs lane_regs_qcm2290[] = { + {0x0030, 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x002c, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0034, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0028, 0x04, 0x00, CSIPHY_DNP_PARAMS}, + {0x003c, 0xb8, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x001c, 0x0a, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0000, 0xd7, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0004, 0x08, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0020, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0008, 0x04, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, + {0x000c, 0xff, 0x00, CSIPHY_DNP_PARAMS}, + {0x0010, 0x50, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0038, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0060, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0064, 0x3f, 0x00, CSIPHY_DEFAULT_PARAMS}, + + {0x0730, 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x072c, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0734, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0728, 0x04, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x073c, 0xb8, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x071c, 0x0a, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0700, 0xc0, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0704, 0x08, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0720, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0708, 0x04, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, + {0x070c, 0xff, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0710, 0x50, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0738, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0760, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0764, 0x3f, 0x00, CSIPHY_DEFAULT_PARAMS}, + + {0x0230, 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x022c, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0234, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0228, 0x04, 0x00, CSIPHY_DNP_PARAMS}, + {0x023c, 0xb8, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x021c, 0x0a, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0200, 0xd7, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0204, 0x08, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0220, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0208, 0x04, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, + {0x020c, 0xff, 0x00, CSIPHY_DNP_PARAMS}, + {0x0210, 0x50, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0238, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0260, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0264, 0x3f, 0x00, CSIPHY_DEFAULT_PARAMS}, + + {0x0430, 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x042c, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0434, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0428, 0x04, 0x00, CSIPHY_DNP_PARAMS}, + {0x043c, 0xb8, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x041c, 0x0a, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0400, 0xd7, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0404, 0x08, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0420, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0408, 0x04, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, + {0x040C, 0xff, 0x00, CSIPHY_DNP_PARAMS}, + {0x0410, 0x50, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0438, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0460, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0464, 0x3f, 0x00, CSIPHY_DEFAULT_PARAMS}, + + {0x0630, 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x062c, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0634, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0628, 0x04, 0x00, CSIPHY_DNP_PARAMS}, + {0x063c, 0xb8, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x061c, 0x0a, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0600, 0xd7, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0604, 0x08, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0620, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0608, 0x04, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, + {0x060C, 0xff, 0x00, CSIPHY_DNP_PARAMS}, + {0x0610, 0x50, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0638, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0660, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, + {0x0664, 0x3f, 0x00, CSIPHY_DEFAULT_PARAMS}, +}; + /* GEN2 2.1.2 2PH DPHY mode */ static const struct csiphy_lane_regs lane_regs_sm8550[] = { @@ -744,6 +828,7 @@ static bool csiphy_is_gen2(u32 version) bool ret = false; switch (version) { + case CAMSS_2290: case CAMSS_7280: case CAMSS_8250: case CAMSS_8280XP: @@ -829,6 +914,10 @@ static int csiphy_init(struct csiphy_device *csiphy) regs->lane_regs = &lane_regs_sdm845[0]; regs->lane_array_size = ARRAY_SIZE(lane_regs_sdm845); break; + case CAMSS_2290: + regs->lane_regs = &lane_regs_qcm2290[0]; + regs->lane_array_size = ARRAY_SIZE(lane_regs_qcm2290); + break; case CAMSS_7280: case CAMSS_8250: regs->lane_regs = &lane_regs_sm8250[0]; diff --git a/drivers/media/platform/qcom/camss/camss.h b/drivers/media/platform/qcom/camss/camss.h index 63c0afee154a..377707d91ff2 100644 --- a/drivers/media/platform/qcom/camss/camss.h +++ b/drivers/media/platform/qcom/camss/camss.h @@ -78,6 +78,7 @@ enum pm_domain { enum camss_version { CAMSS_660, + CAMSS_2290, CAMSS_7280, CAMSS_8x16, CAMSS_8x53,
This is the CSI PHY version found in QCS2290/QCM2290 SoCs. The table is extracted from downstream camera driver. Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com> --- .../qcom/camss/camss-csiphy-3ph-1-0.c | 89 +++++++++++++++++++ drivers/media/platform/qcom/camss/camss.h | 1 + 2 files changed, 90 insertions(+)