drivers/scsi/isci/registers.h
Source file repositories/reference/linux-study-clean/drivers/scsi/isci/registers.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/scsi/isci/registers.h- Extension
.h- Size
- 71035 bytes
- Lines
- 1864
- Domain
- Driver Families
- Bucket
- drivers/scsi
- 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.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- 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 scu_viit_entrystruct scu_iit_entrystruct smu_registersstruct scu_sdma_registersstruct scu_transport_layer_registersstruct scu_link_layer_registersstruct scu_sgpio_registersstruct scu_viit_registersstruct scu_port_task_scheduler_registersstruct scu_port_task_scheduler_group_registersstruct scu_afe_transceiverstruct scu_afe_registersstruct scu_protocol_engine_group_registersstruct scu_viit_iitstruct scu_zone_partition_tablestruct scu_completion_ramstruct scu_frame_buffer_ramstruct scu_scratch_ramstruct noa_protocol_engine_partitionstruct noa_hub_partitionstruct noa_host_interface_partitionstruct transport_link_layer_pairstruct scu_peg_registersstruct scu_registers
Annotated Snippet
struct scu_viit_entry {
/**
* This must be encoded as to the type of initiator that is being constructed
* for this port.
*/
u32 status;
/**
* Virtual initiator high SAS Address
*/
u32 initiator_sas_address_hi;
/**
* Virtual initiator low SAS Address
*/
u32 initiator_sas_address_lo;
/**
* This must be 0
*/
u32 reserved;
};
/* IIT Status Defines */
#define SCU_IIT_ENTRY_ID_MASK (0xC0000000)
#define SCU_IIT_ENTRY_ID_SHIFT (30)
#define SCU_IIT_ENTRY_STATUS_UPDATE_MASK (0x20000000)
#define SCU_IIT_ENTRY_STATUS_UPDATE_SHIFT (29)
#define SCU_IIT_ENTRY_LPI_MASK (0x00000F00)
#define SCU_IIT_ENTRY_LPI_SHIFT (8)
#define SCU_IIT_ENTRY_STATUS_MASK (0x000000FF)
#define SCU_IIT_ENTRY_STATUS_SHIFT (0)
/* IIT Remote Initiator Defines */
#define SCU_IIT_ENTRY_REMOTE_TAG_MASK (0x0000FFFF)
#define SCU_IIT_ENTRY_REMOTE_TAG_SHIFT (0)
#define SCU_IIT_ENTRY_REMOTE_RNC_MASK (0x0FFF0000)
#define SCU_IIT_ENTRY_REMOTE_RNC_SHIFT (16)
#define SCU_IIT_ENTRY_ID_INVALID (0 << SCU_IIT_ENTRY_ID_SHIFT)
#define SCU_IIT_ENTRY_ID_VIIT (1 << SCU_IIT_ENTRY_ID_SHIFT)
#define SCU_IIT_ENTRY_ID_IIT (2 << SCU_IIT_ENTRY_ID_SHIFT)
#define SCU_IIT_ENTRY_ID_VIRT_EXP (3 << SCU_IIT_ENTRY_ID_SHIFT)
/**
* struct scu_iit_entry - This will be implemented later when we support
* virtual functions
*
*
*/
struct scu_iit_entry {
u32 status;
u32 remote_initiator_sas_address_hi;
u32 remote_initiator_sas_address_lo;
u32 remote_initiator;
};
/* Generate a value for an SCU register */
#define SCU_GEN_VALUE(name, value) \
(((value) << name ## _SHIFT) & (name ## _MASK))
/*
* Generate a bit value for an SCU register
* Make sure that the register MASK is just a single bit */
#define SCU_GEN_BIT(name) \
SCU_GEN_VALUE(name, ((u32)1))
#define SCU_SET_BIT(name, reg_value) \
((reg_value) | SCU_GEN_BIT(name))
#define SCU_CLEAR_BIT(name, reg_value) \
((reg_value)$ ~(SCU_GEN_BIT(name)))
/*
* *****************************************************************************
* Unions for bitfield definitions of SCU Registers
* SMU Post Context Port
* ***************************************************************************** */
#define SMU_POST_CONTEXT_PORT_CONTEXT_INDEX_SHIFT (0)
#define SMU_POST_CONTEXT_PORT_CONTEXT_INDEX_MASK (0x00000FFF)
#define SMU_POST_CONTEXT_PORT_LOGICAL_PORT_INDEX_SHIFT (12)
#define SMU_POST_CONTEXT_PORT_LOGICAL_PORT_INDEX_MASK (0x0000F000)
#define SMU_POST_CONTEXT_PORT_PROTOCOL_ENGINE_SHIFT (16)
Annotation
- Detected declarations: `struct scu_viit_entry`, `struct scu_iit_entry`, `struct smu_registers`, `struct scu_sdma_registers`, `struct scu_transport_layer_registers`, `struct scu_link_layer_registers`, `struct scu_sgpio_registers`, `struct scu_viit_registers`, `struct scu_port_task_scheduler_registers`, `struct scu_port_task_scheduler_group_registers`.
- Atlas domain: Driver Families / drivers/scsi.
- Implementation status: source implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
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.