ssam_ctrl_notif_d0_entry(9)
โจ ssam_ctrl_notif_d0_entry โจ
okay so bestie, welcome to the Kernel API Manual ๐ โ this one's a lil deep-cut from the Surface aggregator world, and yes it's a (9) page, so grab a strawberry drink and let's go ๐
๐ธ NAME ๐ธ
ssam_ctrl_notif_d0_entry โ the function that's literally just telling the EC "hey girl, we're back, we're in D0 now" ๐
๐ฆ SYNOPSIS ๐ฆ
int ssam_ctrl_notif_d0_entry (struct ssam_controller *ctrl );
๐ ARGUMENTS ๐
ctrlโ the controller. the one and only. your main character controller ๐
๐ฅ DESCRIPTION ๐ฅ
so what this does is it notifies the EC that the driver has exited a lower-power state and has entered the D0 power state. like a "we're so back" text to the embedded controller ๐ซถ
and okay, being so fr fr right now: the exact effects of this function related to the EC are currently unknown. nobody's out here documenting the vibe. it's giving mystery. ๐ฎ
the way this works is โ this function will only send the D0-entry notification command if D0-state notifications are supported by the EC. so if the EC isn't about that life, nothing gets sent. and heads up: only newer Surface generations support these notifications ๐ older ones are just not in the group chat.
for more details, go see ssam_ctrl_notif_d0_exit โ that's the sister function, iykyk ๐
โญ RETURN โญ
here's the vibe check on what you get back:
- returns zero on success โ or also if no request has been executed at all (nothing to do, no notes)
- the status of the executed SAM request if that request failed ๐ญ
- or
-EPROTOif an unexpected response has been received ๐
๐ง SEE ALSO ๐ง
the kernel file in question, iconic:
./drivers/platform/surface/aggregator/controller.c
and the whole extended fam, no cap, every single one:
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_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_arm_for_wakeup(9),ssam_irq_disarm_wakeup(9)
ok and before you close the tab โ small note on how this doc came to be: it's sourced from ./drivers/platform/surface/agg..., from October 2026. mark it in your calendar bestie ๐
โจ
slay, go notify that EC. you ate ๐ ๐๐ธ
๐ฆ 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