drivers/firmware/qcom/qcom_qseecom_uefisecapp.c
Source file repositories/reference/linux-study-clean/drivers/firmware/qcom/qcom_qseecom_uefisecapp.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/firmware/qcom/qcom_qseecom_uefisecapp.c- Extension
.c- Size
- 26485 bytes
- Lines
- 866
- Domain
- Driver Families
- Bucket
- drivers/firmware
- Inferred role
- Driver Families: implementation source
- Status
- source 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- 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/efi.hlinux/kernel.hlinux/module.hlinux/mutex.hlinux/of.hlinux/platform_device.hlinux/sizes.hlinux/slab.hlinux/types.hlinux/ucs2_string.hlinux/firmware/qcom/qcom_qseecom.hlinux/firmware/qcom/qcom_scm.hlinux/firmware/qcom/qcom_tzmem.h
Detected Declarations
struct qsee_req_uefi_get_variablestruct qsee_rsp_uefi_get_variablestruct qsee_req_uefi_set_variablestruct qsee_rsp_uefi_set_variablestruct qsee_req_uefi_get_next_variablestruct qsee_rsp_uefi_get_next_variablestruct qsee_req_uefi_query_variable_infostruct qsee_rsp_uefi_query_variable_infostruct qcuefi_clientfunction qsee_uefi_status_to_efifunction qsee_uefi_get_variablefunction qsee_uefi_set_variablefunction qsee_uefi_get_next_variablefunction qsee_uefi_query_variable_infofunction qcuefi_set_referencefunction qcuefi_releasefunction qcuefi_get_variablefunction qcuefi_set_variablefunction qcuefi_get_next_variablefunction qcuefi_query_variable_infofunction qcom_uefisecapp_probefunction qcom_uefisecapp_remove
Annotated Snippet
struct qsee_req_uefi_get_variable {
u32 command_id;
u32 length;
u32 name_offset;
u32 name_size;
u32 guid_offset;
u32 guid_size;
u32 data_size;
} __packed;
/**
* struct qsee_rsp_uefi_get_variable - Response for GetVariable command.
* @command_id: The ID of the command. Should be %QSEE_CMD_UEFI_GET_VARIABLE.
* @length: Length of the response in bytes, including this struct and the
* returned data.
* @status: Status of this command.
* @attributes: EFI variable attributes.
* @data_offset: Offset from the start of this struct to where the data is
* stored, in bytes.
* @data_size: Size of the returned data, in bytes. In case status indicates
* that the buffer is too small, this will be the size required
* to store the EFI variable data.
*/
struct qsee_rsp_uefi_get_variable {
u32 command_id;
u32 length;
u32 status;
u32 attributes;
u32 data_offset;
u32 data_size;
} __packed;
/**
* struct qsee_req_uefi_set_variable - Request for the SetVariable command.
* @command_id: The ID of the command. Must be %QSEE_CMD_UEFI_SET_VARIABLE.
* @length: Length of the request in bytes, including this struct and any
* parameters (name, GUID, data) stored after it as well as any
* padding thereof required for alignment.
* @name_offset: Offset from the start of this struct to where the variable
* name is stored (as utf-16 string), in bytes.
* @name_size: Size of the name parameter in bytes, including null-terminator.
* @guid_offset: Offset from the start of this struct to where the GUID
* parameter is stored, in bytes.
* @guid_size: Size of the GUID parameter in bytes, i.e. sizeof(efi_guid_t).
* @attributes: The EFI variable attributes to set for this variable.
* @data_offset: Offset from the start of this struct to where the EFI variable
* data is stored, in bytes.
* @data_size: Size of EFI variable data, in bytes.
*
*/
struct qsee_req_uefi_set_variable {
u32 command_id;
u32 length;
u32 name_offset;
u32 name_size;
u32 guid_offset;
u32 guid_size;
u32 attributes;
u32 data_offset;
u32 data_size;
} __packed;
/**
* struct qsee_rsp_uefi_set_variable - Response for the SetVariable command.
* @command_id: The ID of the command. Should be %QSEE_CMD_UEFI_SET_VARIABLE.
* @length: The length of this response, i.e. the size of this struct in
* bytes.
* @status: Status of this command.
* @_unknown1: Unknown response field.
* @_unknown2: Unknown response field.
*/
struct qsee_rsp_uefi_set_variable {
u32 command_id;
u32 length;
u32 status;
u32 _unknown1;
u32 _unknown2;
} __packed;
/**
* struct qsee_req_uefi_get_next_variable - Request for the
* GetNextVariableName command.
* @command_id: The ID of the command. Must be
* %QSEE_CMD_UEFI_GET_NEXT_VARIABLE.
* @length: Length of the request in bytes, including this struct and any
* parameters (name, GUID) stored after it as well as any padding
* thereof for alignment.
* @guid_offset: Offset from the start of this struct to where the GUID
* parameter is stored, in bytes.
* @guid_size: Size of the GUID parameter in bytes, i.e. sizeof(efi_guid_t).
Annotation
- Immediate include surface: `linux/efi.h`, `linux/kernel.h`, `linux/module.h`, `linux/mutex.h`, `linux/of.h`, `linux/platform_device.h`, `linux/sizes.h`, `linux/slab.h`.
- Detected declarations: `struct qsee_req_uefi_get_variable`, `struct qsee_rsp_uefi_get_variable`, `struct qsee_req_uefi_set_variable`, `struct qsee_rsp_uefi_set_variable`, `struct qsee_req_uefi_get_next_variable`, `struct qsee_rsp_uefi_get_next_variable`, `struct qsee_req_uefi_query_variable_info`, `struct qsee_rsp_uefi_query_variable_info`, `struct qcuefi_client`, `function qsee_uefi_status_to_efi`.
- Atlas domain: Driver Families / drivers/firmware.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.