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