STRUCT CPPI5_TR_TYPE15_T(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct cppi5_tr_type15_t(9) β€” Kernel API Manual vibes

okay bestie, pull up a chair, because this is the struct cppi5_tr_type15_t(9) page from the Kernel API Manual and honestly? she's a big one. Type 15 β€” aka Four Dimensional Block Copy with Repacking and Indirection Support β€” and she's a 64 byte TR. yes, sixty-four. no cap. πŸŽ€


✨ NAME ✨

struct cppi5_tr_type15_t β€” the Type 15 (Four Dimensional Block Copy with Repacking and Indirection Support) TR, and she is 64 byte. iconic behavior honestly πŸ’…


🌸 SYNOPSIS 🌸

like, here's the whole struct, exactly as she is, no edits, we don't do that here:

struct cppi5_tr_type15_t {
    cppi5_tr_flags_t flags;
    u16 icnt0;
    u16 icnt1;
    u64 addr;
    s32 dim1;
    u16 icnt2;
    u16 icnt3;
    s32 dim2;
    s32 dim3;
    u32 _reserved;
    s32 ddim1;
    u64 daddr;
    s32 ddim2;
    s32 ddim3;
    u16 dicnt0;
    u16 dicnt1;
    u16 dicnt2;
    u16 dicnt3;
 };

πŸ¦‹ Members πŸ¦‹

okay so member by member, because every single one matters and we are NOT skipping any:

πŸ’– the source side

  • flags β€” the TR flags, bestie: type, triggers, event, configuration. she's giving main character energy at the top of the struct ✨
  • icnt0 β€” total loop iteration count for level 0 (innermost) for source
  • icnt1 β€” total loop iteration count for level 1 for source
  • addr β€” starting address for the source data
  • dim1 β€” signed dimension for loop level 1 for source
  • icnt2 β€” total loop iteration count for level 2 for source
  • icnt3 β€” total loop iteration count for level 3 (outermost) for source
  • dim2 β€” signed dimension for loop level 2 for source
  • dim3 β€” signed dimension for loop level 3 for source

🧚 the little gap

  • _reserved β€” not used. that's it. that's the whole vibe. she's just sitting there 🫢

πŸ’œ the destination side (yes, she has a whole second personality)

  • ddim1 β€” signed dimension for loop level 1 for destination
  • daddr β€” starting address for the destination data
  • ddim2 β€” signed dimension for loop level 2 for destination
  • ddim3 β€” signed dimension for loop level 3 for destination
  • dicnt0 β€” total loop iteration count for level 0 (innermost) for destination
  • dicnt1 β€” total loop iteration count for level 1 for destination
  • dicnt2 β€” total loop iteration count for level 2 for destination
  • dicnt3 β€” total loop iteration count for level 3 (outermost) for destination
ngl the pattern here is lowkey everything comes in a source flavor and a destination flavor. source lives with i/dim/addr, destination has the extra d prefix β€” ddim, daddr, dicnt. once you clock that, the whole struct eats. πŸ”₯

πŸ’€ SEE ALSO πŸ’€

the full squad, all of them, because leaving one out would be so rude:

Kernel file ./include/linux/dma/ti-cppi5.h


and that's the page, bestie! 🌈 shoutout to the source, ./include/linux/dma, dated October 2026, and we're closing out on struct cppi5_tr_type15_t(9) β€” go be a 64-byte icon, ily πŸŽ€πŸ’–βœ¨

πŸ“¦ where this page comes from