STRUCT K3_RINGACC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct k3_ringacc(9) ✨

okay so bestie, welcome to the Kernel API Manual πŸ’– β€” today's main character is struct k3_ringacc, aka the Rings accelerator descriptor. yes it's a struct. yes it's iconic. let's get into it πŸŽ€


🌸 NAME 🌸

struct k3_ringacc β€” the Rings accelerator descriptor, fr fr πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

struct k3_ringacc {
    struct device *dev;
    struct k3_ringacc_proxy_gcfg_regs __iomem *proxy_gcfg;
    void __iomem *proxy_target_base;
    u32 num_rings;
    unsigned long *rings_inuse;
    struct ti_sci_resource *rm_gp_range;
    bool dma_ring_reset_quirk;
    u32 num_proxies;
    unsigned long *proxy_inuse;
    struct k3_ring *rings;
    struct list_head list;
    struct mutex req_lock;
    const struct ti_sci_handle *tisci;
    const struct ti_sci_rm_ringacc_ops *tisci_ring_ops;
    u32 tisci_dev_id;
    const struct k3_ringacc_ops *ops;
    bool dma_rings;
 };

like, copy it exactly pls, don't be out here editing struct definitions πŸ’…


πŸ’œ Members πŸ’œ

so each of these fields is doing its own lil job and honestly they all ate:

  • dev β€” pointer on RA device 🫢
  • proxy_gcfg β€” the RA proxy global config registers, lowkey the control room ✨
  • proxy_target_base β€” RA proxy datapath region, where the actual traffic happens πŸš€
  • num_rings β€” number of ring in RA (yes, singular "ring", we don't gatekeep grammar) πŸ’€
  • rings_inuse β€” bitfield for ring usage tracking, keeping receipts on who's using what πŸ“‹
  • rm_gp_range β€” general purpose rings range from tisci πŸ‘‘
  • dma_ring_reset_quirk β€” DMA reset workaround enable, a little "we know, we know" flag πŸ™ˆ
  • num_proxies β€” number of RA proxies ⭐
  • proxy_inuse β€” bitfield for proxy usage tracking, same energy as rings_inuse but for proxies πŸŽ€
  • rings β€” array of rings descriptors (struct k3_ring), the whole squad 🌈
  • list β€” list of RAs in the system, everyone linked up πŸ¦‹
  • req_lock β€” protect rings allocation, do NOT skip the lock bestie πŸ”’
  • tisci β€” pointer ti-sci handle 🧚
  • tisci_ring_ops β€” ti-sci rings ops πŸ’«
  • tisci_dev_id β€” ti-sci device id πŸ“
  • ops β€” SoC specific ringacc operation, the per-SoC special sauce πŸ”₯
  • dma_rings β€” indicate DMA ring (dual ring within BCDMA/PKTDMA), no cap it's a dual ring πŸ’…

🌟 SEE ALSO 🌟

go read the kernel file ./drivers/soc/ti/k3-ringacc.c and also these fellow icons:

  • struct k3_ring_rt_regs(9)
  • struct k3_ring_fifo_regs(9)
  • struct k3_ringacc_proxy_gcfg_regs(9)
  • struct k3_ringacc_proxy_target_regs(9)
  • struct k3_ring_state(9)
  • struct k3_ring(9)
  • struct k3_ringacc_soc_data(9)

ngl, the whole family lives in ./drivers/soc/ti and they're all worth a read 🫢

okay that's the page!! mwah πŸ’‹ this came from ./drivers/soc/ti, dated October 2026, and it's still serving struct k3_ringacc(9) realness. periodt πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from