]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
soc: qcom: llcc-qcom: Add support for Kaanapali
authorJingyi Wang <jingyi.wang@oss.qualcomm.com>
Wed, 24 Sep 2025 23:24:55 +0000 (16:24 -0700)
committerBjorn Andersson <andersson@kernel.org>
Wed, 22 Oct 2025 22:21:30 +0000 (17:21 -0500)
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>
drivers/soc/qcom/llcc-qcom.c
include/linux/soc/qcom/llcc-qcom.h

index 857ead56b37d017ebab74feb534157bb3181aa2b..13e17426729459b025fe2d26b43e2c494b0a9c08 100644 (file)
@@ -214,6 +214,364 @@ static const struct llcc_slice_config ipq5424_data[] =  {
        },
 };
 
+static const struct llcc_slice_config kaanapali_data[] = {
+       {
+               .usecase_id = LLCC_CPUSS,
+               .slice_id = 1,
+               .max_cap = 5120,
+               .priority = 1,
+               .bonus_ways = 0xffffffff,
+               .activate_on_init = true,
+               .write_scid_en = true,
+               .stale_en = true,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_VIDSC0,
+               .slice_id = 2,
+               .max_cap = 512,
+               .priority = 4,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_AUDIO,
+               .slice_id = 35,
+               .max_cap = 512,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_MDMHPGRW,
+               .slice_id = 25,
+               .max_cap = 1024,
+               .priority = 5,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_CMPT,
+               .slice_id = 34,
+               .max_cap = 4096,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_GPUHTW,
+               .slice_id = 11,
+               .max_cap = 512,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_GPU,
+               .slice_id = 9,
+               .max_cap = 5632,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .write_scid_cacheable_en = true,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_MMUHWT,
+               .slice_id = 18,
+               .max_cap = 768,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .activate_on_init = true,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_DISP,
+               .slice_id = 16,
+               .max_cap = 7168,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .cache_mode = 2,
+               .stale_en = true,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_MDMHPFX,
+               .slice_id = 24,
+               .max_cap = 1024,
+               .priority = 5,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_MDMPNG,
+               .slice_id = 27,
+               .max_cap = 256,
+               .priority = 5,
+               .bonus_ways = 0xfffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_CVP,
+               .slice_id = 8,
+               .max_cap = 800,
+               .priority = 5,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .ovcap_en = true,
+               .vict_prio = true,
+               .parent_slice_id = 33,
+       }, {
+               .usecase_id = LLCC_MODPE,
+               .slice_id = 29,
+               .max_cap = 256,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xf0000000,
+               .mru_uncap_en = true,
+               .alloc_oneway_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_WRCACHE,
+               .slice_id = 31,
+               .max_cap = 512,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .activate_on_init = true,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_CVPFW,
+               .slice_id = 19,
+               .max_cap = 512,
+               .priority = 5,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+               .parent_slice_id = 33,
+       }, {
+               .usecase_id = LLCC_CPUMTE,
+               .slice_id = 7,
+               .max_cap = 256,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_CMPTHCP,
+               .slice_id = 15,
+               .max_cap = 256,
+               .priority = 4,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_LCPDARE,
+               .slice_id = 30,
+               .max_cap = 128,
+               .priority = 5,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .activate_on_init = true,
+               .mru_uncap_en = true,
+               .alloc_oneway_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_AENPU,
+               .slice_id = 3,
+               .max_cap = 3072,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .cache_mode = 2,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_ISLAND1,
+               .slice_id = 12,
+               .max_cap = 7936,
+               .priority = 7,
+               .fixed_size = true,
+               .bonus_ways = 0x7fffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_DISP_WB,
+               .slice_id = 23,
+               .max_cap = 512,
+               .priority = 4,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_VIDVSP,
+               .slice_id = 4,
+               .max_cap = 256,
+               .priority = 4,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_VIDDEC,
+               .slice_id = 5,
+               .max_cap = 512,
+               .priority = 4,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .cache_mode = 2,
+               .mru_uncap_en = true,
+               .ovcap_en = true,
+               .vict_prio = true,
+               .parent_slice_id = 33,
+       }, {
+               .usecase_id = LLCC_CAMOFE,
+               .slice_id = 33,
+               .max_cap = 6144,
+               .priority = 4,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .stale_en = true,
+               .mru_uncap_en = true,
+               .ovcap_en = true,
+               .vict_prio = true,
+               .parent_slice_id = 33,
+       }, {
+               .usecase_id = LLCC_CAMRTIP,
+               .slice_id = 13,
+               .max_cap = 6144,
+               .priority = 4,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .stale_en = true,
+               .mru_uncap_en = true,
+               .ovcap_en = true,
+               .vict_prio = true,
+               .parent_slice_id = 33,
+       }, {
+               .usecase_id = LLCC_CAMRTRF,
+               .slice_id = 10,
+               .max_cap = 3584,
+               .priority = 3,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .stale_en = true,
+               .mru_uncap_en = true,
+               .ovcap_en = true,
+               .vict_prio = true,
+               .parent_slice_id = 33,
+       }, {
+               .usecase_id = LLCC_CAMSRTRF,
+               .slice_id = 21,
+               .max_cap = 6144,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .stale_en = true,
+               .mru_uncap_en = true,
+               .ovcap_en = true,
+               .vict_prio = true,
+               .parent_slice_id = 33,
+       }, {
+               .usecase_id = LLCC_VIDEO_APV,
+               .slice_id = 6,
+               .max_cap = 768,
+               .priority = 4,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_COMPUTE1,
+               .slice_id = 22,
+               .max_cap = 4096,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_CPUSS_OPP,
+               .slice_id = 32,
+               .max_cap = 0,
+               .priority = 0,
+               .fixed_size = true,
+               .bonus_ways = 0,
+               .activate_on_init = true,
+               .write_scid_en = true,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_CPUSSMPAM,
+               .slice_id = 17,
+               .max_cap = 2048,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .activate_on_init = true,
+               .write_scid_en = true,
+               .stale_en = true,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_CAM_IPE_STROV,
+               .slice_id = 14,
+               .max_cap = 400,
+               .priority = 5,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .ovcap_en = true,
+               .vict_prio = true,
+               .parent_slice_id = 33,
+       }, {
+               .usecase_id = LLCC_CAM_OFE_STROV,
+               .slice_id = 20,
+               .max_cap = 400,
+               .priority = 5,
+               .fixed_size = true,
+               .bonus_ways = 0xffffffff,
+               .mru_uncap_en = true,
+               .ovcap_en = true,
+               .vict_prio = true,
+               .parent_slice_id = 33,
+       }, {
+               .usecase_id = LLCC_CPUSS_HEU,
+               .slice_id = 28,
+               .max_cap = 0,
+               .priority = 0,
+               .fixed_size = true,
+               .bonus_ways = 0,
+               .mru_uncap_en = true,
+               .ovcap_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_MDM_PNG_FIXED,
+               .slice_id = 26,
+               .max_cap = 256,
+               .priority = 5,
+               .fixed_size = true,
+               .bonus_ways = 0xff000000,
+               .activate_on_init = true,
+               .write_scid_en = true,
+               .mru_uncap_en = true,
+               .vict_prio = true,
+          },
+};
+
 static const struct llcc_slice_config sa8775p_data[] =  {
        {
                .usecase_id = LLCC_CPUSS,
@@ -3505,6 +3863,15 @@ static const u32 llcc_v6_reg_offset[] = {
        [LLCC_TRP_WRS_CACHEABLE_EN]     = 0x00042088,
 };
 
+static const struct qcom_llcc_config kaanapali_cfg[] = {
+       {
+               .sct_data       = kaanapali_data,
+               .size           = ARRAY_SIZE(kaanapali_data),
+               .reg_offset     = llcc_v6_reg_offset,
+               .edac_reg_offset = &llcc_v6_edac_reg_offset,
+       },
+};
+
 static const struct qcom_llcc_config qcs615_cfg[] = {
        {
                .sct_data       = qcs615_data,
@@ -3731,6 +4098,11 @@ static const struct qcom_llcc_config x1e80100_cfg[] = {
        },
 };
 
+static const struct qcom_sct_config kaanapali_cfgs = {
+       .llcc_config    = kaanapali_cfg,
+       .num_config     = ARRAY_SIZE(kaanapali_cfg),
+};
+
 static const struct qcom_sct_config qcs615_cfgs = {
        .llcc_config    = qcs615_cfg,
        .num_config     = ARRAY_SIZE(qcs615_cfg),
@@ -4570,6 +4942,7 @@ err:
 
 static const struct of_device_id qcom_llcc_of_match[] = {
        { .compatible = "qcom,ipq5424-llcc", .data = &ipq5424_cfgs},
+       { .compatible = "qcom,kaanapali-llcc", .data = &kaanapali_cfgs},
        { .compatible = "qcom,qcs615-llcc", .data = &qcs615_cfgs},
        { .compatible = "qcom,qcs8300-llcc", .data = &qcs8300_cfgs},
        { .compatible = "qcom,qdu1000-llcc", .data = &qdu1000_cfgs},
index 7a69210a250c4646b7fd6cf400995e35d3f00493..0287f9182c4d7d24543fa113ee495939c883e5d5 100644 (file)
 #define LLCC_CAMSRTIP   73
 #define LLCC_CAMRTRF    74
 #define LLCC_CAMSRTRF   75
+#define LLCC_VIDEO_APV  83
+#define LLCC_COMPUTE1   87
+#define LLCC_CPUSS_OPP  88
 #define LLCC_CPUSSMPAM  89
+#define LLCC_CAM_IPE_STROV      92
+#define LLCC_CAM_OFE_STROV      93
+#define LLCC_CPUSS_HEU  94
+#define LLCC_MDM_PNG_FIXED      100
 
 /**
  * struct llcc_slice_desc - Cache slice descriptor