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.

Dependency Surface

Detected Declarations

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

Implementation Notes