STRUCT K3_RING(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay so welcome to the Kernel API Manual, bestie β€” today's main character is struct k3_ring(9). struct k3_ring β€” RA Ring descriptor. That's the name drop, and yes it's giving kernel-internals royalty. πŸ‘‘


✨ SYNOPSIS ✨

The struct, exactly as it is, no edits, no cap:

       struct k3_ring {
           struct k3_ring_rt_regs __iomem *rt;
           struct k3_ring_fifo_regs __iomem *fifos;
           struct k3_ringacc_proxy_target_regs  __iomem *proxy;
           dma_addr_t ring_mem_dma;
           void *ring_mem_virt;
           const struct k3_ring_ops *ops;
           u32 size;
           enum k3_ring_size elm_size;
           enum k3_ring_mode mode;
           u32 flags;
         #define K3_RING_FLAG_BUSY       BIT(1);
         #define K3_RING_FLAG_SHARED     BIT(2);
         #define K3_RING_FLAG_REVERSE    BIT(3);
           struct k3_ring_state state;
           u32 ring_id;
           struct k3_ringacc       *parent;
           u32 use_count;
           int proxy_id;
           struct device   *dma_dev;
           u32 asel;
         #define K3_ADDRESS_ASEL_SHIFT   48;
        };

Also peep the flag define besties living inside the struct code: K3_RING_FLAG_BUSY, K3_RING_FLAG_SHARED, K3_RING_FLAG_REVERSE, and K3_ADDRESS_ASEL_SHIFT. They're all right there above, periodt. 🚩

πŸ’… Members πŸ’…

Every field, no skips, no cap:

  • rt β€” Ring control/status registers. The bossy little control center. πŸŽ›οΈ
  • fifos β€” Ring queues registers. Queue energy fr fr. 🚦
  • proxy β€” Ring Proxy Datapath registers. Proxy era. πŸ›°οΈ
  • ring_mem_dma β€” Ring buffer dma address. Literal and important. 🧠
  • ring_mem_virt β€” Ring buffer virt address. Virtual bestie. 🫧
  • ops β€” Ring operations. The operation squad. βš™οΈ
  • size β€” Ring size in elements. Count elements, not vibes. πŸ”’
  • elm_size β€” Size of the ring element. Element-size check. πŸ“
  • mode β€” Ring mode. Mode unlocked. 🎚️
  • flags β€” flags. Yes, lowercase flags β€” I'm not adding lore. 🚩
  • state β€” Ring state. State of mind, but for the ring. πŸ’«
  • ring_id β€” Ring Id. ID check! πŸͺͺ
  • parent β€” Pointer on struct k3_ringacc. Family-tree moment. 🌳
  • use_count β€” Use count for shared rings. Shared-ring accountability. πŸ‘―
  • proxy_id β€” RA Ring Proxy Id (only if K3_RINGACC_RING_USE_PROXY). Conditional icon. 🎯
  • dma_dev β€” device to be used for DMA API (allocation, mapping). DMA device duties. πŸ› οΈ
  • asel β€” Address Space Select value for physical addresses. Address-space selector, periodt. πŸ—ΊοΈ

🌈 SEE ALSO 🌈

Kernel file ./drivers/soc/ti/k3-ringacc.c is your reference bestie, and these are the related pages: 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_ringacc(9), struct k3_ringacc_soc_data(9). Go read them if you want the full lore. πŸ’–

That's it, bestie πŸ’– β€” this page comes from ./drivers/soc/ti, it's dated October 2026, and it's all about struct k3_ring(9). Periodt. πŸŽ€βœ¨

πŸ“¦ where this page comes from