1 /*
2  * Copyright 2025 NXP
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include "dsp.h"
8 
9 #include <string.h>
10 #include <stdint.h>
11 #include <zephyr/kernel.h>
12 #include <zephyr/device.h>
13 #include <zephyr/devicetree.h>
14 
15 #include <zephyr/drivers/misc/nxp_rtxxx_dsp_ctrl/nxp_rtxxx_dsp_ctrl.h>
16 
17 static const struct device *dsp = DEVICE_DT_GET(DT_NODELABEL(dsp));
18 
19 /* DSP binary image symbols - exported by dspimgs.S */
20 extern uint32_t dsp_img_reset_start[];
21 extern uint32_t dsp_img_reset_size;
22 
23 extern uint32_t dsp_img_text_start[];
24 extern uint32_t dsp_img_text_size;
25 
26 extern uint32_t dsp_img_data_start[];
27 extern uint32_t dsp_img_data_size;
28 
dsp_start(void)29 void dsp_start(void)
30 {
31 	if (!device_is_ready(dsp)) {
32 		return;
33 	}
34 
35 	nxp_rtxxx_dsp_ctrl_load_section(dsp,
36 		dsp_img_reset_start, dsp_img_reset_size, NXP_RTXXX_DSP_CTRL_SECTION_RESET);
37 	nxp_rtxxx_dsp_ctrl_load_section(dsp,
38 		dsp_img_text_start, dsp_img_text_size, NXP_RTXXX_DSP_CTRL_SECTION_TEXT);
39 	nxp_rtxxx_dsp_ctrl_load_section(dsp,
40 		dsp_img_data_start, dsp_img_data_size, NXP_RTXXX_DSP_CTRL_SECTION_DATA);
41 
42 	nxp_rtxxx_dsp_ctrl_enable(dsp);
43 }
44