STRUCT RAVE_SP(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ NAME ✨

struct rave_sp β€” the RAVE supervisory processor core, aka the main character of the RAVE show πŸ’…

So bestie, real talk: this page lives in the Kernel API Manual, section 9. It's the whole scoop on struct rave_sp(9), and honestly? It's giving "small struct, huge responsibilities." Let's get into it 🫢


🌸 SYNOPSIS 🌸

struct rave_sp {
    struct serdev_device *serdev;
    struct rave_sp_deframer deframer;
    atomic_t ackid;
    struct mutex bus_lock;
    struct mutex reply_lock;
    struct rave_sp_reply *reply;
    const struct rave_sp_variant *variant;
    struct blocking_notifier_head event_notifier_list;
    const char *part_number_firmware;
    const char *part_number_bootloader;
 };

Look at her. Ten members, zero notes. Iconic behavior, no cap ✨


πŸŽ€ Members πŸŽ€

Okay so every single field, explained, and yes we're doing all of them because nobody gets left on read πŸ’–

  • serdev β€” pointer to the underlying serdev. That's the transport layer bestie, the thing underneath doing the actual talking πŸ”Œ
  • deframer β€” the stored state of the protocol deframer. Basically it remembers where it was mid-message so the protocol doesn't lose the plot 😭
  • ackid β€” the ACK ID used in the last reply sent to the device. Last-known ack energy, fr fr πŸŽ€
  • bus_lock β€” lock to serialize access to the device. One at a time, people, we are not doing chaos on the bus 🚧
  • reply_lock β€” lock protecting reply. Yes, the reply field has its own bodyguard. Boundaries. πŸ’…
  • reply β€” pointer to memory to store the reply payload. It's where the answer goes when it comes back 🌸
  • variant β€” device variant specific information. Because not every device is built the same, and that's beautiful 🌈
  • event_notifier_list β€” the input event notification chain. This is the group chat where input events get announced πŸ“£
  • part_number_firmware β€” firmware version. The firmware's little name tag 🏷️
  • part_number_bootloader β€” bootloader version. Same deal, but for the bootloader era of the device's life πŸ¦‹

πŸ”₯ SEE ALSO πŸ”₯

The kernel file ./drivers/mfd/rave-sp.c β€” go read it, it's lowkey the whole vibe πŸ‘‘

And the whole friend group:

  • enum rave_sp_deframer_state(9)
  • struct rave_sp_deframer(9)
  • struct rave_sp_reply(9)
  • struct rave_sp_checksum(9)
  • struct rave_sp_variant_cmds(9)
  • struct rave_sp_variant(9)

That's the whole crew, go say hi 🫢


word of warning bestie: this page gives you the struct layout and what each member is for β€” it doesn't hand you lock ordering rules, refcounting rules, or lifetime guidance, so don't go inventing guarantees, mkay? πŸ™ˆ

πŸ’– that's the whole page, periodt πŸ’–

Brought to you by the good people at ./drivers/mfd, stamped October 2026, and filed under struct rave_sp(9) β€” go forth and deframe responsibly, bestie πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from