]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
soc: qcom: llcc-qcom: Add support for Eliza
authorAbel Vesa <abel.vesa@oss.qualcomm.com>
Wed, 13 May 2026 11:11:03 +0000 (14:11 +0300)
committerBjorn Andersson <andersson@kernel.org>
Thu, 21 May 2026 21:16:03 +0000 (16:16 -0500)
Eliza uses a 4-region LLCC register layout made up of two per-bank base
register regions together with the broadcast OR and AND regions.

So add this SoC specific configuration and its compatible string.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260513-eliza-llcc-v2-2-27381ae833d5@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
drivers/soc/qcom/llcc-qcom.c

index dcc08f63e0201ba4592a50d8ec4c2679e6983bd5..1359c7b2d41b41b160871d31c083489beae4b72e 100644 (file)
@@ -268,6 +268,171 @@ enum llcc_reg_offset {
        LLCC_TRP_WRS_CACHEABLE_EN,
 };
 
+static const struct llcc_slice_config eliza_data[] = {
+       {
+               .usecase_id = LLCC_CPUSS,
+               .slice_id = 1,
+               .max_cap = 896,
+               .bonus_ways = 0xfff,
+               .activate_on_init = true,
+               .write_scid_en = true,
+               .stale_en = true,
+       },
+       {
+               .usecase_id = LLCC_MDMHPFX,
+               .slice_id = 24,
+               .max_cap = 1024,
+               .priority = 5,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+       },
+       {
+               .usecase_id = LLCC_VIDSC0,
+               .slice_id = 2,
+               .max_cap = 128,
+               .priority = 5,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+       },
+       {
+               .usecase_id = LLCC_MDMHPGRW,
+               .slice_id = 25,
+               .max_cap = 1024,
+               .priority = 5,
+               .bonus_ways = 0xfff,
+       },
+       {
+               .usecase_id = LLCC_GPUHTW,
+               .slice_id = 11,
+               .max_cap = 256,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+       },
+       {
+               .usecase_id = LLCC_GPU,
+               .slice_id = 9,
+               .max_cap = 896,
+               .priority = 1,
+               .bonus_ways = 0xfff,
+               .write_scid_cacheable_en = true,
+       },
+       {
+               .usecase_id = LLCC_MMUHWT,
+               .slice_id = 18,
+               .max_cap = 256,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+               .activate_on_init = true,
+       },
+       {
+               .usecase_id = LLCC_MDMPNG,
+               .slice_id = 27,
+               .max_cap = 256,
+               .priority = 5,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+       },
+       {
+               .usecase_id = LLCC_MODPE,
+               .slice_id = 29,
+               .max_cap = 256,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xf00,
+               .alloc_oneway_en = true,
+       },
+       {
+               .usecase_id = LLCC_WRCACHE,
+               .slice_id = 31,
+               .max_cap = 256,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+               .activate_on_init = true,
+       },
+       {
+               .usecase_id = LLCC_LCPDARE,
+               .slice_id = 30,
+               .max_cap = 128,
+               .priority = 5,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+               .activate_on_init = true,
+               .alloc_oneway_en = true,
+       },
+       {
+               .usecase_id = LLCC_ISLAND1,
+               .slice_id = 12,
+               .max_cap = 1280,
+               .priority = 7,
+               .fixed_size = true,
+               .res_ways = 0x3ff,
+       },
+       {
+               .usecase_id = LLCC_CAMOFE,
+               .slice_id = 33,
+               .max_cap = 1024,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+               .stale_en = true,
+               .parent_slice_id = 13,
+       },
+       {
+               .usecase_id = LLCC_CAMRTIP,
+               .slice_id = 13,
+               .max_cap = 1024,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+               .stale_en = true,
+               .parent_slice_id = 13,
+       },
+       {
+               .usecase_id = LLCC_CAMSRTIP,
+               .slice_id = 14,
+               .max_cap = 512,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+               .stale_en = true,
+               .parent_slice_id = 13,
+       },
+       {
+               .usecase_id = LLCC_CAMRTRF,
+               .slice_id = 7,
+               .max_cap = 1024,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+               .stale_en = true,
+               .parent_slice_id = 13,
+       },
+       {
+               .usecase_id = LLCC_CAMSRTRF,
+               .slice_id = 21,
+               .max_cap = 1024,
+               .priority = 1,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+               .stale_en = true,
+               .parent_slice_id = 13,
+       },
+       {
+               .usecase_id = LLCC_CPUSSMPAM,
+               .slice_id = 6,
+               .max_cap = 512,
+               .priority = 0,
+               .fixed_size = true,
+               .bonus_ways = 0xfff,
+               .activate_on_init = true,
+               .write_scid_en = true,
+               .stale_en = true,
+       },
+};
+
 static const struct llcc_slice_config glymur_data[] = {
        {
                .usecase_id = LLCC_CPUSS,
@@ -4237,6 +4402,15 @@ static const struct qcom_llcc_config hawi_sct_cfg[] = {
        },
 };
 
+static const struct qcom_llcc_config eliza_cfg[] = {
+       {
+               .sct_data       = eliza_data,
+               .size           = ARRAY_SIZE(eliza_data),
+               .reg_offset     = llcc_v6_reg_offset,
+               .edac_reg_offset = &llcc_v6_edac_reg_offset,
+       },
+};
+
 static const struct qcom_llcc_config kaanapali_cfg[] = {
        {
                .sct_data       = kaanapali_data,
@@ -4498,6 +4672,11 @@ static const struct qcom_sct_config hawi_sct_cfgs = {
        .num_config     = ARRAY_SIZE(hawi_sct_cfg),
 };
 
+static const struct qcom_sct_config eliza_cfgs = {
+       .llcc_config    = eliza_cfg,
+       .num_config     = ARRAY_SIZE(eliza_cfg),
+};
+
 static const struct qcom_sct_config kaanapali_cfgs = {
        .llcc_config    = kaanapali_cfg,
        .num_config     = ARRAY_SIZE(kaanapali_cfg),
@@ -5436,6 +5615,7 @@ err:
 }
 
 static const struct of_device_id qcom_llcc_of_match[] = {
+       { .compatible = "qcom,eliza-llcc", .data = &eliza_cfgs },
        { .compatible = "qcom,glymur-llcc", .data = &glymur_cfgs },
        { .compatible = "qcom,hawi-llcc", .data = &hawi_sct_cfgs },
        { .compatible = "qcom,ipq5424-llcc", .data = &ipq5424_cfgs},