On Fri Jul 31 02:48:31 2026 +0300, Dikshita Agarwal wrote:
> AR50LT require explicit instantaneous bandwidth (IB) voting in addition
> to average bandwidth (AB) when configuring interconnect QoS. This
> requirement is due to QSB (Qualcomm System Bus) 128b to
> QNS ( Qualcomm Network Switch) 256b conversion at video noc in AR50LT
> which is not needed for other IRIS cores.
> 
> In preparation of adding support for AR50LT core, introduce
> platform-configurable IB multiplier and enable IB voting for all SoCs.
> Existing platforms default to IB == AB, while AR50LT requires 2x peak
> bandwidth.
> 
> Signed-off-by: Dikshita Agarwal <[email protected]>
> Reviewed-by: Vikash Garodia <[email protected]>
> Reviewed-by: Vishnu Reddy <[email protected]>
> Signed-off-by: Dmitry Baryshkov <[email protected]>
> Signed-off-by: Bryan O'Donoghue <[email protected]>

Patch committed.

Thanks,
Bryan O'Donoghue

 drivers/media/platform/qcom/iris/iris_platform_common.h | 1 +
 drivers/media/platform/qcom/iris/iris_platform_vpu2.c   | 2 ++
 drivers/media/platform/qcom/iris/iris_platform_vpu3x.c  | 5 +++++
 drivers/media/platform/qcom/iris/iris_resources.c       | 2 ++
 4 files changed, 10 insertions(+)

---

diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h 
b/drivers/media/platform/qcom/iris/iris_platform_common.h
index a35b487b50ee..4246c2dc5cd4 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_common.h
+++ b/drivers/media/platform/qcom/iris/iris_platform_common.h
@@ -319,6 +319,7 @@ struct iris_platform_data {
        u32 num_vpp_pipe;
        bool no_aon;
        u32 wd_intr_mask;
+       u32 icc_ib_multiplier;
        u32 max_session_count;
        /* max number of macroblocks per frame supported */
        u32 max_core_mbpf;
diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu2.c 
b/drivers/media/platform/qcom/iris/iris_platform_vpu2.c
index 562ff0d6716b..e594c7a25db3 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_vpu2.c
+++ b/drivers/media/platform/qcom/iris/iris_platform_vpu2.c
@@ -132,6 +132,7 @@ const struct iris_platform_data sc7280_data = {
        .num_vpp_pipe = 1,
        .no_aon = true,
        .wd_intr_mask = WRAPPER_INTR_STATUS_A2HWD_BMSK,
+       .icc_ib_multiplier = 1,
        .max_session_count = 16,
        .max_core_mbpf = 4096 * 2176 / 256 * 2 + 1920 * 1088 / 256,
        /* max spec for SC7280 is 4096x2176@60fps */
@@ -163,6 +164,7 @@ const struct iris_platform_data sm8250_data = {
        .tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_vpu2),
        .num_vpp_pipe = 4,
        .wd_intr_mask = WRAPPER_INTR_STATUS_A2HWD_BMSK,
+       .icc_ib_multiplier = 1,
        .max_session_count = 16,
        .max_core_mbpf = NUM_MBS_8K,
        .max_core_mbps = ((7680 * 4320) / 256) * 60,
diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c 
b/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c
index eeedde8fc9ce..b8099d7ce556 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c
+++ b/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c
@@ -116,6 +116,7 @@ const struct iris_platform_data qcs8300_data = {
        .tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_vpu3),
        .num_vpp_pipe = 2,
        .wd_intr_mask = WRAPPER_INTR_STATUS_A2HWD_BMSK,
+       .icc_ib_multiplier = 1,
        .max_session_count = 16,
        .max_core_mbpf = ((4096 * 2176) / 256) * 4,
        .max_core_mbps = (((3840 * 2176) / 256) * 120),
@@ -146,6 +147,7 @@ const struct iris_platform_data sm8550_data = {
        .tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_vpu3),
        .num_vpp_pipe = 4,
        .wd_intr_mask = WRAPPER_INTR_STATUS_A2HWD_BMSK,
+       .icc_ib_multiplier = 1,
        .max_session_count = 16,
        .max_core_mbpf = NUM_MBS_8K * 2,
        .max_core_mbps = ((7680 * 4320) / 256) * 60,
@@ -184,6 +186,7 @@ const struct iris_platform_data sm8650_data = {
        .tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_vpu3),
        .num_vpp_pipe = 4,
        .wd_intr_mask = WRAPPER_INTR_STATUS_A2HWD_BMSK,
+       .icc_ib_multiplier = 1,
        .max_session_count = 16,
        .max_core_mbpf = NUM_MBS_8K * 2,
        .max_core_mbps = ((7680 * 4320) / 256) * 60,
@@ -214,6 +217,7 @@ const struct iris_platform_data sm8750_data = {
        .tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_vpu3),
        .num_vpp_pipe = 4,
        .wd_intr_mask = WRAPPER_INTR_STATUS_A2HWD_BMSK,
+       .icc_ib_multiplier = 1,
        .max_session_count = 16,
        .max_core_mbpf = NUM_MBS_8K * 2,
        .max_core_mbps = ((7680 * 4320) / 256) * 60,
@@ -250,6 +254,7 @@ const struct iris_platform_data x1p42100_data = {
        .tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_vpu3),
        .num_vpp_pipe = 1,
        .wd_intr_mask = WRAPPER_INTR_STATUS_A2HWD_BMSK,
+       .icc_ib_multiplier = 1,
        .max_session_count = 16,
        .max_core_mbpf = NUM_MBS_8K * 2,
        .max_core_mbps = ((7680 * 4320) / 256) * 60,
diff --git a/drivers/media/platform/qcom/iris/iris_resources.c 
b/drivers/media/platform/qcom/iris/iris_resources.c
index 2c4d34c7bd77..883ef7e75291 100644
--- a/drivers/media/platform/qcom/iris/iris_resources.c
+++ b/drivers/media/platform/qcom/iris/iris_resources.c
@@ -18,6 +18,7 @@
 
 int iris_set_icc_bw(struct iris_core *core, unsigned long icc_bw)
 {
+       u32 icc_ib_multiplier = core->iris_platform_data->icc_ib_multiplier;
        unsigned long bw_kbps = 0, bw_prev = 0;
        const struct icc_info *icc_tbl;
        int ret = 0, i;
@@ -36,6 +37,7 @@ int iris_set_icc_bw(struct iris_core *core, unsigned long 
icc_bw)
                                return ret;
 
                        core->icc_tbl[i].avg_bw = bw_kbps;
+                       core->icc_tbl[i].peak_bw = bw_kbps * icc_ib_multiplier;
 
                        core->power.icc_bw = bw_kbps;
                        break;
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to