STRUCT RAVE_SP(9)
β¨ 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 protectingreply. 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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms