|
44 | 44 | #define NOC_PERM_MODE_BYPASS (1 << NOC_QOS_MODE_BYPASS)
|
45 | 45 |
|
46 | 46 | #define NOC_QOS_PRIORITYn_ADDR(n) (0x8 + (n * 0x1000))
|
47 |
| -#define NOC_QOS_PRIORITY_MASK 0xf |
| 47 | +#define NOC_QOS_PRIORITY_P1_MASK 0xc |
| 48 | +#define NOC_QOS_PRIORITY_P0_MASK 0x3 |
48 | 49 | #define NOC_QOS_PRIORITY_P1_SHIFT 0x2
|
49 |
| -#define NOC_QOS_PRIORITY_P0_SHIFT 0x3 |
50 | 50 |
|
51 | 51 | #define NOC_QOS_MODEn_ADDR(n) (0xc + (n * 0x1000))
|
52 | 52 | #define NOC_QOS_MODEn_MASK 0x3
|
@@ -173,6 +173,16 @@ static const struct clk_bulk_data bus_mm_clocks[] = {
|
173 | 173 | { .id = "iface" },
|
174 | 174 | };
|
175 | 175 |
|
| 176 | +static const struct clk_bulk_data bus_a2noc_clocks[] = { |
| 177 | + { .id = "bus" }, |
| 178 | + { .id = "bus_a" }, |
| 179 | + { .id = "ipa" }, |
| 180 | + { .id = "ufs_axi" }, |
| 181 | + { .id = "aggre2_ufs_axi" }, |
| 182 | + { .id = "aggre2_usb3_axi" }, |
| 183 | + { .id = "cfg_noc_usb2_axi" }, |
| 184 | +}; |
| 185 | + |
176 | 186 | /**
|
177 | 187 | * struct qcom_icc_provider - Qualcomm specific interconnect provider
|
178 | 188 | * @provider: generic interconnect provider
|
@@ -307,7 +317,7 @@ DEFINE_QNODE(slv_bimc_cfg, SDM660_SLAVE_BIMC_CFG, 4, -1, 56, true, -1, 0, -1, 0)
|
307 | 317 | DEFINE_QNODE(slv_prng, SDM660_SLAVE_PRNG, 4, -1, 44, true, -1, 0, -1, 0);
|
308 | 318 | DEFINE_QNODE(slv_spdm, SDM660_SLAVE_SPDM, 4, -1, 60, true, -1, 0, -1, 0);
|
309 | 319 | DEFINE_QNODE(slv_qdss_cfg, SDM660_SLAVE_QDSS_CFG, 4, -1, 63, true, -1, 0, -1, 0);
|
310 |
| -DEFINE_QNODE(slv_cnoc_mnoc_cfg, SDM660_SLAVE_BLSP_1, 4, -1, 66, true, -1, 0, -1, SDM660_MASTER_CNOC_MNOC_CFG); |
| 320 | +DEFINE_QNODE(slv_cnoc_mnoc_cfg, SDM660_SLAVE_CNOC_MNOC_CFG, 4, -1, 66, true, -1, 0, -1, SDM660_MASTER_CNOC_MNOC_CFG); |
311 | 321 | DEFINE_QNODE(slv_snoc_cfg, SDM660_SLAVE_SNOC_CFG, 4, -1, 70, true, -1, 0, -1, 0);
|
312 | 322 | DEFINE_QNODE(slv_qm_cfg, SDM660_SLAVE_QM_CFG, 4, -1, 212, true, -1, 0, -1, 0);
|
313 | 323 | DEFINE_QNODE(slv_clk_ctl, SDM660_SLAVE_CLK_CTL, 4, -1, 47, true, -1, 0, -1, 0);
|
@@ -624,13 +634,12 @@ static int qcom_icc_noc_set_qos_priority(struct regmap *rmap,
|
624 | 634 | /* Must be updated one at a time, P1 first, P0 last */
|
625 | 635 | val = qos->areq_prio << NOC_QOS_PRIORITY_P1_SHIFT;
|
626 | 636 | rc = regmap_update_bits(rmap, NOC_QOS_PRIORITYn_ADDR(qos->qos_port),
|
627 |
| - NOC_QOS_PRIORITY_MASK, val); |
| 637 | + NOC_QOS_PRIORITY_P1_MASK, val); |
628 | 638 | if (rc)
|
629 | 639 | return rc;
|
630 | 640 |
|
631 |
| - val = qos->prio_level << NOC_QOS_PRIORITY_P0_SHIFT; |
632 | 641 | return regmap_update_bits(rmap, NOC_QOS_PRIORITYn_ADDR(qos->qos_port),
|
633 |
| - NOC_QOS_PRIORITY_MASK, val); |
| 642 | + NOC_QOS_PRIORITY_P0_MASK, qos->prio_level); |
634 | 643 | }
|
635 | 644 |
|
636 | 645 | static int qcom_icc_set_noc_qos(struct icc_node *src, u64 max_bw)
|
@@ -810,6 +819,10 @@ static int qnoc_probe(struct platform_device *pdev)
|
810 | 819 | qp->bus_clks = devm_kmemdup(dev, bus_mm_clocks,
|
811 | 820 | sizeof(bus_mm_clocks), GFP_KERNEL);
|
812 | 821 | qp->num_clks = ARRAY_SIZE(bus_mm_clocks);
|
| 822 | + } else if (of_device_is_compatible(dev->of_node, "qcom,sdm660-a2noc")) { |
| 823 | + qp->bus_clks = devm_kmemdup(dev, bus_a2noc_clocks, |
| 824 | + sizeof(bus_a2noc_clocks), GFP_KERNEL); |
| 825 | + qp->num_clks = ARRAY_SIZE(bus_a2noc_clocks); |
813 | 826 | } else {
|
814 | 827 | if (of_device_is_compatible(dev->of_node, "qcom,sdm660-bimc"))
|
815 | 828 | qp->is_bimc_node = true;
|
|
0 commit comments