diff --git a/drivers/interconnect/qcom/qnoc-qos.c b/drivers/interconnect/qcom/qnoc-qos.c index 2eb98897a216..d87ca48a0eb6 100644 --- a/drivers/interconnect/qcom/qnoc-qos.c +++ b/drivers/interconnect/qcom/qnoc-qos.c @@ -16,6 +16,8 @@ #define QOS_SLV_URG_MSG_EN_SHFT 3 # define QOS_DFLT_PRIO_MASK 0x7 # define QOS_DFLT_PRIO_SHFT 4 +#define QOS_DISABLE_SHIFT 24 + const u8 icc_qnoc_qos_regs[][QOSGEN_OFF_MAX_REGS] = { [ICC_QNOC_QOSGEN_TYPE_RPMH] = { @@ -45,6 +47,10 @@ static void qcom_icc_set_qos(struct qcom_icc_node *node) return; for (port = 0; port < qos->num_ports; port++) { + regmap_update_bits(node->regmap, QOSGEN_MAINCTL_LO(qos, port), + BIT(QOS_DISABLE_SHIFT), + qos->config->prio_fwd_disable << QOS_DISABLE_SHIFT); + regmap_update_bits(node->regmap, QOSGEN_MAINCTL_LO(qos, port), QOS_DFLT_PRIO_MASK << QOS_DFLT_PRIO_SHFT, qos->config->prio << QOS_DFLT_PRIO_SHFT); diff --git a/drivers/interconnect/qcom/qnoc-qos.h b/drivers/interconnect/qcom/qnoc-qos.h index f22d0cd0e3ac..4f04dd781190 100644 --- a/drivers/interconnect/qcom/qnoc-qos.h +++ b/drivers/interconnect/qcom/qnoc-qos.h @@ -32,6 +32,7 @@ struct qcom_icc_noc_ops { struct qos_config { u32 prio; u32 urg_fwd; + bool prio_fwd_disable; }; struct qcom_icc_qosbox {