]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
soc: qcom: llcc-qcom: Add support for Glymur
authorPankaj Patil <pankaj.patil@oss.qualcomm.com>
Thu, 11 Dec 2025 09:02:36 +0000 (14:32 +0530)
committerBjorn Andersson <andersson@kernel.org>
Tue, 16 Dec 2025 23:23:18 +0000 (15:23 -0800)
Add system cache table(SCT) and configs for Glymur SoC
Updated the list of usecase id's to enable additional clients for Glymur

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Pankaj Patil <pankaj.patil@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20251211-glymur_llcc_enablement-v3-2-43457b354b0d@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 13e17426729459b025fe2d26b43e2c494b0a9c08..1abfda7a58f2da69f9047a5b3a4addfbd70be026 100644 (file)
@@ -182,6 +182,197 @@ enum llcc_reg_offset {
        LLCC_TRP_WRS_CACHEABLE_EN,
 };
 
+static const struct llcc_slice_config glymur_data[] = {
+       {
+               .usecase_id = LLCC_CPUSS,
+               .slice_id = 1,
+               .max_cap = 7680,
+               .priority = 1,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+               .activate_on_init = true,
+       }, {
+               .usecase_id = LLCC_VIDSC0,
+               .slice_id = 2,
+               .max_cap = 512,
+               .priority = 3,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_AUDIO,
+               .slice_id = 6,
+               .max_cap = 1024,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_VIDSC1,
+               .slice_id = 4,
+               .max_cap = 512,
+               .priority = 3,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_CMPT,
+               .slice_id = 10,
+               .max_cap = 7680,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_GPUHTW,
+               .slice_id = 11,
+               .max_cap = 512,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_GPU,
+               .slice_id = 9,
+               .max_cap = 7680,
+               .priority = 1,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .write_scid_en = true,
+               .write_scid_cacheable_en = true,
+               .stale_en = true,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_MMUHWT,
+               .slice_id = 18,
+               .max_cap = 768,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+               .activate_on_init = true,
+       }, {
+               .usecase_id = LLCC_AUDHW,
+               .slice_id = 22,
+               .max_cap = 1024,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_CVP,
+               .slice_id = 8,
+               .max_cap = 64,
+               .priority = 3,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_WRCACHE,
+               .slice_id = 31,
+               .max_cap = 1536,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+               .activate_on_init = true,
+       }, {
+               .usecase_id = LLCC_CMPTHCP,
+               .slice_id = 17,
+               .max_cap = 256,
+               .priority = 3,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_LCPDARE,
+               .slice_id = 30,
+               .max_cap = 768,
+               .priority = 3,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .alloc_oneway_en = true,
+               .vict_prio = true,
+               .activate_on_init = true,
+       }, {
+               .usecase_id = LLCC_AENPU,
+               .slice_id = 3,
+               .max_cap = 3072,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .cache_mode = 2,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_ISLAND1,
+               .slice_id = 12,
+               .max_cap = 5632,
+               .priority = 7,
+               .fixed_size = true,
+               .bonus_ways = 0x0,
+               .res_ways = 0x7FF,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_VIDVSP,
+               .slice_id = 28,
+               .max_cap = 256,
+               .priority = 3,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_OOBM_NS,
+               .slice_id = 5,
+               .max_cap = 512,
+               .priority = 1,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+       }, {
+               .usecase_id = LLCC_CPUSS_OPP,
+               .slice_id = 32,
+               .max_cap = 0,
+               .fixed_size = true,
+               .bonus_ways = 0x0,
+               .res_ways = 0x0,
+               .vict_prio = true,
+               .activate_on_init = true,
+       }, {
+               .usecase_id = LLCC_PCIE_TCU,
+               .slice_id = 19,
+               .max_cap = 256,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+               .activate_on_init = true,
+       }, {
+               .usecase_id = LLCC_VIDSC_VSP1,
+               .slice_id = 29,
+               .max_cap = 256,
+               .priority = 3,
+               .fixed_size = true,
+               .bonus_ways = 0xFFF,
+               .res_ways = 0x0,
+               .vict_prio = true,
+       }
+};
+
 static const struct llcc_slice_config ipq5424_data[] =  {
        {
                .usecase_id = LLCC_CPUSS,
@@ -3872,6 +4063,16 @@ static const struct qcom_llcc_config kaanapali_cfg[] = {
        },
 };
 
+static const struct qcom_llcc_config glymur_cfg[] = {
+       {
+               .sct_data       = glymur_data,
+               .size           = ARRAY_SIZE(glymur_data),
+               .reg_offset     = llcc_v6_reg_offset,
+               .edac_reg_offset = &llcc_v2_1_edac_reg_offset,
+               .no_edac        = true,
+       },
+};
+
 static const struct qcom_llcc_config qcs615_cfg[] = {
        {
                .sct_data       = qcs615_data,
@@ -4103,6 +4304,11 @@ static const struct qcom_sct_config kaanapali_cfgs = {
        .num_config     = ARRAY_SIZE(kaanapali_cfg),
 };
 
+static const struct qcom_sct_config glymur_cfgs = {
+       .llcc_config    = glymur_cfg,
+       .num_config     = ARRAY_SIZE(glymur_cfg),
+};
+
 static const struct qcom_sct_config qcs615_cfgs = {
        .llcc_config    = qcs615_cfg,
        .num_config     = ARRAY_SIZE(qcs615_cfg),
@@ -4941,6 +5147,7 @@ err:
 }
 
 static const struct of_device_id qcom_llcc_of_match[] = {
+       { .compatible = "qcom,glymur-llcc", .data = &glymur_cfgs },
        { .compatible = "qcom,ipq5424-llcc", .data = &ipq5424_cfgs},
        { .compatible = "qcom,kaanapali-llcc", .data = &kaanapali_cfgs},
        { .compatible = "qcom,qcs615-llcc", .data = &qcs615_cfgs},
index 0287f9182c4d7d24543fa113ee495939c883e5d5..8243ab3a12a8dbaa02bcd523e18e46d9d0070870 100644 (file)
 #define LLCC_CAMSRTIP   73
 #define LLCC_CAMRTRF    74
 #define LLCC_CAMSRTRF   75
+#define LLCC_OOBM_NS    81
+#define LLCC_OOBM_S     82
 #define LLCC_VIDEO_APV  83
 #define LLCC_COMPUTE1   87
 #define LLCC_CPUSS_OPP  88
 #define LLCC_CPUSSMPAM  89
+#define LLCC_VIDSC_VSP1         91
 #define LLCC_CAM_IPE_STROV      92
 #define LLCC_CAM_OFE_STROV      93
 #define LLCC_CPUSS_HEU  94
+#define LLCC_PCIE_TCU   97
 #define LLCC_MDM_PNG_FIXED      100
 
 /**