STRUCT SH_DMAE_PDATA(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

โœจ struct sh_dmae_pdata(9) โœจ

okay bestie, welcome to the Kernel API Manual entry for struct sh_dmae_pdata โ€” literally the DMAC platform data struct and she is carrying a lot of fields ๐Ÿ’…


๐ŸŒธ NAME ๐ŸŒธ

struct sh_dmae_pdata โ€” DMAC platform data ๐ŸŽ€


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

struct sh_dmae_pdata {
    const struct sh_dmae_slave_config *slave;
    int slave_num;
    const struct sh_dmae_channel *channel;
    int channel_num;
    unsigned int ts_low_shift;
    unsigned int ts_low_mask;
    unsigned int ts_high_shift;
    unsigned int ts_high_mask;
    const unsigned int *ts_shift;
    int ts_shift_num;
    u16 dmaor_init;
    unsigned int chcr_offset;
    u32 chcr_ie_bit;
    unsigned int dmaor_is_32bit:1;
    unsigned int needs_tend_set:1;
    unsigned int no_dmars:1;
    unsigned int chclr_present:1;
    unsigned int chclr_bitwise:1;
    unsigned int slave_only:1;
};

look at her. all those bitfields at the bottom? that's main character energy fr fr ๐Ÿ‘‘


๐Ÿ’– Members ๐Ÿ’–

time for the vibe check on every single one of these, no skipping, we're doing the whole roster ๐Ÿซถ

  • slave โ€” array of slaves โœจ
  • slave_num โ€” how many slaves are in that array up there (slave), that's the count ๐Ÿ’ซ
  • channel โ€” array of DMA channels ๐ŸŒˆ
  • channel_num โ€” the number of channels chillin' in the channel array โญ
  • ts_low_shift โ€” the shift of the low part of the TS field ๐ŸŽ€
  • ts_low_mask โ€” low TS field mask ๐ŸŒธ
  • ts_high_shift โ€” an additional shift of the high part of the TS field (yes, "additional", it said what it said) ๐Ÿ’…
  • ts_high_mask โ€” high TS field mask ๐Ÿฆ‹
  • ts_shift โ€” array of Transfer Size shifts, indexed by TS value ๐Ÿ“š
  • ts_shift_num โ€” the number of shifts in the ts_shift array above ๐Ÿ‘†
  • dmaor_init โ€” DMAOR initialisation value ๐Ÿ”ฅ
  • chcr_offset โ€” CHCR address offset ๐ŸŽฏ
  • chcr_ie_bit โ€” CHCR Interrupt Enable bit โšก
  • dmaor_is_32bit โ€” tells you DMAOR is a 32-bit register ๐Ÿงฎ
  • needs_tend_set โ€” the TEND register has to be set, like it's mandatory, no cap ๐Ÿ˜ค
  • no_dmars โ€” DMAC has no DMARS registers ๐Ÿšซ
  • chclr_present โ€” DMAC has one or several CHCLR registers ๐Ÿ‘€
  • chclr_bitwise โ€” the channel CHCLR registers are bitwise ๐Ÿ”ข
  • slave_only โ€” DMAC cannot be used for MEMCPY, that's the rule bestie ๐Ÿ’€

๐Ÿ‘‘ SEE ALSO ๐Ÿ‘‘

  • Kernel file ./include/linux/sh_dma.h
  • struct sh_dmae_channel(9)

and that's the whole page! shipped straight outta ./include/linux, dated October 2026, from your girl the Kernel API Manual โ€” slay, go read sh_dma.h next, ily ๐Ÿซถ๐Ÿ’œ๐Ÿงš

๐Ÿ“ฆ where this page comes from