STRUCT SCMI_DESC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay so bestie, this is the struct scmi_desc(9) page from the Kernel API Manual ✨ β€” it's the description of SoC integration, and it's lowkey the blueprint for how a transport gets set up, no cap πŸ’….

✨ NAME ✨

struct scmi_desc - Description of SoC integration. That's the whole vibe: it's the struct that describes the SoC integration for SCMI 🫢.

🌸 SYNOPSIS 🌸

struct scmi_desc {
    const struct scmi_transport_ops *ops;
    int max_rx_timeout_ms;
    int max_msg;
    int max_msg_size;
    unsigned int atomic_threshold;
    bool no_completion_irq;
    const bool force_polling;
    const bool sync_cmds_completed_on_ret;
    const bool atomic_enabled;
};

πŸŽ€ Members πŸŽ€

  • ops β€” pointer to the transport-specific ops structure. It's giving "here's how this transport does its thing" πŸ’–.
  • max_rx_timeout_ms β€” timeout for communication with SoC (in Milliseconds). Yes, milliseconds, so don't get it twisted ⏱️.
  • max_msg β€” maximum number of messages for a channel type (tx or rx) that can be pending simultaneously in the system. May be overridden by the get_max_msg op, iykyk 😌.
  • max_msg_size β€” maximum size of data payload per message that can be handled 🎁.
  • atomic_threshold β€” optional system wide DT-configured threshold, expressed in microseconds, for atomic operations. Only SCMI synchronous commands reported by the platform to have an execution latency lesser-equal to the threshold should be considered for atomic mode operation: such decision is finally left up to the SCMI drivers. Literally the platform says "this one's fast enough," and the SCMI drivers make the final call πŸ’….
  • no_completion_irq β€” flag to indicate that this transport has no completion interrupt and has to be polled. This is similar to the force_polling below, except this is set via DT property. So: no irq, just polling πŸŒ€.
  • force_polling β€” flag to force this whole transport to use SCMI core polling mechanism instead of completion interrupts even if available. Periodt, polling over interrupts πŸ”₯.
  • sync_cmds_completed_on_ret β€” flag to indicate that the transport assures synchronous-command messages are atomically completed on .send_message: no need to poll actively waiting for a response. Used by core internally only when polling is selected as a waiting for reply method: i.e. if a completion irq was found use that anyway. The way that .send_message just finishes the sync command atomically is iconic πŸŽ€.
  • atomic_enabled β€” flag to indicate that this transport, which is assured not to sleep anywhere on the TX path, can be used in atomic mode when requested. No sleeping on the TX path, bestie β€” atomic mode gets the green light when asked ⚑.

🌈 SEE ALSO 🌈


mwah πŸ’‹ β€” this page's source/version is ./drivers/firmware/arm_scmi, dated October 2026, and the footer tag is struct scmi_desc(9). slay and read your kernel docs πŸ¦‹.

πŸ“¦ where this page comes from