sound/soc/fsl/fsl_sai.h
Source file repositories/reference/linux-study-clean/sound/soc/fsl/fsl_sai.h
File Facts
- System
- Linux kernel
- Corpus path
sound/soc/fsl/fsl_sai.h- Extension
.h- Size
- 11659 bytes
- Lines
- 331
- Domain
- Driver Families
- Bucket
- sound/soc
- 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
linux/dma/imx-dma.hsound/dmaengine_pcm.h
Detected Declarations
struct fsl_sai_soc_datastruct fsl_sai_veridstruct fsl_sai_paramstruct fsl_sai_dl_cfgstruct fsl_sai
Annotated Snippet
struct fsl_sai_soc_data {
bool use_imx_pcm;
bool use_edma;
bool mclk0_is_mclk1;
bool mclk_with_tere;
unsigned int fifo_depth;
unsigned int pins;
unsigned int reg_offset;
unsigned int flags;
unsigned int max_register;
unsigned int max_burst[2];
};
/**
* struct fsl_sai_verid - version id data
* @version: version number
* @feature: feature specification number
* 0000000000000000b - Standard feature set
* 0000000000000000b - Standard feature set
*/
struct fsl_sai_verid {
u32 version;
u32 feature;
};
/**
* struct fsl_sai_param - parameter data
* @slot_num: The maximum number of slots per frame
* @fifo_depth: The number of words in each FIFO (depth)
* @dataline: The number of datalines implemented
*/
struct fsl_sai_param {
u32 slot_num;
u32 fifo_depth;
u32 dataline;
};
struct fsl_sai_dl_cfg {
unsigned int type;
unsigned int pins[2];
unsigned int mask[2];
unsigned int start_off[2];
unsigned int next_off[2];
};
struct fsl_sai {
struct platform_device *pdev;
struct regmap *regmap;
struct clk *bus_clk;
struct clk *mclk_clk[FSL_SAI_MCLK_MAX];
struct clk *pll8k_clk;
struct clk *pll11k_clk;
struct resource *res;
bool is_consumer_mode[2];
bool is_lsb_first;
bool is_dsp_mode[2];
bool is_pdm_mode;
bool is_multi_fifo_dma;
bool synchronous[2];
struct fsl_sai_dl_cfg *dl_cfg;
unsigned int dl_cfg_cnt;
bool mclk_direction_output;
bool is_bit_clock_swap;
unsigned int mclk_id[2];
unsigned int mclk_streams;
unsigned int slots[2];
unsigned int slot_width[2];
unsigned int bclk_ratio;
const struct fsl_sai_soc_data *soc_data;
struct snd_soc_dai_driver cpu_dai_drv[3];
struct snd_dmaengine_dai_dma_data dma_params_rx;
struct snd_dmaengine_dai_dma_data dma_params_tx;
struct fsl_sai_verid verid;
struct fsl_sai_param param;
struct pm_qos_request pm_qos_req;
struct pinctrl *pinctrl;
struct pinctrl_state *pins_state;
struct sdma_peripheral_config audio_config[2];
struct snd_pcm_hw_constraint_list constraint_rates;
unsigned int constraint_rates_list[FAL_SAI_NUM_RATES];
};
#define TX 1
#define RX 0
#endif /* __FSL_SAI_H */
Annotation
- Immediate include surface: `linux/dma/imx-dma.h`, `sound/dmaengine_pcm.h`.
- Detected declarations: `struct fsl_sai_soc_data`, `struct fsl_sai_verid`, `struct fsl_sai_param`, `struct fsl_sai_dl_cfg`, `struct fsl_sai`.
- Atlas domain: Driver Families / sound/soc.
- 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.