drivers/soc/qcom/llcc-qcom.c
Source file repositories/reference/linux-study-clean/drivers/soc/qcom/llcc-qcom.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/soc/qcom/llcc-qcom.c- Extension
.c- Size
- 125220 bytes
- Lines
- 5661
- Domain
- Driver Families
- Bucket
- drivers/soc
- Inferred role
- Driver Families: exported/initcall integration point
- Status
- integration implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bitfield.hlinux/cleanup.hlinux/device.hlinux/io.hlinux/kernel.hlinux/module.hlinux/mutex.hlinux/nvmem-consumer.hlinux/of.hlinux/of_reserved_mem.hlinux/regmap.hlinux/sizes.hlinux/slab.hlinux/soc/qcom/llcc-qcom.h
Detected Declarations
struct llcc_slice_configstruct slc_sct_errorstruct slc_sct_statusstruct slc_sct_detailsstruct slc_tcm_mem_infostruct slc_sct_slice_descstruct slc_sct_memstruct qcom_llcc_configstruct qcom_sct_configenum llcc_reg_offsetfunction llcc_slice_putdfunction llcc_update_act_ctrlfunction llcc_slice_activatefunction llcc_slice_deactivatefunction llcc_get_slice_idfunction llcc_get_slice_sizefunction _qcom_llcc_cfg_programfunction _qcom_llcc_cfg_program_v6function qcom_llcc_cfg_programfunction qcom_llcc_get_cfg_indexfunction qcom_llcc_verify_fw_configfunction qcom_llcc_get_fw_configfunction qcom_llcc_removefunction qcom_llcc_probeexport llcc_slice_getdexport llcc_slice_putdexport llcc_slice_activateexport llcc_slice_deactivateexport llcc_get_slice_idexport llcc_get_slice_size
Annotated Snippet
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 slc_sct_error - Represents SCT error
* @code: FW code status
* @param: Holds the SCT programming error
*/
struct slc_sct_error {
__le64 code;
__le64 param;
} __packed;
/*
* struct slc_sct_status - SCT programming status
* @program_status: Indicates programming success or failure
* @version: SCT mem layout version
* @error: Error enum and its param
*/
struct slc_sct_status {
__le64 program_status;
/* Use the lower 8 bits */
__le64 version;
struct slc_sct_error error;
} __packed;
/*
* struct slc_sct_details - SCT details
* @revision: revision of the SCT table
* @name: name of the SCT table
*/
struct slc_sct_details {
u8 revision;
char name[SLC_SCT_NAME_LEN];
} __packed;
/*
* struct tcm_mem_info - SC TCM Shared memory details
* @is_present: is TCM region present
* @offset: offset of TCM shared memory details
*/
struct slc_tcm_mem_info {
__le32 is_present;
__le32 offset;
} __packed;
/*
* struct slc_sct_slice_desc - Slice descriptor definition used in shmem
* @slice_id: SCID of the slice
* @usecase_id: Usecase ID of the slice
* @slice_properties:
* slice_size: Contains the slice descriptor size - 20 bit wide
* rsvd: Reserved space - 4 bit wide
* flags: Flags for descriptors - 3 bit wide
* MPAM SCID: Bit 24
* Activate on boot: Bit 25
* Non-HLOS SCID: Bit 26
* HWMutex: Ensures only one processor (CPU or MCU) at a time can
* access the LLCC hardware resources - 5 bit wide
*/
struct slc_sct_slice_desc {
__le16 slice_id;
__le16 usecase_id;
__le32 slice_properties;
} __packed;
/*
Annotation
- Immediate include surface: `linux/bitfield.h`, `linux/cleanup.h`, `linux/device.h`, `linux/io.h`, `linux/kernel.h`, `linux/module.h`, `linux/mutex.h`, `linux/nvmem-consumer.h`.
- Detected declarations: `struct llcc_slice_config`, `struct slc_sct_error`, `struct slc_sct_status`, `struct slc_sct_details`, `struct slc_tcm_mem_info`, `struct slc_sct_slice_desc`, `struct slc_sct_mem`, `struct qcom_llcc_config`, `struct qcom_sct_config`, `enum llcc_reg_offset`.
- Atlas domain: Driver Families / drivers/soc.
- Implementation status: integration implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.