// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
*
*/
#include <linux/bitfield.h>
#include <linux/bitmap.h>
#include <linux/bitops.h>
#include <linux/cleanup.h>
#include <linux/device.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/nvmem-consumer.h>
#include <linux/of.h>
#include <linux/regmap.h>
#include <linux/sizes.h>
#include <linux/slab.h>
#include <linux/soc/qcom/llcc-qcom.h>
#define ACTIVATE BIT(0)
#define DEACTIVATE BIT(1)
#define ACT_CLEAR BIT(0)
#define ACT_COMPLETE BIT(4)
#define ACT_CTRL_OPCODE_ACTIVATE BIT(0)
#define ACT_CTRL_OPCODE_DEACTIVATE BIT(1)
#define ACT_CTRL_ACT_TRIG BIT(0)
#define ACT_CTRL_OPCODE_SHIFT 1
#define ATTR1_PROBE_TARGET_WAYS_SHIFT 2
#define ATTR1_FIXED_SIZE_SHIFT 3
#define ATTR1_PRIORITY_SHIFT 4
#define ATTR1_MAX_CAP_SHIFT 16
#define ATTR0_RES_WAYS_MASK GENMASK(15, 0)
#define ATTR0_BONUS_WAYS_MASK GENMASK(31, 16)
#define ATTR0_BONUS_WAYS_SHIFT 16
#define ATTR2_PROBE_TARGET_WAYS_MASK BIT(4)
#define ATTR2_FIXED_SIZE_MASK BIT(8)
#define ATTR2_PRIORITY_MASK GENMASK(14, 12)
#define ATTR2_PARENT_SCID_MASK GENMASK(21, 16)
#define ATTR2_IN_A_GROUP_MASK BIT(24)
#define LLCC_STATUS_READ_DELAY 100
#define CACHE_LINE_SIZE_SHIFT 6
#define LLCC_LB_CNT_MASK GENMASK(31, 28)
#define LLCC_LB_CNT_SHIFT 28
#define MAX_CAP_TO_BYTES(n) (n * SZ_1K)
#define LLCC_TRP_ACT_CTRLn(n) (n * SZ_4K)
#define LLCC_TRP_ACT_CLEARn(n) (8 + n * SZ_4K)
#define LLCC_TRP_STATUSn(n) (4 + n * SZ_4K)
#define LLCC_TRP_ATTR0_CFGn(n) (0x21000 + SZ_8 * n)
#define LLCC_TRP_ATTR1_CFGn(n) (0x21004 + SZ_8 * n)
#define LLCC_TRP_ATTR2_CFGn(n) (0x21100 + SZ_4 * n)
#define LLCC_V6_TRP_ATTR0_CFGn(n) (cfg->reg_offset[LLCC_TRP_ATTR0_CFG] + SZ_64 * (n))
#define LLCC_V6_TRP_ATTR1_CFGn(n) (cfg->reg_offset[LLCC_TRP_ATTR1_CFG] + SZ_64 * (n))
#define LLCC_V6_TRP_ATTR2_CFGn(n) (cfg->reg_offset[LLCC_TRP_ATTR2_CFG] + SZ_64 * (n))
#define LLCC_V6_TRP_ATTR3_CFGn(n) (cfg->reg_offset[LLCC_TRP_ATTR3_CFG] + SZ_64 * (n))
#define LLCC_TRP_SCID_DIS_CAP_ALLOC 0x21f00
#define LLCC_TRP_PCB_ACT 0x21f04
#define LLCC_TRP_ALGO_CFG1 0x21f0c
#define LLCC_TRP_ALGO_CFG2 0x21f10
#define LLCC_TRP_ALGO_CFG3 0x21f14
#define LLCC_TRP_ALGO_CFG4 0x21f18
#define LLCC_TRP_ALGO_CFG5 0x21f1c
#define LLCC_TRP_WRSC_EN 0x21f20
#define LLCC_TRP_ALGO_CFG6 0x21f24
#define LLCC_TRP_ALGO_CFG7 0x21f28
#define LLCC_TRP_WRSC_CACHEABLE_EN 0x21f2c
#define LLCC_TRP_ALGO_CFG8 0x21f30
#define LLCC_VERSION_2_0_0_0 0x02000000
#define LLCC_VERSION_2_1_0_0 0x02010000
#define LLCC_VERSION_4_1_0_0 0x04010000
#define LLCC_VERSION_6_0_0_0 0X06000000
/**
* struct llcc_slice_config - Data associated with the llcc slice
* @usecase_id: Unique id for the client's use case
* @slice_id: llcc slice id for each client
* @max_cap: The maximum capacity of the cache slice provided in KB
* @priority: Priority of the client used to select victim line for replacement
* @fixed_size: Boolean indicating if the slice has a fixed capacity
* @bonus_ways: Bonus ways are additional ways to be used for any slice,
* if client ends up using more than reserved cache ways. Bonus
* ways are allocated only if they are not reserved for some
* other client.
* @res_ways: Reserved ways for the cache slice, the reserved ways cannot
* be used by any other client than the one its assigned to.
* @cache_mode: Each slice operates as a cache, this controls the mode of the
* slice: normal or TCM(Tightly Coupled Memory)
* @probe_target_ways: Determines what ways to probe for access hit. When
* configured to 1 only bonus and reserved ways are probed.
* When configured to 0 all ways in llcc are probed.
* @dis_cap_alloc: Disable capacity based allocation for a client
* @retain_on_pc: If this bit is set and client has maintained active vote
* then the ways assigned to this client are not flushed on power
* collapse.
* @activate_on_init: Activate the slice immediately after it is programmed
* @write_scid_en: Bit enables write cache support for a given scid.
* @write_scid_cacheable_en: Enables write cache cacheable support for a
* given scid (not supported on v2 or older hardware).
* @stale_en: Bit enables stale.
* @stale_cap_en: Bit enables stale only if current scid is over-cap.
* @mru_uncap_en: Roll-over on reserved cache ways if current scid is
* under-cap.
* @mru_rollover: Roll-over on reserved cache ways.
* @alloc_oneway_en: Allways allocate one way on over-cap even if there's no
* same-scid lines for replacement.
* @ovcap_en: Once current scid is over-capacity, allocate other over-cap SCID.
* @ovcap_prio: Once current scid is over-capacity, allocate other low priority
* over-cap scid. Depends on corresponding bit being set in
* ovcap_en.
* @vict_prio: When current scid is under-capacity, allocate over other
* lower-than victim priority-line threshold scid.
* @parent_slice_id: For grouped slices, specifies the slice id of the parent.
*/
struct llcc_slice_config {
u32 usecase_id;
u32 slice_id;
u32 max_cap;
u32 priority;
bool fixed_size;
u32 bonus_ways;
u32 res_ways;
u32 cache_mode;
u32 probe_target_ways;
bool dis_cap_alloc;
bool retain_on_pc;
bool activate_on_init;
bool write_scid_en;
bool write_scid_cacheable_en;
bool stale_en;
bool stale_cap_en;
bool mru_uncap_en;
bool mru_rollover;
bool alloc_oneway_en;
bool ovcap_en;
bool ovcap_prio;
bool vict_prio;
u32 parent_slice_id;
};
struct qcom_llcc_config {
const struct llcc_slice_config *sct_data;
const u32 *reg_offset;
const struct llcc_edac_reg_offset *edac_reg_offset;
u32 max_cap_shift; /* instead of ATTR1_MAX_CAP_SHIFT */
u32 num_banks;
int size;
bool skip_llcc_cfg;
bool no_edac;
bool irq_configured;
bool no_broadcast_register;
};
struct qcom_sct_config {
const struct qcom_llcc_config *llcc_config;
int num_config;
};
enum llcc_reg_offset {
LLCC_COMMON_HW_INFO,
LLCC_COMMON_STATUS0,
LLCC_TRP_ATTR0_CFG,
LLCC_TRP_ATTR1_CFG,
LLCC_TRP_ATTR2_CFG,
LLCC_TRP_ATTR3_CFG,
LLCC_TRP_SID_DIS_CAP_ALLOC,
LLCC_TRP_ALGO_STALE_EN,
LLCC_TRP_ALGO_STALE_CAP_EN,
LLCC_TRP_ALGO_MRU0,
LLCC_TRP_ALGO_MRU1,
LLCC_TRP_ALGO_ALLOC0,
LLCC_TRP_ALGO_ALLOC1,
LLCC_TRP_ALGO_ALLOC2,
LLCC_TRP_ALGO_ALLOC3,
LLCC_TRP_WRS_EN,
LLCC_TRP_WRS_CACHEABLE_EN,
};
static const struct llcc_slice_config ipq5424_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 768,
.priority = 1,
.bonus_ways = 0xFFFF,
.retain_on_pc = true ,
.activate_on_init = true ,
.write_scid_cacheable_en = true ,
.stale_en = true ,
.stale_cap_en = true ,
.alloc_oneway_en = true ,
.ovcap_en = true ,
.ovcap_prio = true ,
.vict_prio = true ,
},
{
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 256,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0xF000,
.retain_on_pc = true ,
.activate_on_init = true ,
.write_scid_cacheable_en = true ,
.stale_en = true ,
.stale_cap_en = true ,
},
};
static const struct llcc_slice_config sa8775p_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 2048,
.priority = 1,
.bonus_ways = 0xff,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 512,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CPUSS1,
.slice_id = 3,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CPUHWT,
.slice_id = 5,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 6,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 4096,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
.retain_on_pc = true ,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 13,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CMPTDMA,
.slice_id = 15,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_DISP,
.slice_id = 16,
.max_cap = 4096,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_VIDFW,
.slice_id = 17,
.max_cap = 3072,
.priority = 1,
.bonus_ways = 0xff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDHW,
.slice_id = 22,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_CVP,
.slice_id = 28,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_APTCM,
.slice_id = 30,
.max_cap = 1024,
.priority = 3,
.fixed_size = true ,
.res_ways = 0xf0,
.cache_mode = 1,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xff,
.cache_mode = 0,
.activate_on_init = true ,
},
};
static const struct llcc_slice_config sar1130p_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 4096,
.priority = 1,
.bonus_ways = 0x1fff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 512,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0x1fff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 6,
.max_cap = 1024,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0x1fff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x1fff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 0,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x1fff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 3072,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0x1fff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 13,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x1fff,
.res_ways = 0x0,
.cache_mode = 0,
}, {
.usecase_id = LLCC_DISP,
.slice_id = 16,
.max_cap = 12800,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x1fff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CVP,
.slice_id = 28,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0x1fff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_APTCM,
.slice_id = 26,
.max_cap = 2048,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0x0,
.res_ways = 0x3,
.cache_mode = true ,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x1fff,
.res_ways = 0x0,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_AENPU,
.slice_id = 30,
.max_cap = 3072,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0x1fff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_DISP_LEFT,
.slice_id = 17,
.max_cap = 0,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x0,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_DISP_RIGHT,
.slice_id = 18,
.max_cap = 0,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x0,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_EVCS_LEFT,
.slice_id = 22,
.max_cap = 0,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x0,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_EVCS_RIGHT,
.slice_id = 23,
.max_cap = 0,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x0,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
},
};
static const struct llcc_slice_config sar2130p_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 6144,
.priority = 1,
.fixed_size = 0,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 128,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 6,
.max_cap = 1024,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 0,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 1536,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 13,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_DISP,
.slice_id = 16,
.max_cap = 0,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_APTCM,
.slice_id = 26,
.max_cap = 2048,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0x0,
.res_ways = 0x3,
.cache_mode = true ,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_VIEYE,
.slice_id = 7,
.max_cap = 7168,
.priority = 4,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_VIDPTH,
.slice_id = 8,
.max_cap = 7168,
.priority = 4,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPUMV,
.slice_id = 9,
.max_cap = 2048,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_EVA_LEFT,
.slice_id = 20,
.max_cap = 7168,
.priority = 5,
.fixed_size = true ,
.bonus_ways = 0x3ffffffc,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_EVA_RIGHT,
.slice_id = 21,
.max_cap = 7168,
.priority = 5,
.fixed_size = true ,
.bonus_ways = 0x3ffffffc,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_EVAGAIN,
.slice_id = 25,
.max_cap = 1024,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AENPU,
.slice_id = 30,
.max_cap = 3072,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_VIPTH,
.slice_id = 29,
.max_cap = 1024,
.priority = 4,
.fixed_size = true ,
.bonus_ways = 0x3fffffff,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_DISP_LEFT,
.slice_id = 17,
.max_cap = 0,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x0,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_DISP_RIGHT,
.slice_id = 18,
.max_cap = 0,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x0,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_EVCS_LEFT,
.slice_id = 22,
.max_cap = 0,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x0,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_EVCS_RIGHT,
.slice_id = 23,
.max_cap = 0,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x0,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_SPAD,
.slice_id = 24,
.max_cap = 7168,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x0,
.res_ways = 0x0,
.cache_mode = 0,
.retain_on_pc = true ,
},
};
static const struct llcc_slice_config sc7180_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 256,
.priority = 1,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_MDM,
.slice_id = 8,
.max_cap = 128,
.priority = 1,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 128,
.priority = 1,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 128,
.priority = 1,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
},
};
static const struct llcc_slice_config sc7280_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 768,
.priority = 1,
.bonus_ways = 0x3f,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_MDMHPGRW,
.slice_id = 7,
.max_cap = 512,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0x3f,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 768,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3f,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3f,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 512,
.priority = 1,
.bonus_ways = 0x3f,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 13,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3f,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_MDMPNG,
.slice_id = 21,
.max_cap = 768,
.priority = 0,
.fixed_size = true ,
.bonus_ways = 0x3f,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WLHW,
.slice_id = 24,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3f,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MODPE,
.slice_id = 29,
.max_cap = 64,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3f,
.cache_mode = 0,
.retain_on_pc = true ,
},
};
static const struct llcc_slice_config sc8180x_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 6144,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 512,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_VIDSC1,
.slice_id = 3,
.max_cap = 512,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 6,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDMHPGRW,
.slice_id = 7,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3ff,
.res_ways = 0xc00,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDM,
.slice_id = 8,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MODHW,
.slice_id = 9,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 6144,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 5120,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 13,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CMPTDMA,
.slice_id = 15,
.max_cap = 6144,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_DISP,
.slice_id = 16,
.max_cap = 6144,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_VIDFW,
.slice_id = 17,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDMHPFX,
.slice_id = 20,
.max_cap = 1024,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDMPNG,
.slice_id = 21,
.max_cap = 1024,
.priority = 0,
.fixed_size = true ,
.bonus_ways = 0xc,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDHW,
.slice_id = 22,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_NPU,
.slice_id = 23,
.max_cap = 6144,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WLHW,
.slice_id = 24,
.max_cap = 6144,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MODPE,
.slice_id = 29,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xc,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_APTCM,
.slice_id = 30,
.max_cap = 512,
.priority = 3,
.fixed_size = true ,
.res_ways = 0x1,
.cache_mode = 1,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 128,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
},
};
static const struct llcc_slice_config sc8280xp_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 6144,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 512,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 6,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 6144,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 4096,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 13,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_DISP,
.slice_id = 16,
.max_cap = 6144,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDHW,
.slice_id = 22,
.max_cap = 2048,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_ECC,
.slice_id = 26,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CVP,
.slice_id = 28,
.max_cap = 512,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_APTCM,
.slice_id = 30,
.max_cap = 1024,
.priority = 3,
.fixed_size = true ,
.res_ways = 0x1,
.cache_mode = 1,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CVPFW,
.slice_id = 17,
.max_cap = 512,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CPUSS1,
.slice_id = 3,
.max_cap = 2048,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CPUHWT,
.slice_id = 5,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
},
};
static const struct llcc_slice_config sdm845_data[] = {{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 2816,
.priority = 1,
.bonus_ways = 0xffc,
.res_ways = 0x2,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 512,
.priority = 2,
.fixed_size = true ,
.res_ways = 0xf0,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_VIDSC1,
.slice_id = 3,
.max_cap = 512,
.priority = 2,
.fixed_size = true ,
.res_ways = 0xf0,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_ROTATOR,
.slice_id = 4,
.max_cap = 563,
.priority = 2,
.fixed_size = true ,
.res_ways = 0xe,
.cache_mode = 2,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_VOICE,
.slice_id = 5,
.max_cap = 2816,
.priority = 1,
.bonus_ways = 0xffc,
.res_ways = 0x2,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 6,
.max_cap = 2816,
.priority = 1,
.bonus_ways = 0xffc,
.res_ways = 0x2,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDMHPGRW,
.slice_id = 7,
.max_cap = 1024,
.priority = 2,
.bonus_ways = 0xfc,
.res_ways = 0xf00,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDM,
.slice_id = 8,
.max_cap = 2816,
.priority = 1,
.bonus_ways = 0xffc,
.res_ways = 0x2,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 2816,
.priority = 1,
.bonus_ways = 0xffc,
.res_ways = 0x2,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xc,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 2304,
.priority = 1,
.bonus_ways = 0xff0,
.res_ways = 0x2,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 13,
.max_cap = 256,
.priority = 2,
.res_ways = 0x1,
.cache_mode = 0,
.dis_cap_alloc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CMPTDMA,
.slice_id = 15,
.max_cap = 2816,
.priority = 1,
.bonus_ways = 0xffc,
.res_ways = 0x2,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_DISP,
.slice_id = 16,
.max_cap = 2816,
.priority = 1,
.bonus_ways = 0xffc,
.res_ways = 0x2,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_VIDFW,
.slice_id = 17,
.max_cap = 2816,
.priority = 1,
.bonus_ways = 0xffc,
.res_ways = 0x2,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDMHPFX,
.slice_id = 20,
.max_cap = 1024,
.priority = 2,
.fixed_size = true ,
.res_ways = 0xf00,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDMPNG,
.slice_id = 21,
.max_cap = 1024,
.priority = 0,
.fixed_size = true ,
.bonus_ways = 0x1e,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDHW,
.slice_id = 22,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffc,
.res_ways = 0x2,
.cache_mode = 0,
.dis_cap_alloc = true ,
.retain_on_pc = true ,
},
};
static const struct llcc_slice_config sm6350_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 768,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_MDM,
.slice_id = 8,
.max_cap = 512,
.priority = 2,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 256,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 512,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_MDMPNG,
.slice_id = 21,
.max_cap = 768,
.priority = 0,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_NPU,
.slice_id = 23,
.max_cap = 768,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_MODPE,
.slice_id = 29,
.max_cap = 64,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
},
};
static const struct llcc_slice_config sm7150_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 512,
.priority = 1,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_MDM,
.slice_id = 8,
.max_cap = 128,
.priority = 2,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_NPU,
.slice_id = 23,
.max_cap = 512,
.priority = 1,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
},
};
static const struct llcc_slice_config sm8150_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 512,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_VIDSC1,
.slice_id = 3,
.max_cap = 512,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 6,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDMHPGRW,
.slice_id = 7,
.max_cap = 3072,
.priority = 1,
.bonus_ways = 0xff,
.res_ways = 0xf00,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDM,
.slice_id = 8,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MODHW,
.slice_id = 9,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 2560,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 13,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CMPTDMA,
.slice_id = 15,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_DISP,
.slice_id = 16,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDMHPFX,
.slice_id = 20,
.max_cap = 1024,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDMHPFX,
.slice_id = 21,
.max_cap = 1024,
.priority = 0,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDHW,
.slice_id = 22,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_NPU,
.slice_id = 23,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WLHW,
.slice_id = 24,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MODPE,
.slice_id = 29,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_APTCM,
.slice_id = 30,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.res_ways = 0x1,
.cache_mode = 1,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 128,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
},
};
static const struct llcc_slice_config sm8250_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 512,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 6,
.max_cap = 1024,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 1024,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 1024,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 13,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CMPTDMA,
.slice_id = 15,
.max_cap = 1024,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_DISP,
.slice_id = 16,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_VIDFW,
.slice_id = 17,
.max_cap = 512,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDHW,
.slice_id = 22,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_NPU,
.slice_id = 23,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WLHW,
.slice_id = 24,
.max_cap = 1024,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CVP,
.slice_id = 28,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_APTCM,
.slice_id = 30,
.max_cap = 128,
.priority = 3,
.res_ways = 0x3,
.cache_mode = 1,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
},
};
static const struct llcc_slice_config sm8350_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 512,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 6,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_MDMHPGRW,
.slice_id = 7,
.max_cap = 1024,
.priority = 3,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_MODHW,
.slice_id = 9,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 3072,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 1024,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 13,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_DISP,
.slice_id = 16,
.max_cap = 3072,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_MDMPNG,
.slice_id = 21,
.max_cap = 1024,
.priority = 0,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_AUDHW,
.slice_id = 22,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CVP,
.slice_id = 28,
.max_cap = 512,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_MODPE,
.slice_id = 29,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_APTCM,
.slice_id = 30,
.max_cap = 1024,
.priority = 3,
.fixed_size = true ,
.res_ways = 0x1,
.cache_mode = 1,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_CVPFW,
.slice_id = 17,
.max_cap = 512,
.priority = 1,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CPUSS1,
.slice_id = 3,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CPUHWT,
.slice_id = 5,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.write_scid_en = true ,
},
};
static const struct llcc_slice_config sm8450_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 3072,
.priority = 1,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 512,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 6,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_MDMHPGRW,
.slice_id = 7,
.max_cap = 1024,
.priority = 3,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MODHW,
.slice_id = 9,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 4096,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 2048,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 13,
.max_cap = 768,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_DISP,
.slice_id = 16,
.max_cap = 4096,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDMPNG,
.slice_id = 21,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf000,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AUDHW,
.slice_id = 22,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_CVP,
.slice_id = 28,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MODPE,
.slice_id = 29,
.max_cap = 64,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf000,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_APTCM,
.slice_id = 30,
.max_cap = 1024,
.priority = 3,
.fixed_size = true ,
.res_ways = 0xf0,
.cache_mode = 1,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CVPFW,
.slice_id = 17,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CPUSS1,
.slice_id = 3,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CAMEXP0,
.slice_id = 4,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_CPUMTE,
.slice_id = 23,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CPUHWT,
.slice_id = 5,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CAMEXP1,
.slice_id = 27,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_AENPU,
.slice_id = 8,
.max_cap = 2048,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffff,
.cache_mode = 0,
},
};
static const struct llcc_slice_config sm8550_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 5120,
.priority = 1,
.bonus_ways = 0xffffff,
.cache_mode = 0,
.activate_on_init = true ,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 512,
.priority = 4,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 6,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_MDMHPGRW,
.slice_id = 25,
.max_cap = 1024,
.priority = 4,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_MODHW,
.slice_id = 26,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 4096,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 9,
.max_cap = 3096,
.priority = 1,
.bonus_ways = 0xffffff,
.cache_mode = 0,
.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 = 0xffffff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_DISP,
.slice_id = 16,
.max_cap = 6144,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 2,
}, {
.usecase_id = LLCC_MDMPNG,
.slice_id = 27,
.max_cap = 1024,
.priority = 0,
.fixed_size = true ,
.bonus_ways = 0xf00000,
.cache_mode = 0,
}, {
.usecase_id = LLCC_AUDHW,
.slice_id = 22,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_CVP,
.slice_id = 8,
.max_cap = 256,
.priority = 4,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_MODPE,
.slice_id = 29,
.max_cap = 64,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf00000,
.cache_mode = 0,
.alloc_oneway_en = true ,
.vict_prio = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CAMEXP0,
.slice_id = 4,
.max_cap = 256,
.priority = 4,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
}, {
.usecase_id = LLCC_CPUHWT,
.slice_id = 5,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CAMEXP1,
.slice_id = 7,
.max_cap = 3200,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xfffff0,
.cache_mode = 2,
}, {
.usecase_id = LLCC_CMPTHCP,
.slice_id = 17,
.max_cap = 256,
.priority = 4,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_LCPDARE,
.slice_id = 30,
.max_cap = 128,
.priority = 4,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
.activate_on_init = 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 = 0xfe01ff,
.cache_mode = 2,
}, {
.usecase_id = LLCC_ISLAND1,
.slice_id = 12,
.max_cap = 1792,
.priority = 7,
.fixed_size = true ,
.bonus_ways = 0xfe00,
.cache_mode = 0,
}, {
.usecase_id = LLCC_ISLAND4,
.slice_id = 15,
.max_cap = 256,
.priority = 7,
.fixed_size = true ,
.bonus_ways = 0x10000,
.cache_mode = 0,
}, {
.usecase_id = LLCC_CAMEXP2,
.slice_id = 19,
.max_cap = 3200,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xfffff0,
.cache_mode = 2,
}, {
.usecase_id = LLCC_CAMEXP3,
.slice_id = 20,
.max_cap = 3200,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0xfffff0,
.cache_mode = 2,
}, {
.usecase_id = LLCC_CAMEXP4,
.slice_id = 21,
.max_cap = 3200,
.priority = 2,
.fixed_size = true ,
.bonus_ways = 0xfffff0,
.cache_mode = 2,
}, {
.usecase_id = LLCC_DISP_WB,
.slice_id = 23,
.max_cap = 1024,
.priority = 4,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_DISP_1,
.slice_id = 24,
.max_cap = 6144,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 2,
}, {
.usecase_id = LLCC_VIDVSP,
.slice_id = 28,
.max_cap = 256,
.priority = 4,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
},
};
static const struct llcc_slice_config sm8650_data[] = {
{
.usecase_id = LLCC_CPUSS,
.slice_id = 1,
.max_cap = 5120,
.priority = 1,
.bonus_ways = 0xffffff,
.cache_mode = 0,
.activate_on_init = true ,
.stale_en = true ,
}, {
.usecase_id = LLCC_VIDSC0,
.slice_id = 2,
.max_cap = 512,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_AUDIO,
.slice_id = 6,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_MDMHPGRW,
.slice_id = 25,
.max_cap = 1024,
.priority = 3,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_MODHW,
.slice_id = 26,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_CMPT,
.slice_id = 10,
.max_cap = 4096,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 9,
.max_cap = 3096,
.priority = 1,
.bonus_ways = 0xffffff,
.cache_mode = 0,
.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 = 0xffffff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_DISP,
.slice_id = 16,
.max_cap = 6144,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 2,
}, {
.usecase_id = LLCC_MDMHPFX,
.slice_id = 24,
.max_cap = 1024,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_MDMPNG,
.slice_id = 27,
.max_cap = 1024,
.priority = 0,
.fixed_size = true ,
.cache_mode = 0,
}, {
.usecase_id = LLCC_AUDHW,
.slice_id = 22,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_CVP,
.slice_id = 8,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_MODPE,
.slice_id = 29,
.max_cap = 128,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf00000,
.cache_mode = 0,
.alloc_oneway_en = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_CAMEXP0,
.slice_id = 4,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
}, {
.usecase_id = LLCC_CAMEXP1,
.slice_id = 7,
.max_cap = 3200,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xfffff0,
.cache_mode = 2,
}, {
.usecase_id = LLCC_CMPTHCP,
.slice_id = 17,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_LCPDARE,
.slice_id = 30,
.max_cap = 128,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
.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 = 0xffffff,
.cache_mode = 2,
}, {
.usecase_id = LLCC_ISLAND1,
.slice_id = 12,
.max_cap = 5888,
.priority = 7,
.fixed_size = true ,
.res_ways = 0x7fffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_DISP_WB,
.slice_id = 23,
.max_cap = 1024,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
}, {
.usecase_id = LLCC_VIDVSP,
.slice_id = 28,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffffff,
.cache_mode = 0,
},
};
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,
.slice_id = 1,
.max_cap = 128,
.priority = 1,
.bonus_ways = 0xf,
.cache_mode = 0,
.activate_on_init = true ,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_MDM,
.slice_id = 8,
.max_cap = 256,
.priority = 0,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 128,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 128,
.priority = 1,
.bonus_ways = 0xf,
.cache_mode = 0,
.activate_on_init = true ,
},
};
static const struct llcc_slice_config qcs8300_data[] = {
{
.usecase_id = LLCC_GPUHTW,
.slice_id = 11,
.max_cap = 128,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_GPU,
.slice_id = 12,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.retain_on_pc = true ,
.write_scid_en = true ,
}, {
.usecase_id = LLCC_MMUHWT,
.slice_id = 13,
.max_cap = 128,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_ECC,
.slice_id = 26,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 128,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xf,
.cache_mode = 0,
.activate_on_init = true ,
},
};
static const struct llcc_slice_config qdu1000_data_2ch[] = {
{
.usecase_id = LLCC_MDMHPGRW,
.slice_id = 7,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MODHW,
.slice_id = 9,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDMPNG,
.slice_id = 21,
.max_cap = 256,
.priority = 0,
.fixed_size = true ,
.bonus_ways = 0x3,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_ECC,
.slice_id = 26,
.max_cap = 512,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffc,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_MODPE,
.slice_id = 29,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_APTCM,
.slice_id = 30,
.max_cap = 256,
.priority = 3,
.fixed_size = true ,
.res_ways = 0xc,
.cache_mode = 1,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 128,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3,
.cache_mode = 0,
.activate_on_init = true ,
},
};
static const struct llcc_slice_config qdu1000_data_4ch[] = {
{
.usecase_id = LLCC_MDMHPGRW,
.slice_id = 7,
.max_cap = 1024,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MODHW,
.slice_id = 9,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_MDMPNG,
.slice_id = 21,
.max_cap = 512,
.priority = 0,
.fixed_size = true ,
.bonus_ways = 0x3,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_ECC,
.slice_id = 26,
.max_cap = 1024,
.priority = 3,
.fixed_size = true ,
.bonus_ways = 0xffc,
.cache_mode = 0,
.activate_on_init = true ,
}, {
.usecase_id = LLCC_MODPE,
.slice_id = 29,
.max_cap = 512,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
.cache_mode = 0,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_APTCM,
.slice_id = 30,
.max_cap = 512,
.priority = 3,
.fixed_size = true ,
.res_ways = 0xc,
.cache_mode = 1,
.retain_on_pc = true ,
}, {
.usecase_id = LLCC_WRCACHE,
.slice_id = 31,
.max_cap = 256,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0x3,
.cache_mode = 0,
.activate_on_init = true ,
},
};
static const struct llcc_slice_config qdu1000_data_8ch[] = {
{
.usecase_id = LLCC_MDMHPGRW,
.slice_id = 7,
.max_cap = 2048,
.priority = 1,
.fixed_size = true ,
.bonus_ways = 0xfff,
--> --------------------
--> maximum size reached
--> --------------------
Messung V0.5 C=100 H=99 G=99
¤ Dauer der Verarbeitung: 0.45 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland