mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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>
This commit is contained in:
committed by
Bjorn Andersson
parent
f5f1e5abb6
commit
c88b6ee3ba
@@ -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},
|
||||
|
||||
@@ -74,7 +74,14 @@
|
||||
#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
|
||||
|
||||
Reference in New Issue
Block a user