STRUCT OMAP_SSI_PORT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct omap_ssi_port(9) ✨ β€” Kernel API Manual 🌈

okay bestie, this is the struct omap_ssi_port(9) page, and it's literally the data layout for an OMAP SSI port. No cap, we're getting into the port's whole little world. 🫢

🌸 NAME 🌸

struct omap_ssi_port β€” OMAP SSI port data. That's the name and the one-line vibe, periodt. πŸ’…

πŸ¦‹ SYNOPSIS πŸ¦‹

Here's the struct in all its glory, exactly as written, no edits, no nothing:

       struct omap_ssi_port {
           struct device           *dev;
           struct device           *pdev;
           dma_addr_t sst_dma;
           dma_addr_t ssr_dma;
           void __iomem            *sst_base;
           void __iomem            *ssr_base;
           spinlock_t wk_lock;
           spinlock_t lock;
           unsigned int            channels;
           struct list_head        txqueue[SSI_MAX_CHANNELS];
           struct list_head        rxqueue[SSI_MAX_CHANNELS];
           struct list_head        brkqueue;
           struct list_head        errqueue;
           struct delayed_work     errqueue_work;
           unsigned int            irq;
           int wake_irq;
           struct gpio_desc        *wake_gpio;
           bool wktest:1;
           unsigned long           flags;
           unsigned int            wk_refcount;
           struct work_struct      work;
           u32 sys_mpu_enable;
           struct omap_ssm_ctx     sst;
           struct omap_ssm_ctx     ssr;
           u32 loss_count;
           u32 port_id;
         #ifdef CONFIG_DEBUG_FS;
           struct dentry *dir;
         #endif;
        };

πŸ‘‘ Members πŸ‘‘

The member roster is giving "who's who at the port party," and every entry matters:

  • dev β€” device associated to the port (HSI port). It's the port's main-character device link. πŸ’–
  • pdev β€” platform device associated to the port.
  • sst_dma β€” SSI transmitter physical base address. Physical, not virtual, bestie.
  • ssr_dma β€” SSI receiver physical base address.
  • sst_base β€” SSI transmitter base address.
  • ssr_base β€” SSI receiver base address.
  • wk_lock β€” spin lock to serialize access to the wake lines. Gotta keep the wake-line girlies from stepping on each other. πŸ’…
  • lock β€” Spin lock to serialize access to the SSI port. Protect the port, periodt.
  • channels β€” Current number of channels configured (1,2,4 or 8). Those are the numbers, iykyk.
  • txqueue β€” TX message queues.
  • rxqueue β€” RX message queues.
  • brkqueue β€” Queue of incoming HWBREAK requests (FRAME mode).
  • errqueue β€” Queue for failed messages. Sad girl queue, but necessary. 😭
  • errqueue_work β€” Delayed Work for failed messages.
  • irq β€” IRQ number.
  • wake_irq β€” IRQ number for incoming wake line (-1 if none).
  • wake_gpio β€” GPIO number for incoming wake line (-1 if none).
  • flags β€” flags to keep track of states.
  • wk_refcount β€” Reference count for output wake line.
  • work β€” worker for starting TX. Get that transmission started, bestie. πŸ”₯
  • sys_mpu_enable β€” Context for the interrupt enable register for irq 0.
  • sst β€” Context for the synchronous serial transmitter.
  • ssr β€” Context for the synchronous serial receiver.

πŸ”— SEE ALSO πŸ”—

Kernel file ./drivers/hsi/controllers/omap_ssi.h β€” plus bestie, go peek at struct omap_ssm_ctx(9), struct gdd_trn(9), and struct omap_ssi_controller(9). This is the friend group, fr fr. 🫢


xoxo, from ./drivers/hsi/controllers πŸ’– β€” October 2026 edition, all about struct omap_ssi_port(9) πŸ’…βœ¨

πŸ“¦ where this page comes from