media: qcom: camss: Pass icc bandwidth table as a platform parameter
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>
Mon, 25 Sep 2023 15:46:54 +0000 (16:46 +0100)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Sat, 7 Oct 2023 08:55:44 +0000 (10:55 +0200)
Pass the bandwidth table as a platform parameter not if/else derived
pointer to the static table.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Acked-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/platform/qcom/camss/camss.c
drivers/media/platform/qcom/camss/camss.h

index 8fa5dee75672d00b7ba3d4d531447a274156e18d..f502b4d9e07c5634a39e4c4fbfca931e38361116 100644 (file)
@@ -1485,21 +1485,15 @@ fail_pm:
 static int camss_icc_get(struct camss *camss)
 {
        const struct resources_icc *icc_res;
-       int nbr_icc_paths = 0;
        int i;
 
-       if (camss->version == CAMSS_8250) {
-               icc_res = &icc_res_sm8250[0];
-               nbr_icc_paths = ICC_SM8250_COUNT;
-       }
+       icc_res = camss->res->icc_res;
 
-       for (i = 0; i < nbr_icc_paths; i++) {
+       for (i = 0; i < camss->res->icc_path_num; i++) {
                camss->icc_path[i] = devm_of_icc_get(camss->dev,
                                                     icc_res[i].name);
                if (IS_ERR(camss->icc_path[i]))
                        return PTR_ERR(camss->icc_path[i]);
-
-               camss->icc_bw_tbl[i] = icc_res[i].icc_bw_tbl;
        }
 
        return 0;
@@ -1742,6 +1736,8 @@ static const struct camss_resources sm8250_resources = {
        .csiphy_res = csiphy_res_8250,
        .csid_res = csid_res_8250,
        .vfe_res = vfe_res_8250,
+       .icc_res = icc_res_sm8250,
+       .icc_path_num = ARRAY_SIZE(icc_res_sm8250),
 };
 
 static const struct of_device_id camss_dt_match[] = {
@@ -1758,14 +1754,10 @@ MODULE_DEVICE_TABLE(of, camss_dt_match);
 static int __maybe_unused camss_runtime_suspend(struct device *dev)
 {
        struct camss *camss = dev_get_drvdata(dev);
-       int nbr_icc_paths = 0;
        int i;
        int ret;
 
-       if (camss->version == CAMSS_8250)
-               nbr_icc_paths = ICC_SM8250_COUNT;
-
-       for (i = 0; i < nbr_icc_paths; i++) {
+       for (i = 0; i < camss->res->icc_path_num; i++) {
                ret = icc_set_bw(camss->icc_path[i], 0, 0);
                if (ret)
                        return ret;
@@ -1777,17 +1769,14 @@ static int __maybe_unused camss_runtime_suspend(struct device *dev)
 static int __maybe_unused camss_runtime_resume(struct device *dev)
 {
        struct camss *camss = dev_get_drvdata(dev);
-       int nbr_icc_paths = 0;
+       const struct resources_icc *icc_res = camss->res->icc_res;
        int i;
        int ret;
 
-       if (camss->version == CAMSS_8250)
-               nbr_icc_paths = ICC_SM8250_COUNT;
-
-       for (i = 0; i < nbr_icc_paths; i++) {
+       for (i = 0; i < camss->res->icc_path_num; i++) {
                ret = icc_set_bw(camss->icc_path[i],
-                                camss->icc_bw_tbl[i].avg,
-                                camss->icc_bw_tbl[i].peak);
+                                icc_res[i].icc_bw_tbl.avg,
+                                icc_res[i].icc_bw_tbl.peak);
                if (ret)
                        return ret;
        }
index 20c84e832888094f87afe3ce3d20487a41dafac1..8b2e4adb923ef31af07bb7060f25c9e9b8c130f1 100644 (file)
@@ -84,6 +84,8 @@ struct camss_resources {
        const struct camss_subdev_resources *csid_res;
        const struct camss_subdev_resources *ispif_res;
        const struct camss_subdev_resources *vfe_res;
+       const struct resources_icc *icc_res;
+       const unsigned int icc_path_num;
 };
 
 struct camss {
@@ -105,7 +107,6 @@ struct camss {
        struct device **genpd;
        struct device_link **genpd_link;
        struct icc_path *icc_path[ICC_SM8250_COUNT];
-       struct icc_bw_tbl icc_bw_tbl[ICC_SM8250_COUNT];
        const struct camss_resources *res;
 };