drivers/firmware/ti_sci.h
Source file repositories/reference/linux-study-clean/drivers/firmware/ti_sci.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/firmware/ti_sci.h- Extension
.h- Size
- 60823 bytes
- Lines
- 1561
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
- No C-style include directives detected by the generator.
Detected Declarations
struct ti_sci_msg_hdrstruct ti_sci_msg_resp_versionstruct ti_sci_msg_req_rebootstruct ti_sci_msg_resp_query_fw_capsstruct ti_sci_msg_req_set_device_statestruct ti_sci_msg_req_get_device_statestruct ti_sci_msg_resp_get_device_statestruct ti_sci_msg_req_set_device_resetsstruct ti_sci_msg_req_set_clock_statestruct ti_sci_msg_req_get_clock_statestruct ti_sci_msg_resp_get_clock_statestruct ti_sci_msg_req_set_clock_parentstruct ti_sci_msg_req_get_clock_parentstruct ti_sci_msg_resp_get_clock_parentstruct ti_sci_msg_req_get_clock_num_parentsstruct ti_sci_msg_resp_get_clock_num_parentsstruct ti_sci_msg_req_query_clock_freqstruct ti_sci_msg_resp_query_clock_freqstruct ti_sci_msg_req_set_clock_freqstruct ti_sci_msg_req_get_clock_freqstruct ti_sci_msg_resp_get_clock_freqstruct ti_sci_msg_req_prepare_sleepstruct ti_sci_msg_req_set_io_isolationstruct ti_sci_msg_resp_lpm_wake_reasonstruct ti_sci_msg_req_lpm_set_device_constraintstruct ti_sci_msg_req_lpm_set_latency_constraintstruct ti_sci_msg_req_get_resource_rangestruct ti_sci_msg_resp_get_resource_rangestruct ti_sci_msg_req_manage_irqstruct ti_sci_msg_rm_ring_cfg_reqstruct ti_sci_msg_psil_pairstruct ti_sci_msg_psil_unpairstruct ti_sci_msg_udmap_rx_flow_cfgstruct rm_ti_sci_msg_udmap_rx_flow_opt_cfgstruct ti_sci_msg_rm_udmap_tx_ch_cfg_reqstruct ti_sci_msg_rm_udmap_rx_ch_cfg_reqstruct ti_sci_msg_rm_udmap_flow_cfg_reqstruct ti_sci_msg_req_proc_requeststruct ti_sci_msg_req_proc_releasestruct ti_sci_msg_req_proc_handoverstruct ti_sci_msg_req_set_configstruct ti_sci_msg_req_set_ctrlstruct ti_sci_msg_req_get_statusstruct ti_sci_msg_resp_get_status
Annotated Snippet
struct ti_sci_msg_hdr {
u16 type;
u8 host;
u8 seq;
#define TI_SCI_MSG_FLAG(val) (1 << (val))
#define TI_SCI_FLAG_REQ_GENERIC_NORESPONSE 0x0
#define TI_SCI_FLAG_REQ_ACK_ON_RECEIVED TI_SCI_MSG_FLAG(0)
#define TI_SCI_FLAG_REQ_ACK_ON_PROCESSED TI_SCI_MSG_FLAG(1)
#define TI_SCI_FLAG_RESP_GENERIC_NACK 0x0
#define TI_SCI_FLAG_RESP_GENERIC_ACK TI_SCI_MSG_FLAG(1)
/* Additional Flags */
u32 flags;
} __packed;
/**
* struct ti_sci_msg_resp_version - Response for a message
* @hdr: Generic header
* @firmware_description: String describing the firmware
* @firmware_revision: Firmware revision
* @abi_major: Major version of the ABI that firmware supports
* @abi_minor: Minor version of the ABI that firmware supports
*
* In general, ABI version changes follow the rule that minor version increments
* are backward compatible. Major revision changes in ABI may not be
* backward compatible.
*
* Response to a generic message with message type TI_SCI_MSG_VERSION
*/
struct ti_sci_msg_resp_version {
struct ti_sci_msg_hdr hdr;
char firmware_description[32];
u16 firmware_revision;
u8 abi_major;
u8 abi_minor;
} __packed;
/**
* struct ti_sci_msg_req_reboot - Reboot the SoC
* @hdr: Generic Header
*
* Request type is TI_SCI_MSG_SYS_RESET, responded with a generic
* ACK/NACK message.
*/
struct ti_sci_msg_req_reboot {
struct ti_sci_msg_hdr hdr;
} __packed;
/**
* struct ti_sci_msg_resp_query_fw_caps - Response for query firmware caps
* @hdr: Generic header
* @fw_caps: Each bit in fw_caps indicating one FW/SOC capability
* MSG_FLAG_CAPS_GENERIC: Generic capability (LPM not supported)
* MSG_FLAG_CAPS_LPM_PARTIAL_IO: Partial IO in LPM
* MSG_FLAG_CAPS_LPM_DM_MANAGED: LPM can be managed by DM
* MSG_FLAG_CAPS_LPM_ABORT: Abort entry to LPM
* MSG_FLAG_CAPS_IO_ISOLATION: IO Isolation support
* MSG_FLAG_CAPS_LPM_BOARDCFG_MANAGED: LPM config done statically
* for the DM via boardcfg
* MSG_FLAG_CAPS_LPM_IRQ_CONTEXT_LOST: DM is not able to restore IRQ
* context
* MSG_FLAG_CAPS_LPM_CLK_CONTEXT_LOST: DM is not able to restore
* Clock context
*
* Response to a generic message with message type TI_SCI_MSG_QUERY_FW_CAPS
* providing currently available SOC/firmware capabilities. SoC that don't
* support low power modes return only MSG_FLAG_CAPS_GENERIC capability.
*/
struct ti_sci_msg_resp_query_fw_caps {
struct ti_sci_msg_hdr hdr;
#define MSG_FLAG_CAPS_GENERIC TI_SCI_MSG_FLAG(0)
#define MSG_FLAG_CAPS_LPM_PARTIAL_IO TI_SCI_MSG_FLAG(4)
#define MSG_FLAG_CAPS_LPM_DM_MANAGED TI_SCI_MSG_FLAG(5)
#define MSG_FLAG_CAPS_LPM_ABORT TI_SCI_MSG_FLAG(9)
#define MSG_FLAG_CAPS_IO_ISOLATION TI_SCI_MSG_FLAG(7)
#define MSG_FLAG_CAPS_LPM_BOARDCFG_MANAGED TI_SCI_MSG_FLAG(12)
#define MSG_FLAG_CAPS_LPM_IRQ_CONTEXT_LOST TI_SCI_MSG_FLAG(14)
#define MSG_FLAG_CAPS_LPM_CLK_CONTEXT_LOST TI_SCI_MSG_FLAG(15)
#define MSG_MASK_CAPS_LPM GENMASK_ULL(4, 1)
u64 fw_caps;
} __packed;
/**
* struct ti_sci_msg_req_set_device_state - Set the desired state of the device
* @hdr: Generic header
* @id: Indicates which device to modify
* @reserved: Reserved space in message, must be 0 for backward compatibility
* @state: The desired state of the device.
*
* Certain flags can also be set to alter the device state:
* + MSG_FLAG_DEVICE_WAKE_ENABLED - Configure the device to be a wake source.
Annotation
- Detected declarations: `struct ti_sci_msg_hdr`, `struct ti_sci_msg_resp_version`, `struct ti_sci_msg_req_reboot`, `struct ti_sci_msg_resp_query_fw_caps`, `struct ti_sci_msg_req_set_device_state`, `struct ti_sci_msg_req_get_device_state`, `struct ti_sci_msg_resp_get_device_state`, `struct ti_sci_msg_req_set_device_resets`, `struct ti_sci_msg_req_set_clock_state`, `struct ti_sci_msg_req_get_clock_state`.
- Atlas domain: Driver Families / drivers/firmware.
- Implementation status: source 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.