sound/pci/cs46xx/cs46xx_dsp_scb_types.h
Source file repositories/reference/linux-study-clean/sound/pci/cs46xx/cs46xx_dsp_scb_types.h
File Facts
- System
- Linux kernel
- Corpus path
sound/pci/cs46xx/cs46xx_dsp_scb_types.h- Extension
.h- Size
- 27442 bytes
- Lines
- 1199
- Domain
- Driver Families
- Bucket
- sound/pci
- 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
asm/byteorder.h
Detected Declarations
struct dsp_basic_dma_reqstruct dsp_scatter_gather_extstruct dsp_volume_controlstruct dsp_generic_scbstruct dsp_spos_control_blockstruct dsp_mix2_ostream_spbstruct dsp_timing_master_scbstruct dsp_codec_output_scbstruct dsp_codec_input_scbstruct dsp_pcm_serial_input_scbstruct dsp_src_task_scbstruct dsp_decimate_by_pow2_scbstruct dsp_vari_decimate_scbstruct dsp_mix2_ostream_scbstruct dsp_mix_only_scbstruct dsp_async_codec_input_scbstruct dsp_spdifiscbstruct dsp_spdifoscbstruct dsp_asynch_fg_rx_scbstruct dsp_asynch_fg_tx_scbstruct dsp_output_snoop_scbstruct dsp_spio_write_scbstruct dsp_magic_snoop_taskstruct dsp_filter_scb
Annotated Snippet
struct dsp_basic_dma_req {
/* DMA Requestor Word 0 (DCW) fields:
31 [30-28]27 [26:24] 23 22 21 20 [19:18] [17:16] 15 14 13 12 11 10 9 8 7 6 [5:0]
_______________________________________________________________________________________
|S| SBT |D| DBT |wb|wb| | | LS | SS |Opt|Do|SSG|DSG| | | | | | | Dword |
|H|_____ |H|_________|S_|D |__|__|______|_______|___|ne|__ |__ |__|__|_|_|_|_|_Count -1|
*/
u32 dcw; /* DMA Control Word */
u32 dmw; /* DMA Mode Word */
u32 saw; /* Source Address Word */
u32 daw; /* Destination Address Word */
};
struct dsp_scatter_gather_ext {
u32 npaw; /* Next-Page Address Word */
/* DMA Requestor Word 5 (NPCW) fields:
31-30 29 28 [27:16] [15:12] [11:3] [2:0]
_________________________________________________________________________________________
|SV |LE|SE| Sample-end byte offset | | Page-map entry offset for next | |
|page|__|__| ___________________________|_________|__page, if !sample-end___________|____|
*/
u32 npcw; /* Next-Page Control Word */
u32 lbaw; /* Loop-Begin Address Word */
u32 nplbaw; /* Next-Page after Loop-Begin Address Word */
u32 sgaw; /* Scatter/Gather Address Word */
};
struct dsp_volume_control {
___DSP_DUAL_16BIT_ALLOC(
rightTarg, /* Target volume for left & right channels */
leftTarg
)
___DSP_DUAL_16BIT_ALLOC(
rightVol, /* Current left & right channel volumes */
leftVol
)
};
/* Generic stream control block (SCB) structure definition */
struct dsp_generic_scb {
/* For streaming I/O, the DSP should never alter any words in the DMA
requestor or the scatter/gather extension. Only ad hoc DMA request
streams are free to alter the requestor (currently only occur in the
DOS-based MIDI controller and in debugger-inserted code).
If an SCB does not have any associated DMA requestor, these 9 ints
may be freed for use by other tasks, but the pointer to the SCB must
still be such that the insOrd:nextSCB appear at offset 9 from the
SCB pointer.
Basic (non scatter/gather) DMA requestor (4 ints)
*/
/* Initialized by the host, only modified by DMA
R/O for the DSP task */
struct dsp_basic_dma_req basic_req; /* Optional */
/* Scatter/gather DMA requestor extension (5 ints)
Initialized by the host, only modified by DMA
DSP task never needs to even read these.
*/
struct dsp_scatter_gather_ext sg_ext; /* Optional */
/* Sublist pointer & next stream control block (SCB) link.
Initialized & modified by the host R/O for the DSP task
*/
___DSP_DUAL_16BIT_ALLOC(
next_scb, /* REQUIRED */
sub_list_ptr /* REQUIRED */
)
/* Pointer to this tasks parameter block & stream function pointer
Initialized by the host R/O for the DSP task */
___DSP_DUAL_16BIT_ALLOC(
entry_point, /* REQUIRED */
this_spb /* REQUIRED */
)
/* rsConfig register for stream buffer (rsDMA reg.
is loaded from basicReq.daw for incoming streams, or
basicReq.saw, for outgoing streams)
31 30 29 [28:24] [23:16] 15 14 13 12 11 10 9 8 7 6 5 4 [3:0]
______________________________________________________________________________
|DMA |D|maxDMAsize| streamNum|dir|p| | | | | | |ds |shr 1|rev Cy | mod |
|prio |_|__________|__________|___|_|__|__|__|__|_|_|___|_____|_______|_______|
31 30 29 [28:24] [23:16] 15 14 13 12 11 10 9 8 7 6 5 4 [3:0]
Annotation
- Immediate include surface: `asm/byteorder.h`.
- Detected declarations: `struct dsp_basic_dma_req`, `struct dsp_scatter_gather_ext`, `struct dsp_volume_control`, `struct dsp_generic_scb`, `struct dsp_spos_control_block`, `struct dsp_mix2_ostream_spb`, `struct dsp_timing_master_scb`, `struct dsp_codec_output_scb`, `struct dsp_codec_input_scb`, `struct dsp_pcm_serial_input_scb`.
- Atlas domain: Driver Families / sound/pci.
- 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.