ssam_irq_setup(9)
π NAME π
okay so this page is ssam_irq_setup, and it comes to you straight from the Kernel API Manual. bestie, it sets up the SAM EC wakeup-GPIO interrupt. that's the whole name, no cap. β¨
β‘ SYNOPSIS β‘
int ssam_irq_setup (struct ssam_controller *ctrl );
π ARGUMENTS π
ctrlβ the controller for which the IRQ should be set up. that's the one, bestie. π«Ά
π¦ DESCRIPTION π¦
okay so picture this: ssam_irq_setup sets up an IRQ for the wakeup-GPIO pin of the SAM EC. this IRQ can be used to wake the device from a low power state. it's giving βsleepy device, but make it wake-up-able.β π€β‘οΈπ
big caveat though, bestie: this IRQ can only be triggered while the EC is in the display-off state. and in this state, events are not sent to the host in the usual way. instead, the wakeup-GPIO gets pulled to "high" as long as there are pending events, and those events need to be released one-by-one via the GPIO callback request β either until there are no events left and the GPIO is reset, or all at once by transitioning the EC out of the display-off state, which will also clear the GPIO. π«Άβ¨
not all events should trigger a full system wakeup, though. instead, the driver should β if necessary β inspect and forward each event to the corresponding subsystem, which in turn should decide if the system needs to be woken up. this logic has not been implemented yet, so wakeup by this IRQ should be disabled by default to avoid spurious wake-ups, caused, for example, by the remaining battery percentage changing. refer to comments in this function and comments in the corresponding IRQ handler for more details on how this should be implemented. ππ
also: see also ssam_ctrl_notif_display_off and ssam_ctrl_notif_display_off for functions to transition the EC into and out of the display-off state as well as more details on it. yes, the page really lists that same one twice β i'm just keeping the facts, no cap. π«
the IRQ is disabled by default and has to be enabled before it can wake up the device from suspend via ssam_irq_arm_for_wakeup. on teardown, the IRQ should be freed via ssam_irq_free. π§Ήπ
π SEE ALSO π
psst β kernel file incoming, plus the whole extended friend group of references. every single one is here, bestie. π
Kernel file: ./drivers/platform/surface/aggregator/controller.c
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_free(9)ssam_irq_arm_for_wakeup(9)ssam_irq_disarm_wakeup(9)
kiss kiss π, this lil rewrite is signed off from the source/version line ./drivers/platform/surface/agg... and the date October 2026, with the page name ssam_irq_setup(9) still living its best life. π«Άπ
π¦ 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