Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

interconnect: qcom: sm8650: enable QoS configuration

Enable QoS configuration for master ports with predefined values
for priority and urgency forwarding.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20250407-topic-sm8650-upstream-icc-qos-v1-1-93b33f99a455@linaro.org
Signed-off-by: Georgi Djakov <djakov@kernel.org>

authored by

Neil Armstrong and committed by
Georgi Djakov
40ef9b6b af73692e

+327
+327
drivers/interconnect/qcom/sm8650.c
··· 17 17 #include "icc-rpmh.h" 18 18 #include "sm8650.h" 19 19 20 + static const struct regmap_config icc_regmap_config = { 21 + .reg_bits = 32, 22 + .reg_stride = 4, 23 + .val_bits = 32, 24 + .fast_io = true, 25 + }; 26 + 27 + static struct qcom_icc_qosbox qhm_qspi_qos = { 28 + .num_ports = 1, 29 + .port_offsets = { 0xc000 }, 30 + .prio = 2, 31 + .urg_fwd = 0, 32 + .prio_fwd_disable = 0, 33 + }; 34 + 20 35 static struct qcom_icc_node qhm_qspi = { 21 36 .name = "qhm_qspi", 22 37 .id = SM8650_MASTER_QSPI_0, 23 38 .channels = 1, 24 39 .buswidth = 4, 40 + .qosbox = &qhm_qspi_qos, 25 41 .num_links = 1, 26 42 .links = { SM8650_SLAVE_A1NOC_SNOC }, 43 + }; 44 + 45 + static struct qcom_icc_qosbox qhm_qup1_qos = { 46 + .num_ports = 1, 47 + .port_offsets = { 0xd000 }, 48 + .prio = 2, 49 + .urg_fwd = 0, 50 + .prio_fwd_disable = 0, 27 51 }; 28 52 29 53 static struct qcom_icc_node qhm_qup1 = { ··· 55 31 .id = SM8650_MASTER_QUP_1, 56 32 .channels = 1, 57 33 .buswidth = 4, 34 + .qosbox = &qhm_qup1_qos, 58 35 .num_links = 1, 59 36 .links = { SM8650_SLAVE_A1NOC_SNOC }, 60 37 }; ··· 69 44 .links = { SM8650_SLAVE_A1NOC_SNOC }, 70 45 }; 71 46 47 + static struct qcom_icc_qosbox xm_sdc4_qos = { 48 + .num_ports = 1, 49 + .port_offsets = { 0xe000 }, 50 + .prio = 2, 51 + .urg_fwd = 0, 52 + .prio_fwd_disable = 0, 53 + }; 54 + 72 55 static struct qcom_icc_node xm_sdc4 = { 73 56 .name = "xm_sdc4", 74 57 .id = SM8650_MASTER_SDCC_4, 75 58 .channels = 1, 76 59 .buswidth = 8, 60 + .qosbox = &xm_sdc4_qos, 77 61 .num_links = 1, 78 62 .links = { SM8650_SLAVE_A1NOC_SNOC }, 63 + }; 64 + 65 + static struct qcom_icc_qosbox xm_ufs_mem_qos = { 66 + .num_ports = 1, 67 + .port_offsets = { 0xf000 }, 68 + .prio = 2, 69 + .urg_fwd = 0, 70 + .prio_fwd_disable = 0, 79 71 }; 80 72 81 73 static struct qcom_icc_node xm_ufs_mem = { ··· 100 58 .id = SM8650_MASTER_UFS_MEM, 101 59 .channels = 1, 102 60 .buswidth = 16, 61 + .qosbox = &xm_ufs_mem_qos, 103 62 .num_links = 1, 104 63 .links = { SM8650_SLAVE_A1NOC_SNOC }, 64 + }; 65 + 66 + static struct qcom_icc_qosbox xm_usb3_0_qos = { 67 + .num_ports = 1, 68 + .port_offsets = { 0x10000 }, 69 + .prio = 2, 70 + .urg_fwd = 0, 71 + .prio_fwd_disable = 0, 105 72 }; 106 73 107 74 static struct qcom_icc_node xm_usb3_0 = { ··· 118 67 .id = SM8650_MASTER_USB3_0, 119 68 .channels = 1, 120 69 .buswidth = 8, 70 + .qosbox = &xm_usb3_0_qos, 121 71 .num_links = 1, 122 72 .links = { SM8650_SLAVE_A1NOC_SNOC }, 73 + }; 74 + 75 + static struct qcom_icc_qosbox qhm_qdss_bam_qos = { 76 + .num_ports = 1, 77 + .port_offsets = { 0x12000 }, 78 + .prio = 2, 79 + .urg_fwd = 0, 80 + .prio_fwd_disable = 0, 123 81 }; 124 82 125 83 static struct qcom_icc_node qhm_qdss_bam = { ··· 136 76 .id = SM8650_MASTER_QDSS_BAM, 137 77 .channels = 1, 138 78 .buswidth = 4, 79 + .qosbox = &qhm_qdss_bam_qos, 139 80 .num_links = 1, 140 81 .links = { SM8650_SLAVE_A2NOC_SNOC }, 82 + }; 83 + 84 + static struct qcom_icc_qosbox qhm_qup2_qos = { 85 + .num_ports = 1, 86 + .port_offsets = { 0x13000 }, 87 + .prio = 2, 88 + .urg_fwd = 0, 89 + .prio_fwd_disable = 0, 141 90 }; 142 91 143 92 static struct qcom_icc_node qhm_qup2 = { ··· 154 85 .id = SM8650_MASTER_QUP_2, 155 86 .channels = 1, 156 87 .buswidth = 4, 88 + .qosbox = &qhm_qup2_qos, 157 89 .num_links = 1, 158 90 .links = { SM8650_SLAVE_A2NOC_SNOC }, 91 + }; 92 + 93 + static struct qcom_icc_qosbox qxm_crypto_qos = { 94 + .num_ports = 1, 95 + .port_offsets = { 0x15000 }, 96 + .prio = 2, 97 + .urg_fwd = 1, 98 + .prio_fwd_disable = 0, 159 99 }; 160 100 161 101 static struct qcom_icc_node qxm_crypto = { ··· 172 94 .id = SM8650_MASTER_CRYPTO, 173 95 .channels = 1, 174 96 .buswidth = 8, 97 + .qosbox = &qxm_crypto_qos, 175 98 .num_links = 1, 176 99 .links = { SM8650_SLAVE_A2NOC_SNOC }, 100 + }; 101 + 102 + static struct qcom_icc_qosbox qxm_ipa_qos = { 103 + .num_ports = 1, 104 + .port_offsets = { 0x16000 }, 105 + .prio = 2, 106 + .urg_fwd = 1, 107 + .prio_fwd_disable = 0, 177 108 }; 178 109 179 110 static struct qcom_icc_node qxm_ipa = { ··· 190 103 .id = SM8650_MASTER_IPA, 191 104 .channels = 1, 192 105 .buswidth = 8, 106 + .qosbox = &qxm_ipa_qos, 193 107 .num_links = 1, 194 108 .links = { SM8650_SLAVE_A2NOC_SNOC }, 195 109 }; ··· 204 116 .links = { SM8650_SLAVE_A2NOC_SNOC }, 205 117 }; 206 118 119 + static struct qcom_icc_qosbox xm_qdss_etr_0_qos = { 120 + .num_ports = 1, 121 + .port_offsets = { 0x17000 }, 122 + .prio = 2, 123 + .urg_fwd = 0, 124 + .prio_fwd_disable = 0, 125 + }; 126 + 207 127 static struct qcom_icc_node xm_qdss_etr_0 = { 208 128 .name = "xm_qdss_etr_0", 209 129 .id = SM8650_MASTER_QDSS_ETR, 210 130 .channels = 1, 211 131 .buswidth = 8, 132 + .qosbox = &xm_qdss_etr_0_qos, 212 133 .num_links = 1, 213 134 .links = { SM8650_SLAVE_A2NOC_SNOC }, 135 + }; 136 + 137 + static struct qcom_icc_qosbox xm_qdss_etr_1_qos = { 138 + .num_ports = 1, 139 + .port_offsets = { 0x18000 }, 140 + .prio = 2, 141 + .urg_fwd = 0, 142 + .prio_fwd_disable = 0, 214 143 }; 215 144 216 145 static struct qcom_icc_node xm_qdss_etr_1 = { ··· 235 130 .id = SM8650_MASTER_QDSS_ETR_1, 236 131 .channels = 1, 237 132 .buswidth = 8, 133 + .qosbox = &xm_qdss_etr_1_qos, 238 134 .num_links = 1, 239 135 .links = { SM8650_SLAVE_A2NOC_SNOC }, 136 + }; 137 + 138 + static struct qcom_icc_qosbox xm_sdc2_qos = { 139 + .num_ports = 1, 140 + .port_offsets = { 0x19000 }, 141 + .prio = 2, 142 + .urg_fwd = 0, 143 + .prio_fwd_disable = 0, 240 144 }; 241 145 242 146 static struct qcom_icc_node xm_sdc2 = { ··· 253 139 .id = SM8650_MASTER_SDCC_2, 254 140 .channels = 1, 255 141 .buswidth = 8, 142 + .qosbox = &xm_sdc2_qos, 256 143 .num_links = 1, 257 144 .links = { SM8650_SLAVE_A2NOC_SNOC }, 258 145 }; ··· 338 223 .links = { SM8650_SLAVE_PCIE_0, SM8650_SLAVE_PCIE_1 }, 339 224 }; 340 225 226 + static struct qcom_icc_qosbox alm_gpu_tcu_qos = { 227 + .num_ports = 1, 228 + .port_offsets = { 0xbf000 }, 229 + .prio = 1, 230 + .urg_fwd = 0, 231 + .prio_fwd_disable = 1, 232 + }; 233 + 341 234 static struct qcom_icc_node alm_gpu_tcu = { 342 235 .name = "alm_gpu_tcu", 343 236 .id = SM8650_MASTER_GPU_TCU, 344 237 .channels = 1, 345 238 .buswidth = 8, 239 + .qosbox = &alm_gpu_tcu_qos, 346 240 .num_links = 2, 347 241 .links = { SM8650_SLAVE_GEM_NOC_CNOC, SM8650_SLAVE_LLCC }, 242 + }; 243 + 244 + static struct qcom_icc_qosbox alm_sys_tcu_qos = { 245 + .num_ports = 1, 246 + .port_offsets = { 0xc1000 }, 247 + .prio = 6, 248 + .urg_fwd = 0, 249 + .prio_fwd_disable = 1, 348 250 }; 349 251 350 252 static struct qcom_icc_node alm_sys_tcu = { ··· 369 237 .id = SM8650_MASTER_SYS_TCU, 370 238 .channels = 1, 371 239 .buswidth = 8, 240 + .qosbox = &alm_sys_tcu_qos, 372 241 .num_links = 2, 373 242 .links = { SM8650_SLAVE_GEM_NOC_CNOC, SM8650_SLAVE_LLCC }, 243 + }; 244 + 245 + static struct qcom_icc_qosbox alm_ubwc_p_tcu_qos = { 246 + .num_ports = 1, 247 + .port_offsets = { 0xc5000 }, 248 + .prio = 1, 249 + .urg_fwd = 0, 250 + .prio_fwd_disable = 1, 374 251 }; 375 252 376 253 static struct qcom_icc_node alm_ubwc_p_tcu = { ··· 387 246 .id = SM8650_MASTER_UBWC_P_TCU, 388 247 .channels = 1, 389 248 .buswidth = 8, 249 + .qosbox = &alm_ubwc_p_tcu_qos, 390 250 .num_links = 2, 391 251 .links = { SM8650_SLAVE_GEM_NOC_CNOC, SM8650_SLAVE_LLCC }, 392 252 }; ··· 402 260 SM8650_SLAVE_MEM_NOC_PCIE_SNOC }, 403 261 }; 404 262 263 + static struct qcom_icc_qosbox qnm_gpu_qos = { 264 + .num_ports = 2, 265 + .port_offsets = { 0x31000, 0x71000 }, 266 + .prio = 0, 267 + .urg_fwd = 1, 268 + .prio_fwd_disable = 1, 269 + }; 270 + 405 271 static struct qcom_icc_node qnm_gpu = { 406 272 .name = "qnm_gpu", 407 273 .id = SM8650_MASTER_GFX3D, 408 274 .channels = 2, 409 275 .buswidth = 32, 276 + .qosbox = &qnm_gpu_qos, 410 277 .num_links = 2, 411 278 .links = { SM8650_SLAVE_GEM_NOC_CNOC, SM8650_SLAVE_LLCC }, 279 + }; 280 + 281 + static struct qcom_icc_qosbox qnm_lpass_gemnoc_qos = { 282 + .num_ports = 1, 283 + .port_offsets = { 0xb5000 }, 284 + .prio = 0, 285 + .urg_fwd = 1, 286 + .prio_fwd_disable = 0, 412 287 }; 413 288 414 289 static struct qcom_icc_node qnm_lpass_gemnoc = { ··· 433 274 .id = SM8650_MASTER_LPASS_GEM_NOC, 434 275 .channels = 1, 435 276 .buswidth = 16, 277 + .qosbox = &qnm_lpass_gemnoc_qos, 436 278 .num_links = 3, 437 279 .links = { SM8650_SLAVE_GEM_NOC_CNOC, SM8650_SLAVE_LLCC, 438 280 SM8650_SLAVE_MEM_NOC_PCIE_SNOC }, ··· 449 289 SM8650_SLAVE_MEM_NOC_PCIE_SNOC }, 450 290 }; 451 291 292 + static struct qcom_icc_qosbox qnm_mnoc_hf_qos = { 293 + .num_ports = 2, 294 + .port_offsets = { 0x33000, 0x73000 }, 295 + .prio = 0, 296 + .urg_fwd = 1, 297 + .prio_fwd_disable = 0, 298 + }; 299 + 452 300 static struct qcom_icc_node qnm_mnoc_hf = { 453 301 .name = "qnm_mnoc_hf", 454 302 .id = SM8650_MASTER_MNOC_HF_MEM_NOC, 455 303 .channels = 2, 456 304 .buswidth = 32, 305 + .qosbox = &qnm_mnoc_hf_qos, 457 306 .num_links = 2, 458 307 .links = { SM8650_SLAVE_GEM_NOC_CNOC, SM8650_SLAVE_LLCC }, 308 + }; 309 + 310 + static struct qcom_icc_qosbox qnm_mnoc_sf_qos = { 311 + .num_ports = 2, 312 + .port_offsets = { 0x35000, 0x75000 }, 313 + .prio = 0, 314 + .urg_fwd = 0, 315 + .prio_fwd_disable = 0, 459 316 }; 460 317 461 318 static struct qcom_icc_node qnm_mnoc_sf = { ··· 480 303 .id = SM8650_MASTER_MNOC_SF_MEM_NOC, 481 304 .channels = 2, 482 305 .buswidth = 32, 306 + .qosbox = &qnm_mnoc_sf_qos, 483 307 .num_links = 2, 484 308 .links = { SM8650_SLAVE_GEM_NOC_CNOC, SM8650_SLAVE_LLCC }, 309 + }; 310 + 311 + static struct qcom_icc_qosbox qnm_nsp_gemnoc_qos = { 312 + .num_ports = 2, 313 + .port_offsets = { 0x37000, 0x77000 }, 314 + .prio = 0, 315 + .urg_fwd = 1, 316 + .prio_fwd_disable = 1, 485 317 }; 486 318 487 319 static struct qcom_icc_node qnm_nsp_gemnoc = { ··· 498 312 .id = SM8650_MASTER_COMPUTE_NOC, 499 313 .channels = 2, 500 314 .buswidth = 32, 315 + .qosbox = &qnm_nsp_gemnoc_qos, 501 316 .num_links = 3, 502 317 .links = { SM8650_SLAVE_GEM_NOC_CNOC, SM8650_SLAVE_LLCC, 503 318 SM8650_SLAVE_MEM_NOC_PCIE_SNOC }, 319 + }; 320 + 321 + static struct qcom_icc_qosbox qnm_pcie_qos = { 322 + .num_ports = 1, 323 + .port_offsets = { 0xb7000 }, 324 + .prio = 2, 325 + .urg_fwd = 1, 326 + .prio_fwd_disable = 0, 504 327 }; 505 328 506 329 static struct qcom_icc_node qnm_pcie = { ··· 517 322 .id = SM8650_MASTER_ANOC_PCIE_GEM_NOC, 518 323 .channels = 1, 519 324 .buswidth = 16, 325 + .qosbox = &qnm_pcie_qos, 520 326 .num_links = 2, 521 327 .links = { SM8650_SLAVE_GEM_NOC_CNOC, SM8650_SLAVE_LLCC }, 328 + }; 329 + 330 + static struct qcom_icc_qosbox qnm_snoc_sf_qos = { 331 + .num_ports = 1, 332 + .port_offsets = { 0xbb000 }, 333 + .prio = 0, 334 + .urg_fwd = 1, 335 + .prio_fwd_disable = 0, 522 336 }; 523 337 524 338 static struct qcom_icc_node qnm_snoc_sf = { ··· 535 331 .id = SM8650_MASTER_SNOC_SF_MEM_NOC, 536 332 .channels = 1, 537 333 .buswidth = 16, 334 + .qosbox = &qnm_snoc_sf_qos, 538 335 .num_links = 3, 539 336 .links = { SM8650_SLAVE_GEM_NOC_CNOC, SM8650_SLAVE_LLCC, 540 337 SM8650_SLAVE_MEM_NOC_PCIE_SNOC }, 338 + }; 339 + 340 + static struct qcom_icc_qosbox qnm_ubwc_p_qos = { 341 + .num_ports = 1, 342 + .port_offsets = { 0xc3000 }, 343 + .prio = 1, 344 + .urg_fwd = 1, 345 + .prio_fwd_disable = 1, 541 346 }; 542 347 543 348 static struct qcom_icc_node qnm_ubwc_p = { ··· 554 341 .id = SM8650_MASTER_UBWC_P, 555 342 .channels = 1, 556 343 .buswidth = 32, 344 + .qosbox = &qnm_ubwc_p_qos, 557 345 .num_links = 1, 558 346 .links = { SM8650_SLAVE_LLCC }, 347 + }; 348 + 349 + static struct qcom_icc_qosbox xm_gic_qos = { 350 + .num_ports = 1, 351 + .port_offsets = { 0xb9000 }, 352 + .prio = 4, 353 + .urg_fwd = 0, 354 + .prio_fwd_disable = 1, 559 355 }; 560 356 561 357 static struct qcom_icc_node xm_gic = { ··· 572 350 .id = SM8650_MASTER_GIC, 573 351 .channels = 1, 574 352 .buswidth = 8, 353 + .qosbox = &xm_gic_qos, 575 354 .num_links = 1, 576 355 .links = { SM8650_SLAVE_LLCC }, 577 356 }; ··· 613 390 .links = { SM8650_SLAVE_EBI1 }, 614 391 }; 615 392 393 + static struct qcom_icc_qosbox qnm_camnoc_hf_qos = { 394 + .num_ports = 2, 395 + .port_offsets = { 0x28000, 0x29000 }, 396 + .prio = 0, 397 + .urg_fwd = 1, 398 + .prio_fwd_disable = 0, 399 + }; 400 + 616 401 static struct qcom_icc_node qnm_camnoc_hf = { 617 402 .name = "qnm_camnoc_hf", 618 403 .id = SM8650_MASTER_CAMNOC_HF, 619 404 .channels = 2, 620 405 .buswidth = 32, 406 + .qosbox = &qnm_camnoc_hf_qos, 621 407 .num_links = 1, 622 408 .links = { SM8650_SLAVE_MNOC_HF_MEM_NOC }, 409 + }; 410 + 411 + static struct qcom_icc_qosbox qnm_camnoc_icp_qos = { 412 + .num_ports = 1, 413 + .port_offsets = { 0x2a000 }, 414 + .prio = 4, 415 + .urg_fwd = 1, 416 + .prio_fwd_disable = 0, 623 417 }; 624 418 625 419 static struct qcom_icc_node qnm_camnoc_icp = { ··· 644 404 .id = SM8650_MASTER_CAMNOC_ICP, 645 405 .channels = 1, 646 406 .buswidth = 8, 407 + .qosbox = &qnm_camnoc_icp_qos, 647 408 .num_links = 1, 648 409 .links = { SM8650_SLAVE_MNOC_SF_MEM_NOC }, 410 + }; 411 + 412 + static struct qcom_icc_qosbox qnm_camnoc_sf_qos = { 413 + .num_ports = 2, 414 + .port_offsets = { 0x2b000, 0x2c000 }, 415 + .prio = 0, 416 + .urg_fwd = 1, 417 + .prio_fwd_disable = 0, 649 418 }; 650 419 651 420 static struct qcom_icc_node qnm_camnoc_sf = { ··· 662 413 .id = SM8650_MASTER_CAMNOC_SF, 663 414 .channels = 2, 664 415 .buswidth = 32, 416 + .qosbox = &qnm_camnoc_sf_qos, 665 417 .num_links = 1, 666 418 .links = { SM8650_SLAVE_MNOC_SF_MEM_NOC }, 419 + }; 420 + 421 + static struct qcom_icc_qosbox qnm_mdp_qos = { 422 + .num_ports = 2, 423 + .port_offsets = { 0x2d000, 0x2e000 }, 424 + .prio = 0, 425 + .urg_fwd = 1, 426 + .prio_fwd_disable = 0, 667 427 }; 668 428 669 429 static struct qcom_icc_node qnm_mdp = { ··· 680 422 .id = SM8650_MASTER_MDP, 681 423 .channels = 2, 682 424 .buswidth = 32, 425 + .qosbox = &qnm_mdp_qos, 683 426 .num_links = 1, 684 427 .links = { SM8650_SLAVE_MNOC_HF_MEM_NOC }, 685 428 }; ··· 694 435 .links = { SM8650_SLAVE_MNOC_SF_MEM_NOC }, 695 436 }; 696 437 438 + static struct qcom_icc_qosbox qnm_video_qos = { 439 + .num_ports = 2, 440 + .port_offsets = { 0x30000, 0x31000 }, 441 + .prio = 0, 442 + .urg_fwd = 1, 443 + .prio_fwd_disable = 0, 444 + }; 445 + 697 446 static struct qcom_icc_node qnm_video = { 698 447 .name = "qnm_video", 699 448 .id = SM8650_MASTER_VIDEO, 700 449 .channels = 2, 701 450 .buswidth = 32, 451 + .qosbox = &qnm_video_qos, 702 452 .num_links = 1, 703 453 .links = { SM8650_SLAVE_MNOC_SF_MEM_NOC }, 454 + }; 455 + 456 + static struct qcom_icc_qosbox qnm_video_cv_cpu_qos = { 457 + .num_ports = 1, 458 + .port_offsets = { 0x32000 }, 459 + .prio = 4, 460 + .urg_fwd = 1, 461 + .prio_fwd_disable = 0, 704 462 }; 705 463 706 464 static struct qcom_icc_node qnm_video_cv_cpu = { ··· 725 449 .id = SM8650_MASTER_VIDEO_CV_PROC, 726 450 .channels = 1, 727 451 .buswidth = 8, 452 + .qosbox = &qnm_video_cv_cpu_qos, 728 453 .num_links = 1, 729 454 .links = { SM8650_SLAVE_MNOC_SF_MEM_NOC }, 455 + }; 456 + 457 + static struct qcom_icc_qosbox qnm_video_cvp_qos = { 458 + .num_ports = 2, 459 + .port_offsets = { 0x33000, 0x34000 }, 460 + .prio = 0, 461 + .urg_fwd = 1, 462 + .prio_fwd_disable = 0, 730 463 }; 731 464 732 465 static struct qcom_icc_node qnm_video_cvp = { ··· 743 458 .id = SM8650_MASTER_VIDEO_PROC, 744 459 .channels = 2, 745 460 .buswidth = 32, 461 + .qosbox = &qnm_video_cvp_qos, 746 462 .num_links = 1, 747 463 .links = { SM8650_SLAVE_MNOC_SF_MEM_NOC }, 464 + }; 465 + 466 + static struct qcom_icc_qosbox qnm_video_v_cpu_qos = { 467 + .num_ports = 1, 468 + .port_offsets = { 0x35000 }, 469 + .prio = 4, 470 + .urg_fwd = 1, 471 + .prio_fwd_disable = 0, 748 472 }; 749 473 750 474 static struct qcom_icc_node qnm_video_v_cpu = { ··· 761 467 .id = SM8650_MASTER_VIDEO_V_PROC, 762 468 .channels = 1, 763 469 .buswidth = 8, 470 + .qosbox = &qnm_video_v_cpu_qos, 764 471 .num_links = 1, 765 472 .links = { SM8650_SLAVE_MNOC_SF_MEM_NOC }, 766 473 }; ··· 793 498 .links = { SM8650_SLAVE_SERVICE_PCIE_ANOC }, 794 499 }; 795 500 501 + static struct qcom_icc_qosbox xm_pcie3_0_qos = { 502 + .num_ports = 1, 503 + .port_offsets = { 0xb000 }, 504 + .prio = 3, 505 + .urg_fwd = 0, 506 + .prio_fwd_disable = 0, 507 + }; 508 + 796 509 static struct qcom_icc_node xm_pcie3_0 = { 797 510 .name = "xm_pcie3_0", 798 511 .id = SM8650_MASTER_PCIE_0, 799 512 .channels = 1, 800 513 .buswidth = 8, 514 + .qosbox = &xm_pcie3_0_qos, 801 515 .num_links = 1, 802 516 .links = { SM8650_SLAVE_ANOC_PCIE_GEM_NOC }, 517 + }; 518 + 519 + static struct qcom_icc_qosbox xm_pcie3_1_qos = { 520 + .num_ports = 1, 521 + .port_offsets = { 0xc000 }, 522 + .prio = 2, 523 + .urg_fwd = 0, 524 + .prio_fwd_disable = 0, 803 525 }; 804 526 805 527 static struct qcom_icc_node xm_pcie3_1 = { ··· 824 512 .id = SM8650_MASTER_PCIE_1, 825 513 .channels = 1, 826 514 .buswidth = 16, 515 + .qosbox = &xm_pcie3_1_qos, 827 516 .num_links = 1, 828 517 .links = { SM8650_SLAVE_ANOC_PCIE_GEM_NOC }, 829 518 }; ··· 1638 1325 }; 1639 1326 1640 1327 static const struct qcom_icc_desc sm8650_aggre1_noc = { 1328 + .config = &icc_regmap_config, 1641 1329 .nodes = aggre1_noc_nodes, 1642 1330 .num_nodes = ARRAY_SIZE(aggre1_noc_nodes), 1643 1331 }; ··· 1660 1346 }; 1661 1347 1662 1348 static const struct qcom_icc_desc sm8650_aggre2_noc = { 1349 + .config = &icc_regmap_config, 1663 1350 .nodes = aggre2_noc_nodes, 1664 1351 .num_nodes = ARRAY_SIZE(aggre2_noc_nodes), 1665 1352 .bcms = aggre2_noc_bcms, ··· 1683 1368 }; 1684 1369 1685 1370 static const struct qcom_icc_desc sm8650_clk_virt = { 1371 + .config = &icc_regmap_config, 1686 1372 .nodes = clk_virt_nodes, 1687 1373 .num_nodes = ARRAY_SIZE(clk_virt_nodes), 1688 1374 .bcms = clk_virt_bcms, ··· 1745 1429 }; 1746 1430 1747 1431 static const struct qcom_icc_desc sm8650_config_noc = { 1432 + .config = &icc_regmap_config, 1748 1433 .nodes = config_noc_nodes, 1749 1434 .num_nodes = ARRAY_SIZE(config_noc_nodes), 1750 1435 .bcms = config_noc_bcms, ··· 1773 1456 }; 1774 1457 1775 1458 static const struct qcom_icc_desc sm8650_cnoc_main = { 1459 + .config = &icc_regmap_config, 1776 1460 .nodes = cnoc_main_nodes, 1777 1461 .num_nodes = ARRAY_SIZE(cnoc_main_nodes), 1778 1462 .bcms = cnoc_main_bcms, ··· 1806 1488 }; 1807 1489 1808 1490 static const struct qcom_icc_desc sm8650_gem_noc = { 1491 + .config = &icc_regmap_config, 1809 1492 .nodes = gem_noc_nodes, 1810 1493 .num_nodes = ARRAY_SIZE(gem_noc_nodes), 1811 1494 .bcms = gem_noc_bcms, ··· 1819 1500 }; 1820 1501 1821 1502 static const struct qcom_icc_desc sm8650_lpass_ag_noc = { 1503 + .config = &icc_regmap_config, 1822 1504 .nodes = lpass_ag_noc_nodes, 1823 1505 .num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes), 1824 1506 }; ··· 1834 1514 }; 1835 1515 1836 1516 static const struct qcom_icc_desc sm8650_lpass_lpiaon_noc = { 1517 + .config = &icc_regmap_config, 1837 1518 .nodes = lpass_lpiaon_noc_nodes, 1838 1519 .num_nodes = ARRAY_SIZE(lpass_lpiaon_noc_nodes), 1839 1520 .bcms = lpass_lpiaon_noc_bcms, ··· 1847 1526 }; 1848 1527 1849 1528 static const struct qcom_icc_desc sm8650_lpass_lpicx_noc = { 1529 + .config = &icc_regmap_config, 1850 1530 .nodes = lpass_lpicx_noc_nodes, 1851 1531 .num_nodes = ARRAY_SIZE(lpass_lpicx_noc_nodes), 1852 1532 }; ··· 1863 1541 }; 1864 1542 1865 1543 static const struct qcom_icc_desc sm8650_mc_virt = { 1544 + .config = &icc_regmap_config, 1866 1545 .nodes = mc_virt_nodes, 1867 1546 .num_nodes = ARRAY_SIZE(mc_virt_nodes), 1868 1547 .bcms = mc_virt_bcms, ··· 1892 1569 }; 1893 1570 1894 1571 static const struct qcom_icc_desc sm8650_mmss_noc = { 1572 + .config = &icc_regmap_config, 1895 1573 .nodes = mmss_noc_nodes, 1896 1574 .num_nodes = ARRAY_SIZE(mmss_noc_nodes), 1897 1575 .bcms = mmss_noc_bcms, ··· 1909 1585 }; 1910 1586 1911 1587 static const struct qcom_icc_desc sm8650_nsp_noc = { 1588 + .config = &icc_regmap_config, 1912 1589 .nodes = nsp_noc_nodes, 1913 1590 .num_nodes = ARRAY_SIZE(nsp_noc_nodes), 1914 1591 .bcms = nsp_noc_bcms, ··· 1929 1604 }; 1930 1605 1931 1606 static const struct qcom_icc_desc sm8650_pcie_anoc = { 1607 + .config = &icc_regmap_config, 1932 1608 .nodes = pcie_anoc_nodes, 1933 1609 .num_nodes = ARRAY_SIZE(pcie_anoc_nodes), 1934 1610 .bcms = pcie_anoc_bcms, ··· 1949 1623 }; 1950 1624 1951 1625 static const struct qcom_icc_desc sm8650_system_noc = { 1626 + .config = &icc_regmap_config, 1952 1627 .nodes = system_noc_nodes, 1953 1628 .num_nodes = ARRAY_SIZE(system_noc_nodes), 1954 1629 .bcms = system_noc_bcms,