enum host2sp_commands sh_css_read_host2sp_command(void) { unsigned int HIVE_ADDR_host_sp_com = sh_css_sp_fw.info.sp.host_sp_com; unsigned int o = offsetof(struct host_sp_communication, host2sp_command) / sizeof(int); (void)HIVE_ADDR_host_sp_com; /* Suppres warnings in CRUN */ return (enum host2sp_commands)load_sp_array_uint(host_sp_com, o); }
unsigned int sh_css_sp_get_sw_interrupt_value(unsigned int irq) { const struct sh_css_fw_info *fw = &sh_css_sp_fw; unsigned int HIVE_ADDR_sp_output = fw->info.sp.output; unsigned int o = offsetof(struct sh_css_sp_output, sw_interrupt_value) / sizeof(int); (void)HIVE_ADDR_sp_output; /* To get rid of warning in CRUN */ return load_sp_array_uint(sp_output, o+irq); }
unsigned int sh_css_sp_get_binary_copy_size(void) { const struct sh_css_fw_info *fw = &sh_css_sp_fw; unsigned int HIVE_ADDR_sp_output = fw->info.sp.output; unsigned int o = offsetof(struct sh_css_sp_output, bin_copy_bytes_copied) / sizeof(int); (void)HIVE_ADDR_sp_output; /* To get rid of warning in CRUN */ return load_sp_array_uint(sp_output, o); }
void sh_css_sp_get_debug_state(struct sh_css_sp_debug_state *state) { const struct sh_css_fw_info *fw = &sh_css_sp_fw; unsigned int HIVE_ADDR_sp_output = fw->info.sp.output; unsigned i; unsigned o = offsetof(struct sh_css_sp_output, debug)/sizeof(int); (void)HIVE_ADDR_sp_output; /* To get rid of warning in CRUN */ for (i = 0; i < sizeof(*state)/sizeof(int); i++) ((unsigned *)state)[i] = load_sp_array_uint(sp_output, i+o); }
void sh_css_write_host2sp_command(enum host2sp_commands host2sp_command) { unsigned int HIVE_ADDR_host_sp_com = sh_css_sp_fw.info.sp.host_sp_com; unsigned int o = offsetof(struct host_sp_communication, host2sp_command) / sizeof(int); (void)HIVE_ADDR_host_sp_com; /* Suppres warnings in CRUN */ /* Previous command must be handled by SP (by design) */ assert(load_sp_array_uint(host_sp_com, o) == host2sp_cmd_ready); store_sp_array_uint(host_sp_com, o, host2sp_command); }
void sh_css_update_host2sp_cont_num_raw_frames(unsigned num_frames, bool set_avail) { const struct ia_css_fw_info *fw; unsigned int HIVE_ADDR_host_sp_com; unsigned int extra_num_frames, avail_num_frames; unsigned int o, o_extra; (void)HIVE_ADDR_host_sp_com; /* Suppres warnings in CRUN */ /* Write new frame data into SP DMEM */ fw = &sh_css_sp_fw; HIVE_ADDR_host_sp_com = fw->info.sp.host_sp_com; if (set_avail) { o = offsetof(struct host_sp_communication, host2sp_cont_avail_num_raw_frames) / sizeof(int); avail_num_frames = load_sp_array_uint(host_sp_com, o); extra_num_frames = num_frames - avail_num_frames; o_extra = offsetof(struct host_sp_communication, host2sp_cont_extra_num_raw_frames) / sizeof(int); store_sp_array_uint(host_sp_com, o_extra, extra_num_frames); } else