STRUCT ACPM_CHAN(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌟 NAME 🌟

okay bestie, this is the struct acpm_chan(9) page from the Kernel API Manual, and it's all about struct acpm_chan β€” the driver internal representation of a channel. That's the whole assignment, no cap. πŸ’…βœ¨


✨ SYNOPSIS ✨

okay so the shape is literally this, and yes the spacing and semicolons are doing their thing:

       struct acpm_chan {
           struct mbox_client cl;
           struct mbox_chan *chan;
           struct acpm_info *acpm;
           struct acpm_queue tx;
           struct acpm_queue rx;
           struct mutex tx_lock;
           struct mutex rx_lock;
           unsigned int qlen;
           unsigned int mlen;
           u8 seqnum;
           u8 id;
           bool poll_completion;
           unsigned long bitmap_seqnum[BITS_TO_LONGS( ACPM_SEQNUM_MAX - 1)];
           struct acpm_rx_data rx_data[ACPM_SEQNUM_MAX];
        };

πŸ¦‹ Members πŸ¦‹

  • cl β€” mailbox client. The mailbox bestie, obviously. πŸ’Œ
  • chan β€” mailbox channel. The actual channel, slay. πŸ“¬
  • acpm β€” pointer to driver private data. It's giving "my private data, not yours" energy. πŸ™ˆ
  • tx β€” TX queue. The enqueue is done by the host. The way this queue works is a whole little system:
    • front index is written by the host.
    • rear index is written by the firmware.
  • rx β€” RX queue. The enqueue is done by the firmware. Same queue energy, opposite directions:
    • front index is written by the firmware.
    • rear index is written by the host.
  • tx_lock β€” protects TX queue. Lock it up, bestie. πŸ”’
  • rx_lock β€” protects RX queue. Another lock, another slay. πŸ”
  • qlen β€” queue length. Applies to both TX/RX queues. Both of them, periodt. πŸ“
  • mlen β€” message length. Applies to both TX/RX queues. Same energy. πŸ“
  • seqnum β€” sequence number of the last message enqueued on TX queue. Last one in, tracked. πŸ”’
  • id β€” channel ID. Gotta have an ID, obviously. πŸ†”
  • poll_completion β€” indicates if the transfer needs to be polled for completion or interrupt mode is used. So: polled completion or interrupt mode, those are the options. ⏳
  • bitmap_seqnum β€” bitmap that tracks the messages on the TX/RX queues. Tracking them messages, very organized. πŸ—‚οΈ
  • rx_data β€” internal buffer used to drain the RX queue. Draining the queue, literally. 🚰

πŸ’– SEE ALSO πŸ’–

Kernel file: ./drivers/firmware/samsung/exynos-acpm.c β€” and here's the whole friend group, bestie:

mwah πŸ’‹ β€” source/version: ./drivers/firmware/samsung; date: October 2026. stay iconic, bestie 🫢✨

πŸ“¦ where this page comes from