sdca_asoc_pd...ll_actual_ps(9)
π sdca_asoc_pde_poll_actual_ps β bestie's guide to "did the power state actually get there yet??"
okay so real talk, this is straight out of the Kernel API Manual (yes, the (9) one, we're in kernel-land now, put your seatbelt on π). The star of the show is sdca_asoc_pde_poll_actual_ps, and the way that name is giving "I have a lot of lowercase letters and I'm not sorry". Sit down, hydrate, let's go π«Ά
β¨ NAME β¨
sdca_asoc_pde_poll_actual_ps β verify that the PDE power state reached the target state. literally its whole job. no cap π
πΈ SYNOPSIS πΈ
int sdca_asoc_pde_poll_actual_ps (struct regmap *regmap , int
function_id , int entity_id , int from_ps , int to_ps , const struct
sdca_pde_delay *pde_delays , int num_delays );
like yes, that's a lot of arguments. we count them. we respect them. π
π¦ ARGUMENTS π¦
regmapβ the register map you use for reading theACTUAL_PSregister. it's literally the connection to the hardware, don't lose it πfunction_idβ the SDCA function identifier. which function we're talking to, bestie.entity_idβ the SDCA entity identifier for the power domain. this is the specific one we care about β¨from_psβ the source power state, aSDCA_PDE_PSnvalue. where we're coming from π«to_psβ the target power state, also aSDCA_PDE_PSnvalue. where we're going, main character destination energy π₯pde_delaysβ pointer to an array of PDE delay specifications for this device, orNULLto use the default polling interval. your call, both are valid πnum_delaysβ number of entries in thepde_delaysarray. gotta know how many we got π
π DESCRIPTION π
so here's the vibe: this function polls the ACTUAL_PS register to verify that a PDE power state transition has actually completed. per the SDCA specification, after writing REQUESTED_PS, the caller must poll ACTUAL_PS until it reflects the requested state. that's the rule, we don't make the rules, we just poll by them π
big important thing, highlight it in your notes: this function implements the polling logic but does NOT modify the power state. not even a little. the caller is responsible for writing REQUESTED_PS before invoking this function. so if you skip that step, that's on you, not on us π
and if a delay table is provided, the appropriate polling intervals get extracted based on the from_ps and to_ps transition β cute, right? and if no table is provided or no matching entry is found, a default polling interval is used instead. everybody's covered π§
β RETURN β
- Returns zero when
ACTUAL_PSreaches the target state. slay, we love a success π - Returns
-ETIMEDOUTif the polling times out before reaching the target state. it tried, it waited, it gave up π - Returns a negative error code if a register read fails. hardware said no π
π₯ SEE ALSO π₯
kernel file ./sound/soc/sdca/sdca_asoc.c plus the whole friend group:
sdca_asoc_count_component(9)sdca_asoc_populate_dapm(9)sdca_asoc_populate_controls(9)sdca_asoc_populate_dais(9)sdca_asoc_populate_component(9)sdca_asoc_set_constraints(9)sdca_asoc_free_constraints(9)sdca_asoc_get_port(9)sdca_asoc_hw_params(9)
go read them. iykyk π
okay that's the whole page, you ate that π
β¨ this one lives in ./sound/soc/sdca, dated October 2026, and it's the sdca_asoc_pd...ll_actual_ps(9) girlie from the Kernel API Manual β go forth and poll 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