cs_dsp_power_up(9)
π cs_dsp_power_up(9) β like, the Kernel API Manual, but make it make sense
okay so bestie, we're in the Kernel API Manual today and the main character is cs_dsp_power_up β yes it's a 9, yes that means kernel API, no you don't have to be scared. sit down, hydrate, let's go π«Ά
β¨ NAME β¨
cs_dsp_power_up β downloads firmware to the DSP πΎβ¨
π SYNOPSIS π
int cs_dsp_power_up (struct cs_dsp *dsp , const struct firmware
*wmfw_firmware , const char *wmfw_filename , const struct firmware
*coeff_firmware , const char *coeff_filename , const char *fw_name );
like, six arguments. she's high maintenance but she delivers π₯
πΈ ARGUMENTS πΈ
dspβ pointer to the DSP structure. your main character pointer, the whole vibe lives in here πwmfw_firmwareβ the firmware to be sent π¦wmfw_filenameβ file name of firmware to be sent. yes, the name, it's a whole separate thing, don't @ mecoeff_firmwareβ the coefficient data to be sent πcoeff_filenameβ file name of coefficient to data be sent. that's the original phrasing, I'm not touching it, it's iconic in its own chaotic way πfw_nameβ the user-friendly firmware name. the cute little display name, the nickname, the pet name π
π¦ DESCRIPTION π¦
okay so this function is for ADSP2 and Halo DSP cores, periodt. what it does: it powers up the DSP core and downloads the firmware β but it does not start the firmware running. that's the whole thing. it's giving "getting ready, not going out" energy π
the cs_dsp booted flag will be set once this is completed β
and if the core has a low-power memory retention mode, it gets put into that state after the firmware is downloaded π΄β¨ so like, booted, fed, and then napping. relatable.
ngl, do not assume the firmware is running after this call. it is downloaded, not started. that is literally the entire point of the function.
π RETURN π
Zero for success π, a negative number on error π fr fr.
β SEE ALSO β
Kernel file ./drivers/firmware/cirrus/cs_dsp.c β go read the source, iykyk π
and the whole friend group, all of them, no one left out:
cs_dsp_mem_region_name(9)cs_dsp_init_debugfs(9)cs_dsp_cleanup_debugfs(9)cs_dsp_coeff_write_acked_control(9)cs_dsp_coeff_write_ctrl(9)cs_dsp_coeff_lock_and_write_ctrl(9)cs_dsp_coeff_read_ctrl(9)cs_dsp_coeff_lock_and_read_ctrl(9)cs_dsp_hibernate(9)cs_dsp_get_ctl(9)cs_dsp_find_alg_region(9)cs_dsp_adsp1_init(9)cs_dsp_adsp1_power_up(9)cs_dsp_adsp1_power_down(9)cs_dsp_set_dspclk(9)cs_dsp_power_down(9)cs_dsp_run(9)cs_dsp_stop(9)cs_dsp_adsp2_init(9)cs_dsp_halo_init(9)cs_dsp_remove(9)cs_dsp_read_raw_data_block(9)cs_dsp_read_data_word(9)cs_dsp_write_data_word(9)cs_dsp_remove_padding(9)cs_dsp_adsp2_bus_error(9)cs_dsp_halo_bus_error(9)cs_dsp_halo_wdt_expire(9)cs_dsp_chunk_write(9)cs_dsp_chunk_flush(9)cs_dsp_chunk_read(9)cs_dsp_wseq_init(9)cs_dsp_wseq_write(9)cs_dsp_wseq_multi_write(9)
and that's the page, bestie π§π this little masterpiece lives in ./drivers/firmware/cirrus and it's dated October 2026 β yes, the future, she's ahead of her time β°β¨ mwah, go power up some DSPs responsibly π
π¦ 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