]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
media: qcom: camss: csiphy: Add an init callback to CSI PHY devices
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>
Mon, 13 Jan 2025 04:31:21 +0000 (10:01 +0530)
committerHans Verkuil <hverkuil@xs4all.nl>
Thu, 6 Feb 2025 12:49:31 +0000 (13:49 +0100)
Add a nop init callback to CSIPHY devices, this callback is used to add
some HW register offset and register configuration for specific platform,
then different platform can reuse the same CSIPHY driver. Later changes
will enumerate with enabling code.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Depeng Shao <quic_depengs@quicinc.com>
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
drivers/media/platform/qcom/camss/camss-csiphy-2ph-1-0.c
drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c
drivers/media/platform/qcom/camss/camss-csiphy.c
drivers/media/platform/qcom/camss/camss-csiphy.h

index cd4a8c369234f15aac1160fbe3b07302b1f25612..9d67e7fa6366a0e45f7e997d0cfecf1f60e5c12e 100644 (file)
@@ -180,6 +180,11 @@ static irqreturn_t csiphy_isr(int irq, void *dev)
        return IRQ_HANDLED;
 }
 
+static int csiphy_init(struct csiphy_device *csiphy)
+{
+       return 0;
+}
+
 const struct csiphy_hw_ops csiphy_ops_2ph_1_0 = {
        .get_lane_mask = csiphy_get_lane_mask,
        .hw_version_read = csiphy_hw_version_read,
@@ -187,4 +192,5 @@ const struct csiphy_hw_ops csiphy_ops_2ph_1_0 = {
        .lanes_enable = csiphy_lanes_enable,
        .lanes_disable = csiphy_lanes_disable,
        .isr = csiphy_isr,
+       .init = csiphy_init,
 };
index 73e4c05a9dec08d6812763eabd6c8b7bbd8e94aa..b283df7634bb6aa847304fd97c522edff58b3287 100644 (file)
@@ -586,6 +586,11 @@ static void csiphy_lanes_disable(struct csiphy_device *csiphy,
                          CSIPHY_3PH_CMN_CSI_COMMON_CTRLn(6));
 }
 
+static int csiphy_init(struct csiphy_device *csiphy)
+{
+       return 0;
+}
+
 const struct csiphy_hw_ops csiphy_ops_3ph_1_0 = {
        .get_lane_mask = csiphy_get_lane_mask,
        .hw_version_read = csiphy_hw_version_read,
@@ -593,4 +598,5 @@ const struct csiphy_hw_ops csiphy_ops_3ph_1_0 = {
        .lanes_enable = csiphy_lanes_enable,
        .lanes_disable = csiphy_lanes_disable,
        .isr = csiphy_isr,
+       .init = csiphy_init,
 };
index 3791c2d8a6cf4829fe39c56e3b239f152dfd52c4..c053616558a73c4a285a576c671aca47d05290f8 100644 (file)
@@ -594,6 +594,10 @@ int msm_csiphy_subdev_init(struct camss *camss,
        csiphy->cfg.combo_mode = 0;
        csiphy->res = &res->csiphy;
 
+       ret = csiphy->res->hw_ops->init(csiphy);
+       if (ret)
+               return ret;
+
        /* Memory */
 
        csiphy->base = devm_platform_ioremap_resource_byname(pdev, res->reg[0]);
index 90cc3f97664328ea5e97b472830d236472045ac5..49393dfd52153e9fad2e3cc5e3247b6b9f73a466 100644 (file)
@@ -77,6 +77,7 @@ struct csiphy_hw_ops {
        void (*lanes_disable)(struct csiphy_device *csiphy,
                              struct csiphy_config *cfg);
        irqreturn_t (*isr)(int irq, void *dev);
+       int (*init)(struct csiphy_device *csiphy);
 };
 
 struct csiphy_subdev_resources {