1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Support for Intel Camera Imaging ISP subsystem.
4  * Copyright (c) 2010 - 2015, Intel Corporation.
5  */
6 
7 #ifndef __IA_CSS_SPCTRL_H__
8 #define __IA_CSS_SPCTRL_H__
9 
10 #include <system_global.h>
11 #include <ia_css_err.h>
12 #include "ia_css_spctrl_comm.h"
13 
14 typedef struct {
15 	u32        ddr_data_offset;       /**  posistion of data in DDR */
16 	u32        dmem_data_addr;        /** data segment address in dmem */
17 	u32        dmem_bss_addr;         /** bss segment address in dmem  */
18 	u32        data_size;             /** data segment size            */
19 	u32        bss_size;              /** bss segment size             */
20 	u32        spctrl_config_dmem_addr; /* <location of dmem_cfg  in SP dmem */
21 	u32        spctrl_state_dmem_addr;  /* < location of state  in SP dmem */
22 	unsigned int    sp_entry;                /* < entry function ptr on SP */
23 	const void      *code;                   /** location of firmware */
24 	u32         code_size;
25 	char      *program_name;    /** not used on hardware, only for simulation */
26 } ia_css_spctrl_cfg;
27 
28 /* Get the code addr in DDR of SP */
29 ia_css_ptr get_sp_code_addr(sp_ID_t  sp_id);
30 
31 /* ! Load firmware on to specfied SP
32 */
33 int ia_css_spctrl_load_fw(sp_ID_t sp_id,
34 				      ia_css_spctrl_cfg *spctrl_cfg);
35 
36 /* ISP2401 */
37 /*! Setup registers for reloading FW */
38 void sh_css_spctrl_reload_fw(sp_ID_t sp_id);
39 
40 /*!  Unload/release any memory allocated to hold the firmware
41 */
42 int ia_css_spctrl_unload_fw(sp_ID_t sp_id);
43 
44 /*! Intilaize dmem_cfg in SP dmem  and  start SP program
45 */
46 int ia_css_spctrl_start(sp_ID_t sp_id);
47 
48 /*! stop spctrl
49 */
50 int ia_css_spctrl_stop(sp_ID_t sp_id);
51 
52 /*! Query the state of SP
53 */
54 ia_css_spctrl_sp_sw_state ia_css_spctrl_get_state(sp_ID_t sp_id);
55 
56 /*! Check if SP is idle/ready
57 */
58 int ia_css_spctrl_is_idle(sp_ID_t sp_id);
59 
60 #endif /* __IA_CSS_SPCTRL_H__ */
61