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

Add system cache table and configs for SM8750 SoCs.

Signed-off-by: Melody Olvera <melody.olvera@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250512-sm8750_llcc_master-v5-3-d78dca6282a5@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
This commit is contained in:
Melody Olvera 2025-05-12 13:54:43 -07:00 committed by Bjorn Andersson
parent 9186a0f3e4
commit 2c04e58e30
2 changed files with 281 additions and 0 deletions

View File

@ -2689,6 +2689,263 @@ static const struct llcc_slice_config sm8650_data[] = {
},
};
static const struct llcc_slice_config sm8750_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 5120,
.priority = 1,
.bonus_ways = 0xffffffff,
.activate_on_init = true,
.write_scid_en = true,
}, {
.usecase_id = LLCC_MDMHPFX,
.slice_id = 24,
.max_cap = 1024,
.priority = 5,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 512,
.priority = 4,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 35,
.max_cap = 512,
.priority = 1,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_MDMHPGRW,
.slice_id = 25,
.max_cap = 1024,
.priority = 5,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_MODHW,
.slice_id = 26,
.max_cap = 1024,
.priority = 1,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 34,
.max_cap = 4096,
.priority = 1,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 512,
.priority = 1,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 9,
.max_cap = 5632,
.priority = 1,
.fixed_size = true,
.bonus_ways = 0xffffffff,
.write_scid_en = true,
.write_scid_cacheable_en = true
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 18,
.max_cap = 768,
.priority = 1,
.fixed_size = true,
.bonus_ways = 0xffffffff,
.activate_on_init = 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,
}, {
.usecase_id = LLCC_VIDFW,
.slice_id = 17,
.priority = 4,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_CAMFW,
.slice_id = 20,
.priority = 4,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_MDMPNG,
.slice_id = 27,
.max_cap = 256,
.priority = 5,
.fixed_size = true,
.bonus_ways = 0xf0000000,
}, {
.usecase_id = LLCC_AUDHW,
.slice_id = 22,
.max_cap = 512,
.priority = 1,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_CVP,
.slice_id = 8,
.max_cap = 800,
.priority = 5,
.fixed_size = true,
.bonus_ways = 0xffffffff,
.vict_prio = true,
}, {
.usecase_id = LLCC_MODPE,
.slice_id = 29,
.max_cap = 256,
.priority = 1,
.fixed_size = true,
.bonus_ways = 0xf0000000,
.alloc_oneway_en = true,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 512,
.priority = 1,
.fixed_size = true,
.bonus_ways = 0xffffffff,
.activate_on_init = true,
}, {
.usecase_id = LLCC_CVPFW,
.slice_id = 19,
.max_cap = 64,
.priority = 4,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_CMPTHCP,
.slice_id = 15,
.max_cap = 256,
.priority = 4,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_LCPDARE,
.slice_id = 30,
.max_cap = 128,
.priority = 5,
.fixed_size = true,
.bonus_ways = 0xffffffff,
.activate_on_init = true,
.alloc_oneway_en = true,
}, {
.usecase_id = LLCC_AENPU,
.slice_id = 3,
.max_cap = 3072,
.priority = 1,
.fixed_size = true,
.bonus_ways = 0xffffffff,
.cache_mode = 2,
}, {
.usecase_id = LLCC_ISLAND1,
.slice_id = 12,
.max_cap = 7936,
.priority = 7,
.fixed_size = true,
.bonus_ways = 0x7fffffff,
}, {
.usecase_id = LLCC_DISP_WB,
.slice_id = 23,
.max_cap = 512,
.priority = 4,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_VIDVSP,
.slice_id = 4,
.max_cap = 256,
.priority = 4,
.fixed_size = true,
.bonus_ways = 0xffffffff,
}, {
.usecase_id = LLCC_VIDDEC,
.slice_id = 5,
.max_cap = 6144,
.priority = 4,
.fixed_size = true,
.bonus_ways = 0xffffffff,
.cache_mode = 2,
.ovcap_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,
.ovcap_prio = true,
.parent_slice_id = 33,
}, {
.usecase_id = LLCC_CAMRTIP,
.slice_id = 13,
.max_cap = 1024,
.priority = 4,
.fixed_size = true,
.bonus_ways = 0xffffffff,
.stale_en = true,
.ovcap_prio = true,
.parent_slice_id = 33,
}, {
.usecase_id = LLCC_CAMSRTIP,
.slice_id = 14,
.max_cap = 6144,
.priority = 4,
.fixed_size = true,
.bonus_ways = 0xffffffff,
.stale_en = true,
.ovcap_prio = true,
.parent_slice_id = 33,
}, {
.usecase_id = LLCC_CAMRTRF,
.slice_id = 7,
.max_cap = 3584,
.priority = 1,
.fixed_size = true,
.bonus_ways = 0xffffffff,
.stale_en = true,
.ovcap_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,
.ovcap_prio = true,
.parent_slice_id = 33,
}, {
.usecase_id = LLCC_CPUSSMPAM,
.slice_id = 6,
.max_cap = 2048,
.priority = 1,
.fixed_size = true,
.bonus_ways = 0xffffffff,
.activate_on_init = true,
.write_scid_en = true,
},
};
static const struct llcc_slice_config qcs615_data[] = {
{
.usecase_id = LLCC_CPUSS,
@ -3454,6 +3711,16 @@ static const struct qcom_llcc_config sm8650_cfg[] = {
},
};
static const struct qcom_llcc_config sm8750_cfg[] = {
{
.sct_data = sm8750_data,
.size = ARRAY_SIZE(sm8750_data),
.skip_llcc_cfg = false,
.reg_offset = llcc_v6_reg_offset,
.edac_reg_offset = &llcc_v6_edac_reg_offset,
},
};
static const struct qcom_llcc_config x1e80100_cfg[] = {
{
.sct_data = x1e80100_data,
@ -3564,6 +3831,11 @@ static const struct qcom_sct_config sm8650_cfgs = {
.num_config = ARRAY_SIZE(sm8650_cfg),
};
static const struct qcom_sct_config sm8750_cfgs = {
.llcc_config = sm8750_cfg,
.num_config = ARRAY_SIZE(sm8750_cfg),
};
static const struct qcom_sct_config x1e80100_cfgs = {
.llcc_config = x1e80100_cfg,
.num_config = ARRAY_SIZE(x1e80100_cfg),
@ -4318,6 +4590,7 @@ static const struct of_device_id qcom_llcc_of_match[] = {
{ .compatible = "qcom,sm8450-llcc", .data = &sm8450_cfgs },
{ .compatible = "qcom,sm8550-llcc", .data = &sm8550_cfgs },
{ .compatible = "qcom,sm8650-llcc", .data = &sm8650_cfgs },
{ .compatible = "qcom,sm8750-llcc", .data = &sm8750_cfgs },
{ .compatible = "qcom,x1e80100-llcc", .data = &x1e80100_cfgs },
{ }
};

View File

@ -24,6 +24,7 @@
#define LLCC_CMPTDMA 15
#define LLCC_DISP 16
#define LLCC_VIDFW 17
#define LLCC_CAMFW 18
#define LLCC_MDMHPFX 20
#define LLCC_MDMPNG 21
#define LLCC_AUDHW 22
@ -67,6 +68,13 @@
#define LLCC_EVCS_LEFT 67
#define LLCC_EVCS_RIGHT 68
#define LLCC_SPAD 69
#define LLCC_VIDDEC 70
#define LLCC_CAMOFE 71
#define LLCC_CAMRTIP 72
#define LLCC_CAMSRTIP 73
#define LLCC_CAMRTRF 74
#define LLCC_CAMSRTRF 75
#define LLCC_CPUSSMPAM 89
/**
* struct llcc_slice_desc - Cache slice descriptor