STRUCT FSL_SSI(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct fsl_ssi(9) πŸ’…

okay so bestie, welcome to the Kernel API Manual β€” this is the whole entire glow-up tour of struct fsl_ssi, which is literally just per-SSI private data and honestly? it's giving main character energy. every field, no skips, no cap. πŸŽ€


✨ SYNOPSIS ✨

like, here's the whole struct, exactly as it lives, don't touch a single character:

struct fsl_ssi {
    struct regmap *regs;
    int irq;
    struct snd_soc_dai_driver cpu_dai_drv;
    unsigned int dai_fmt;
    u8 streams;
    u8 i2s_net;
    bool synchronous;
    bool use_dma;
    bool use_dual_fifo;
    bool use_dyna_fifo;
    bool has_ipg_clk_name;
    unsigned int fifo_depth;
    unsigned int slot_width;
    unsigned int slots;
    struct fsl_ssi_regvals regvals[2];
    struct clk *clk;
    struct clk *baudclk;
    unsigned int baudclk_streams;
    u32 regcache_sfcsr;
    u32 regcache_sacnt;
    struct snd_dmaengine_dai_dma_data dma_params_tx;
    struct snd_dmaengine_dai_dma_data dma_params_rx;
    dma_addr_t ssi_phys;
    struct imx_pcm_fiq_params fiq_params;
    struct platform_device *card_pdev;
    char card_name[32];
    u32 card_idx;
    struct fsl_ssi_dbg dbg_stats;
    const struct fsl_ssi_soc_data *soc;
    struct device *dev;
    u32 fifo_watermark;
    u32 dma_maxburst;
    struct mutex ac97_reg_lock;
    struct sdma_peripheral_config audio_config[2];
 };

πŸ¦‹ Members πŸ¦‹

bestie, buckle up, because there's a lot of them and every single one is iconic in its own way:

  • regs β€” Pointer to the regmap registers πŸ’«
  • irq β€” IRQ of this SSI
  • cpu_dai_drv β€” CPU DAI driver for this device
  • dai_fmt β€” DAI configuration this device is currently used with
  • streams β€” Mask of current active streams: BIT(TX) and BIT(RX) πŸ‘‘
  • i2s_net β€” I2S and Network mode configurations of SCR register (this is the initial settings based on the DAI format)
  • synchronous β€” Use synchronous mode β€” both of TX and RX use STCK and SFCK
  • use_dma β€” DMA is used or FIQ with stream filter
  • use_dual_fifo β€” DMA with support for dual FIFO mode
  • use_dyna_fifo β€” DMA with support for multi FIFO script
  • has_ipg_clk_name β€” If "ipg" is in the clock name list of device tree 🌸
  • fifo_depth β€” Depth of the SSI FIFOs
  • slot_width β€” Width of each DAI slot
  • slots β€” Number of slots
  • regvals β€” Specific RX/TX register settings
  • clk β€” Clock source to access register
  • baudclk β€” Clock source to generate bit and frame-sync clocks
  • baudclk_streams β€” Active streams that are using baudclk
  • regcache_sfcsr β€” Cache sfcsr register value during suspend and resume 😴
  • regcache_sacnt β€” Cache sacnt register value during suspend and resume
  • dma_params_tx β€” DMA transmit parameters
  • dma_params_rx β€” DMA receive parameters
  • ssi_phys β€” physical address of the SSI registers
  • fiq_params β€” FIQ stream filtering parameters
  • card_pdev β€” Platform_device pointer to register a sound card for PowerPC or to register a CODEC platform device for AC97
  • card_name β€” Platform_device name to register a sound card for PowerPC or to register a CODEC platform device for AC97
  • card_idx β€” The index of SSI to register a sound card for PowerPC or to register a CODEC platform device for AC97
  • dbg_stats β€” Debugging statistics πŸ”
  • soc β€” SoC specific data
  • dev β€” Pointer to pdev->dev
  • fifo_watermark β€” The FIFO watermark setting. Notifies DMA when there are fifo_watermark or fewer words in TX fifo or fifo_watermark or more empty words in RX fifo. 🌊
  • dma_maxburst β€” Max number of words to transfer in one go. So far, this is always the same as fifo_watermark.
  • ac97_reg_lock β€” Mutex lock to serialize AC97 register access operations πŸ”’
  • audio_config β€” configure for dma multi fifo script

ngl bestie, that dma_maxburst one is currently always the same as fifo_watermark β€” that's the docs talking, not me guessing. pls don't come for me. πŸ™ˆ

πŸ’œ SEE ALSO πŸ’œ

Kernel file ./sound/soc/fsl/fsl_ssi.c, plus the whole friend group: FSLSSI_I2S_FORMATS(9), fsl_ssi_isr(9), fsl_ssi_config_enable(9), fsl_ssi_config_disable(9), fsl_ssi_setup_regvals(9), fsl_ssi_set_bclk(9), fsl_ssi_hw_params(9), fsl_ssi_set_dai_fmt(9), fsl_ssi_set_dai_tdm_slot(9), fsl_ssi_trigger(9), fsl_ssi_hw_init(9), fsl_ssi_hw_clean(9) β€” go read them, they ate. πŸ”₯


🫢 that's the whole page babes! it came from the source tree at ./sound/soc/fsl, dated October 2026, and it's literally titled struct fsl_ssi(9) β€” slay, periodt. πŸ’…βœ¨

πŸ“¦ where this page comes from