#include "smd-rpm.h"
 #include "icc-rpm.h"
 
+/* QNOC QoS */
+#define QNOC_QOS_MCTL_LOWn_ADDR(n)     (0x8 + (n * 0x1000))
+#define QNOC_QOS_MCTL_DFLT_PRIO_MASK   0x70
+#define QNOC_QOS_MCTL_DFLT_PRIO_SHIFT  4
+#define QNOC_QOS_MCTL_URGFWD_EN_MASK   0x8
+#define QNOC_QOS_MCTL_URGFWD_EN_SHIFT  3
+
 /* BIMC QoS */
 #define M_BKE_REG_BASE(n)              (0x300 + (0x4000 * n))
 #define M_BKE_EN_ADDR(n)               (M_BKE_REG_BASE(n))
 #define NOC_QOS_MODEn_ADDR(n)          (0xc + (n * 0x1000))
 #define NOC_QOS_MODEn_MASK             0x3
 
+static int qcom_icc_set_qnoc_qos(struct icc_node *src, u64 max_bw)
+{
+       struct icc_provider *provider = src->provider;
+       struct qcom_icc_provider *qp = to_qcom_provider(provider);
+       struct qcom_icc_node *qn = src->data;
+       struct qcom_icc_qos *qos = &qn->qos;
+       int rc;
+
+       rc = regmap_update_bits(qp->regmap,
+                       qp->qos_offset + QNOC_QOS_MCTL_LOWn_ADDR(qos->qos_port),
+                       QNOC_QOS_MCTL_DFLT_PRIO_MASK,
+                       qos->areq_prio << QNOC_QOS_MCTL_DFLT_PRIO_SHIFT);
+       if (rc)
+               return rc;
+
+       return regmap_update_bits(qp->regmap,
+                       qp->qos_offset + QNOC_QOS_MCTL_LOWn_ADDR(qos->qos_port),
+                       QNOC_QOS_MCTL_URGFWD_EN_MASK,
+                       !!qos->urg_fwd_en << QNOC_QOS_MCTL_URGFWD_EN_SHIFT);
+}
+
 static int qcom_icc_bimc_set_qos_health(struct qcom_icc_provider *qp,
                                        struct qcom_icc_qos *qos,
                                        int regnum)
 
        dev_dbg(node->provider->dev, "Setting QoS for %s\n", qn->name);
 
-       if (qp->type == QCOM_ICC_BIMC)
+       switch (qp->type) {
+       case QCOM_ICC_BIMC:
                return qcom_icc_set_bimc_qos(node, sum_bw);
-
-       return qcom_icc_set_noc_qos(node, sum_bw);
+       case QCOM_ICC_QNOC:
+               return qcom_icc_set_qnoc_qos(node, sum_bw);
+       default:
+               return qcom_icc_set_noc_qos(node, sum_bw);
+       }
 }
 
 static int qcom_icc_rpm_set(int mas_rpm_id, int slv_rpm_id, u64 sum_bw)