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

soc: qcom: llcc-qcom: Add support for Kaanapali

Add system cache table and configs for Kaanapali SoC.

Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250924-knp-llcc-v1-2-ae6a016e5138@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

authored by

Jingyi Wang and committed by
Bjorn Andersson
c88b6ee3 f5f1e5ab

+380
+373
drivers/soc/qcom/llcc-qcom.c
··· 214 214 }, 215 215 }; 216 216 217 + static const struct llcc_slice_config kaanapali_data[] = { 218 + { 219 + .usecase_id = LLCC_CPUSS, 220 + .slice_id = 1, 221 + .max_cap = 5120, 222 + .priority = 1, 223 + .bonus_ways = 0xffffffff, 224 + .activate_on_init = true, 225 + .write_scid_en = true, 226 + .stale_en = true, 227 + .mru_uncap_en = true, 228 + .vict_prio = true, 229 + }, { 230 + .usecase_id = LLCC_VIDSC0, 231 + .slice_id = 2, 232 + .max_cap = 512, 233 + .priority = 4, 234 + .fixed_size = true, 235 + .bonus_ways = 0xffffffff, 236 + .mru_uncap_en = true, 237 + .vict_prio = true, 238 + }, { 239 + .usecase_id = LLCC_AUDIO, 240 + .slice_id = 35, 241 + .max_cap = 512, 242 + .priority = 1, 243 + .fixed_size = true, 244 + .bonus_ways = 0xffffffff, 245 + .mru_uncap_en = true, 246 + .vict_prio = true, 247 + }, { 248 + .usecase_id = LLCC_MDMHPGRW, 249 + .slice_id = 25, 250 + .max_cap = 1024, 251 + .priority = 5, 252 + .bonus_ways = 0xffffffff, 253 + .mru_uncap_en = true, 254 + .vict_prio = true, 255 + }, { 256 + .usecase_id = LLCC_CMPT, 257 + .slice_id = 34, 258 + .max_cap = 4096, 259 + .priority = 1, 260 + .fixed_size = true, 261 + .bonus_ways = 0xffffffff, 262 + .mru_uncap_en = true, 263 + .vict_prio = true, 264 + }, { 265 + .usecase_id = LLCC_GPUHTW, 266 + .slice_id = 11, 267 + .max_cap = 512, 268 + .priority = 1, 269 + .fixed_size = true, 270 + .bonus_ways = 0xffffffff, 271 + .mru_uncap_en = true, 272 + .vict_prio = true, 273 + }, { 274 + .usecase_id = LLCC_GPU, 275 + .slice_id = 9, 276 + .max_cap = 5632, 277 + .priority = 1, 278 + .fixed_size = true, 279 + .bonus_ways = 0xffffffff, 280 + .write_scid_cacheable_en = true, 281 + .mru_uncap_en = true, 282 + .vict_prio = true, 283 + }, { 284 + .usecase_id = LLCC_MMUHWT, 285 + .slice_id = 18, 286 + .max_cap = 768, 287 + .priority = 1, 288 + .fixed_size = true, 289 + .bonus_ways = 0xffffffff, 290 + .activate_on_init = true, 291 + .mru_uncap_en = true, 292 + .vict_prio = true, 293 + }, { 294 + .usecase_id = LLCC_DISP, 295 + .slice_id = 16, 296 + .max_cap = 7168, 297 + .priority = 1, 298 + .fixed_size = true, 299 + .bonus_ways = 0xffffffff, 300 + .cache_mode = 2, 301 + .stale_en = true, 302 + .mru_uncap_en = true, 303 + .vict_prio = true, 304 + }, { 305 + .usecase_id = LLCC_MDMHPFX, 306 + .slice_id = 24, 307 + .max_cap = 1024, 308 + .priority = 5, 309 + .fixed_size = true, 310 + .bonus_ways = 0xffffffff, 311 + .mru_uncap_en = true, 312 + .vict_prio = true, 313 + }, { 314 + .usecase_id = LLCC_MDMPNG, 315 + .slice_id = 27, 316 + .max_cap = 256, 317 + .priority = 5, 318 + .bonus_ways = 0xfffff, 319 + .mru_uncap_en = true, 320 + .vict_prio = true, 321 + }, { 322 + .usecase_id = LLCC_CVP, 323 + .slice_id = 8, 324 + .max_cap = 800, 325 + .priority = 5, 326 + .fixed_size = true, 327 + .bonus_ways = 0xffffffff, 328 + .mru_uncap_en = true, 329 + .ovcap_en = true, 330 + .vict_prio = true, 331 + .parent_slice_id = 33, 332 + }, { 333 + .usecase_id = LLCC_MODPE, 334 + .slice_id = 29, 335 + .max_cap = 256, 336 + .priority = 1, 337 + .fixed_size = true, 338 + .bonus_ways = 0xf0000000, 339 + .mru_uncap_en = true, 340 + .alloc_oneway_en = true, 341 + .vict_prio = true, 342 + }, { 343 + .usecase_id = LLCC_WRCACHE, 344 + .slice_id = 31, 345 + .max_cap = 512, 346 + .priority = 1, 347 + .fixed_size = true, 348 + .bonus_ways = 0xffffffff, 349 + .activate_on_init = true, 350 + .mru_uncap_en = true, 351 + .vict_prio = true, 352 + }, { 353 + .usecase_id = LLCC_CVPFW, 354 + .slice_id = 19, 355 + .max_cap = 512, 356 + .priority = 5, 357 + .fixed_size = true, 358 + .bonus_ways = 0xffffffff, 359 + .mru_uncap_en = true, 360 + .vict_prio = true, 361 + .parent_slice_id = 33, 362 + }, { 363 + .usecase_id = LLCC_CPUMTE, 364 + .slice_id = 7, 365 + .max_cap = 256, 366 + .priority = 1, 367 + .fixed_size = true, 368 + .bonus_ways = 0xffffffff, 369 + .mru_uncap_en = true, 370 + .vict_prio = true, 371 + }, { 372 + .usecase_id = LLCC_CMPTHCP, 373 + .slice_id = 15, 374 + .max_cap = 256, 375 + .priority = 4, 376 + .fixed_size = true, 377 + .bonus_ways = 0xffffffff, 378 + .mru_uncap_en = true, 379 + .vict_prio = true, 380 + }, { 381 + .usecase_id = LLCC_LCPDARE, 382 + .slice_id = 30, 383 + .max_cap = 128, 384 + .priority = 5, 385 + .fixed_size = true, 386 + .bonus_ways = 0xffffffff, 387 + .activate_on_init = true, 388 + .mru_uncap_en = true, 389 + .alloc_oneway_en = true, 390 + .vict_prio = true, 391 + }, { 392 + .usecase_id = LLCC_AENPU, 393 + .slice_id = 3, 394 + .max_cap = 3072, 395 + .priority = 1, 396 + .fixed_size = true, 397 + .bonus_ways = 0xffffffff, 398 + .cache_mode = 2, 399 + .mru_uncap_en = true, 400 + .vict_prio = true, 401 + }, { 402 + .usecase_id = LLCC_ISLAND1, 403 + .slice_id = 12, 404 + .max_cap = 7936, 405 + .priority = 7, 406 + .fixed_size = true, 407 + .bonus_ways = 0x7fffffff, 408 + .mru_uncap_en = true, 409 + .vict_prio = true, 410 + }, { 411 + .usecase_id = LLCC_DISP_WB, 412 + .slice_id = 23, 413 + .max_cap = 512, 414 + .priority = 4, 415 + .fixed_size = true, 416 + .bonus_ways = 0xffffffff, 417 + .mru_uncap_en = true, 418 + .vict_prio = true, 419 + }, { 420 + .usecase_id = LLCC_VIDVSP, 421 + .slice_id = 4, 422 + .max_cap = 256, 423 + .priority = 4, 424 + .fixed_size = true, 425 + .bonus_ways = 0xffffffff, 426 + .mru_uncap_en = true, 427 + .vict_prio = true, 428 + }, { 429 + .usecase_id = LLCC_VIDDEC, 430 + .slice_id = 5, 431 + .max_cap = 512, 432 + .priority = 4, 433 + .fixed_size = true, 434 + .bonus_ways = 0xffffffff, 435 + .cache_mode = 2, 436 + .mru_uncap_en = true, 437 + .ovcap_en = true, 438 + .vict_prio = true, 439 + .parent_slice_id = 33, 440 + }, { 441 + .usecase_id = LLCC_CAMOFE, 442 + .slice_id = 33, 443 + .max_cap = 6144, 444 + .priority = 4, 445 + .fixed_size = true, 446 + .bonus_ways = 0xffffffff, 447 + .stale_en = true, 448 + .mru_uncap_en = true, 449 + .ovcap_en = true, 450 + .vict_prio = true, 451 + .parent_slice_id = 33, 452 + }, { 453 + .usecase_id = LLCC_CAMRTIP, 454 + .slice_id = 13, 455 + .max_cap = 6144, 456 + .priority = 4, 457 + .fixed_size = true, 458 + .bonus_ways = 0xffffffff, 459 + .stale_en = true, 460 + .mru_uncap_en = true, 461 + .ovcap_en = true, 462 + .vict_prio = true, 463 + .parent_slice_id = 33, 464 + }, { 465 + .usecase_id = LLCC_CAMRTRF, 466 + .slice_id = 10, 467 + .max_cap = 3584, 468 + .priority = 3, 469 + .fixed_size = true, 470 + .bonus_ways = 0xffffffff, 471 + .stale_en = true, 472 + .mru_uncap_en = true, 473 + .ovcap_en = true, 474 + .vict_prio = true, 475 + .parent_slice_id = 33, 476 + }, { 477 + .usecase_id = LLCC_CAMSRTRF, 478 + .slice_id = 21, 479 + .max_cap = 6144, 480 + .priority = 1, 481 + .fixed_size = true, 482 + .bonus_ways = 0xffffffff, 483 + .stale_en = true, 484 + .mru_uncap_en = true, 485 + .ovcap_en = true, 486 + .vict_prio = true, 487 + .parent_slice_id = 33, 488 + }, { 489 + .usecase_id = LLCC_VIDEO_APV, 490 + .slice_id = 6, 491 + .max_cap = 768, 492 + .priority = 4, 493 + .fixed_size = true, 494 + .bonus_ways = 0xffffffff, 495 + .mru_uncap_en = true, 496 + .vict_prio = true, 497 + }, { 498 + .usecase_id = LLCC_COMPUTE1, 499 + .slice_id = 22, 500 + .max_cap = 4096, 501 + .priority = 1, 502 + .fixed_size = true, 503 + .bonus_ways = 0xffffffff, 504 + .mru_uncap_en = true, 505 + .vict_prio = true, 506 + }, { 507 + .usecase_id = LLCC_CPUSS_OPP, 508 + .slice_id = 32, 509 + .max_cap = 0, 510 + .priority = 0, 511 + .fixed_size = true, 512 + .bonus_ways = 0, 513 + .activate_on_init = true, 514 + .write_scid_en = true, 515 + .mru_uncap_en = true, 516 + .vict_prio = true, 517 + }, { 518 + .usecase_id = LLCC_CPUSSMPAM, 519 + .slice_id = 17, 520 + .max_cap = 2048, 521 + .priority = 1, 522 + .fixed_size = true, 523 + .bonus_ways = 0xffffffff, 524 + .activate_on_init = true, 525 + .write_scid_en = true, 526 + .stale_en = true, 527 + .mru_uncap_en = true, 528 + .vict_prio = true, 529 + }, { 530 + .usecase_id = LLCC_CAM_IPE_STROV, 531 + .slice_id = 14, 532 + .max_cap = 400, 533 + .priority = 5, 534 + .fixed_size = true, 535 + .bonus_ways = 0xffffffff, 536 + .mru_uncap_en = true, 537 + .ovcap_en = true, 538 + .vict_prio = true, 539 + .parent_slice_id = 33, 540 + }, { 541 + .usecase_id = LLCC_CAM_OFE_STROV, 542 + .slice_id = 20, 543 + .max_cap = 400, 544 + .priority = 5, 545 + .fixed_size = true, 546 + .bonus_ways = 0xffffffff, 547 + .mru_uncap_en = true, 548 + .ovcap_en = true, 549 + .vict_prio = true, 550 + .parent_slice_id = 33, 551 + }, { 552 + .usecase_id = LLCC_CPUSS_HEU, 553 + .slice_id = 28, 554 + .max_cap = 0, 555 + .priority = 0, 556 + .fixed_size = true, 557 + .bonus_ways = 0, 558 + .mru_uncap_en = true, 559 + .ovcap_en = true, 560 + .vict_prio = true, 561 + }, { 562 + .usecase_id = LLCC_MDM_PNG_FIXED, 563 + .slice_id = 26, 564 + .max_cap = 256, 565 + .priority = 5, 566 + .fixed_size = true, 567 + .bonus_ways = 0xff000000, 568 + .activate_on_init = true, 569 + .write_scid_en = true, 570 + .mru_uncap_en = true, 571 + .vict_prio = true, 572 + }, 573 + }; 574 + 217 575 static const struct llcc_slice_config sa8775p_data[] = { 218 576 { 219 577 .usecase_id = LLCC_CPUSS, ··· 3863 3505 [LLCC_TRP_WRS_CACHEABLE_EN] = 0x00042088, 3864 3506 }; 3865 3507 3508 + static const struct qcom_llcc_config kaanapali_cfg[] = { 3509 + { 3510 + .sct_data = kaanapali_data, 3511 + .size = ARRAY_SIZE(kaanapali_data), 3512 + .reg_offset = llcc_v6_reg_offset, 3513 + .edac_reg_offset = &llcc_v6_edac_reg_offset, 3514 + }, 3515 + }; 3516 + 3866 3517 static const struct qcom_llcc_config qcs615_cfg[] = { 3867 3518 { 3868 3519 .sct_data = qcs615_data, ··· 4096 3729 .edac_reg_offset = &llcc_v2_1_edac_reg_offset, 4097 3730 .irq_configured = true, 4098 3731 }, 3732 + }; 3733 + 3734 + static const struct qcom_sct_config kaanapali_cfgs = { 3735 + .llcc_config = kaanapali_cfg, 3736 + .num_config = ARRAY_SIZE(kaanapali_cfg), 4099 3737 }; 4100 3738 4101 3739 static const struct qcom_sct_config qcs615_cfgs = { ··· 4942 4570 4943 4571 static const struct of_device_id qcom_llcc_of_match[] = { 4944 4572 { .compatible = "qcom,ipq5424-llcc", .data = &ipq5424_cfgs}, 4573 + { .compatible = "qcom,kaanapali-llcc", .data = &kaanapali_cfgs}, 4945 4574 { .compatible = "qcom,qcs615-llcc", .data = &qcs615_cfgs}, 4946 4575 { .compatible = "qcom,qcs8300-llcc", .data = &qcs8300_cfgs}, 4947 4576 { .compatible = "qcom,qdu1000-llcc", .data = &qdu1000_cfgs},
+7
include/linux/soc/qcom/llcc-qcom.h
··· 74 74 #define LLCC_CAMSRTIP 73 75 75 #define LLCC_CAMRTRF 74 76 76 #define LLCC_CAMSRTRF 75 77 + #define LLCC_VIDEO_APV 83 78 + #define LLCC_COMPUTE1 87 79 + #define LLCC_CPUSS_OPP 88 77 80 #define LLCC_CPUSSMPAM 89 81 + #define LLCC_CAM_IPE_STROV 92 82 + #define LLCC_CAM_OFE_STROV 93 83 + #define LLCC_CPUSS_HEU 94 84 + #define LLCC_MDM_PNG_FIXED 100 78 85 79 86 /** 80 87 * struct llcc_slice_desc - Cache slice descriptor