ssam_irq_arm_for_wakeup(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ ssam_irq_arm_for_wakeup ✨

Okay so bestie, if you're here you probably landed on this from ssam_irq_disarm_wakeup(9) and now you want the other half of the story. No worries, I got you. This is from the Kernel API Manual, section 9, and it's lowkey iconic πŸ’…


πŸŽ€ NAME πŸŽ€

ssam_irq_arm_for_wakeup β€” arm the EC IRQ for wakeup, if enabled. That "if enabled" is doing a lot of work there, keep an eye on it πŸ‘€


πŸ¦‹ SYNOPSIS πŸ¦‹

int ssam_irq_arm_for_wakeup (struct ssam_controller *ctrl );

🌸 ARGUMENTS 🌸

  • ctrl β€” the controller for which the IRQ should be armed. Like, the specific one. Not any random controller, this one 🫢

πŸ’– DESCRIPTION πŸ’–

So what does it actually do? It sets up the IRQ so it can be used to wake the device. Specifically β€” and I love how specific this is β€” it enables the irq, and then, if the device is allowed to wake up the system, it calls enable_irq_wake. That's the whole flow, no cap ✨

And if you're ever like "okay bestie but how do I undo this", that's literally what ssam_irq_disarm_wakeup is for. Corresponding function, matching energy, they're a set πŸŽ€

This function is intended to arm the IRQ before entering S2idle suspend. That's the vibe check for when you're supposed to call it.


πŸ’€ NOTE πŸ’€

calls to ssam_irq_arm_for_wakeup and ssam_irq_disarm_wakeup must be balanced.

Fr fr. If you arm it and don't disarm it, that's not slay, that's a leak of responsibility. Balanced calls, always πŸ™ˆ


πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./drivers/platform/surface/aggregator/controller.c β€” go read the source bestie, it's all in there.

Then the whole friend group, in the order they were listed:

Like I said, whole friend group. Moots, even 🌈


That's the whole page bestie, go arm that IRQ responsibly πŸ’œ

Source situation: this page lives in ./drivers/platform/surface/agg... (yes, that's the abbreviated form, don't come for me) and it's dated October 2026, all for ssam_irq_arm_for_wakeup(9). Periodt. πŸŽ€

πŸ“¦ where this page comes from