ssam_irq_arm_for_wakeup(9)
β¨ 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 tossam_irq_arm_for_wakeupandssam_irq_disarm_wakeupmust 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:
ssh_seq_reset(9)ssh_seq_next(9)ssh_rqid_reset(9)ssh_rqid_next(9)ssam_event_matches_notifier(9)ssam_nfblk_call_chain(9)ssam_nfblk_insert(9)ssam_nfblk_find(9)ssam_nfblk_remove(9)ssam_nf_head_init(9)ssam_nf_head_destroy(9)struct ssam_nf_refcount_key(9)struct ssam_nf_refcount_entry(9)ssam_nf_refcount_inc(9)ssam_nf_refcount_dec(9)ssam_nf_refcount_dec_free(9)ssam_nf_refcount_empty(9)ssam_nf_call(9)ssam_nf_init(9)ssam_nf_destroy(9)ssam_event_item_cache_init(9)ssam_event_item_cache_destroy(9)ssam_event_item_free(9)ssam_event_item_alloc(9)ssam_event_queue_push(9)ssam_event_queue_pop(9)ssam_event_queue_is_empty(9)ssam_cplt_get_event_queue(9)ssam_cplt_submit(9)ssam_cplt_submit_event(9)ssam_cplt_flush(9)ssam_event_queue_init(9)ssam_cplt_init(9)ssam_cplt_destroy(9)ssam_controller_device(9)ssam_controller_get(9)ssam_controller_put(9)ssam_controller_statelock(9)ssam_controller_stateunlock(9)ssam_controller_lock(9)ssam_controller_caps_load_from_acpi(9)ssam_controller_caps_load_from_of(9)ssam_controller_caps_load(9)ssam_controller_init(9)ssam_controller_start(9)ssam_controller_shutdown(9)ssam_controller_destroy(9)ssam_controller_suspend(9)ssam_controller_resume(9)ssam_request_write_data(9)ssam_request_sync_alloc(9)ssam_request_sync_free(9)ssam_request_sync_init(9)ssam_request_sync_submit(9)ssam_request_do_sync(9)ssam_request_do_sync_with_buffer(9)struct ssh_notification_params(9)ssam_ssh_event_enable(9)ssam_ssh_event_disable(9)ssam_get_firmware_version(9)ssam_ctrl_notif_display_off(9)ssam_ctrl_notif_display_on(9)ssam_ctrl_notif_d0_exit(9)ssam_ctrl_notif_d0_entry(9)ssam_nf_refcount_enable(9)ssam_nf_refcount_disable_free(9)ssam_notifier_register(9)__ssam_notifier_unregister(9)ssam_controller_event_enable(9)ssam_controller_event_disable(9)ssam_notifier_disable_registered(9)ssam_notifier_restore_registered(9)ssam_notifier_is_empty(9)ssam_notifier_unregister_all(9)ssam_irq_setup(9)ssam_irq_free(9)ssam_irq_disarm_wakeup(9)
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
- 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