From: David Heidelberg <[email protected]> Make sure we have proper lane registers definition in-place for each generation, otherwise C-PHY won't work.
Signed-off-by: David Heidelberg <[email protected]> --- .../platform/qcom/camss/camss-csiphy-3ph-1-0.c | 48 ++++++++++++++++------ 1 file changed, 36 insertions(+), 12 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 6d6dd54c5ac9c..c957f7dbfb243 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 @@ -1222,8 +1222,12 @@ static void csiphy_lanes_enable(struct csiphy_device *csiphy, } break; case CAMSS_2290: - regs->lane_regs = &lane_regs_qcm2290[0]; - regs->lane_array_size = ARRAY_SIZE(lane_regs_qcm2290); + if (c->phy_cfg == V4L2_MBUS_CSI2_CPHY) { + dev_err(dev, "Missing lane_regs definition for %d\n", c->phy_cfg); + } else { /* V4L2_MBUS_CSI2_DPHY */ + regs->lane_regs = &lane_regs_qcm2290[0]; + regs->lane_array_size = ARRAY_SIZE(lane_regs_qcm2290); + } break; case CAMSS_7280: case CAMSS_8250: @@ -1236,25 +1240,45 @@ static void csiphy_lanes_enable(struct csiphy_device *csiphy, } break; case CAMSS_8280XP: - regs->lane_regs = &lane_regs_sc8280xp[0]; - regs->lane_array_size = ARRAY_SIZE(lane_regs_sc8280xp); + if (c->phy_cfg == V4L2_MBUS_CSI2_CPHY) { + dev_err(dev, "Missing lane_regs definition for %d\n", c->phy_cfg); + } else { /* V4L2_MBUS_CSI2_DPHY */ + regs->lane_regs = &lane_regs_sc8280xp[0]; + regs->lane_array_size = ARRAY_SIZE(lane_regs_sc8280xp); + } break; case CAMSS_X1E80100: - regs->lane_regs = &lane_regs_x1e80100[0]; - regs->lane_array_size = ARRAY_SIZE(lane_regs_x1e80100); + if (c->phy_cfg == V4L2_MBUS_CSI2_CPHY) { + dev_err(dev, "Missing lane_regs definition for %d\n", c->phy_cfg); + } else { /* V4L2_MBUS_CSI2_DPHY */ + regs->lane_regs = &lane_regs_x1e80100[0]; + regs->lane_array_size = ARRAY_SIZE(lane_regs_x1e80100); + } break; case CAMSS_8550: - regs->lane_regs = &lane_regs_sm8550[0]; - regs->lane_array_size = ARRAY_SIZE(lane_regs_sm8550); + if (c->phy_cfg == V4L2_MBUS_CSI2_CPHY) { + dev_err(dev, "Missing lane_regs definition for %d\n", c->phy_cfg); + } else { /* V4L2_MBUS_CSI2_DPHY */ + regs->lane_regs = &lane_regs_sm8550[0]; + regs->lane_array_size = ARRAY_SIZE(lane_regs_sm8550); + } break; case CAMSS_8650: - regs->lane_regs = &lane_regs_sm8650[0]; - regs->lane_array_size = ARRAY_SIZE(lane_regs_sm8650); + if (c->phy_cfg == V4L2_MBUS_CSI2_CPHY) { + dev_err(dev, "Missing lane_regs definition for %d\n", c->phy_cfg); + } else { /* V4L2_MBUS_CSI2_DPHY */ + regs->lane_regs = &lane_regs_sm8650[0]; + regs->lane_array_size = ARRAY_SIZE(lane_regs_sm8650); + } break; case CAMSS_8300: case CAMSS_8775P: - regs->lane_regs = &lane_regs_sa8775p[0]; - regs->lane_array_size = ARRAY_SIZE(lane_regs_sa8775p); + if (c->phy_cfg == V4L2_MBUS_CSI2_CPHY) { + dev_err(dev, "Missing lane_regs definition for %d\n", c->phy_cfg); + } else { /* V4L2_MBUS_CSI2_DPHY */ + regs->lane_regs = &lane_regs_sa8775p[0]; + regs->lane_array_size = ARRAY_SIZE(lane_regs_sa8775p); + } break; default: break; -- 2.51.0

