void sh_css_hrt_send_input_frame( unsigned short *data, unsigned int width, unsigned int height, unsigned int ch_id, enum sh_css_input_format input_format, bool two_ppc) { unsigned int fmt_type, hblank_cycles, marker_cycles; enum sh_css_mipi_data_type type; height = input_formatter_reg_load(INPUT_FORMATTER0_ID, HIVE_IF_START_LINE_ADDRESS) + input_formatter_reg_load(INPUT_FORMATTER0_ID, HIVE_IF_CROPPED_HEIGHT_ADDRESS) + 1 ; hblank_cycles = HBLANK_CYCLES; marker_cycles = MARKER_CYCLES; sh_css_input_format_type(input_format, MIPI_PREDICTOR_NONE, &fmt_type); type = sh_css_hrt_s2m_determine_type(input_format); sh_css_hrt_s2m_send_frame(data, width, height, ch_id, fmt_type, hblank_cycles, marker_cycles, two_ppc, type); return; }
void input_formatter_bin_get_state( const input_formatter_ID_t ID, input_formatter_bin_state_t *state) { assert(ID < N_INPUT_FORMATTER_ID); assert(state != NULL); #ifdef HRT_CSIM /* The compiled simulator mode of the input formatter * does not support reading from the write-only reset * register. */ state->reset = 0; #else state->reset = input_formatter_reg_load(ID, HIVE_STR2MEM_SOFT_RESET_REG_ADDRESS); #endif state->input_endianness = input_formatter_reg_load(ID, HIVE_STR2MEM_INPUT_ENDIANNESS_REG_ADDRESS); state->output_endianness = input_formatter_reg_load(ID, HIVE_STR2MEM_OUTPUT_ENDIANNESS_REG_ADDRESS); state->bitswap = input_formatter_reg_load(ID, HIVE_STR2MEM_BIT_SWAPPING_REG_ADDRESS); state->block_synch = input_formatter_reg_load(ID, HIVE_STR2MEM_BLOCK_SYNC_LEVEL_REG_ADDRESS); state->packet_synch = input_formatter_reg_load(ID, HIVE_STR2MEM_PACKET_SYNC_LEVEL_REG_ADDRESS); state->readpostwrite_synch = input_formatter_reg_load(ID, HIVE_STR2MEM_READ_POST_WRITE_SYNC_ENABLE_REG_ADDRESS); state->is_2ppc = input_formatter_reg_load(ID, HIVE_STR2MEM_DUAL_BYTE_INPUTS_ENABLED_REG_ADDRESS); state->en_status_update = input_formatter_reg_load(ID, HIVE_STR2MEM_EN_STAT_UPDATE_ADDRESS); return; }
void input_formatter_bin_get_state( const input_formatter_ID_t ID, input_formatter_bin_state_t *state) { assert_exit(ID < N_INPUT_FORMATTER_ID && state); state->reset = input_formatter_reg_load(ID, HIVE_STR2MEM_SOFT_RESET_REG_ADDRESS); state->input_endianness = input_formatter_reg_load(ID, HIVE_STR2MEM_INPUT_ENDIANNESS_REG_ADDRESS); state->output_endianness = input_formatter_reg_load(ID, HIVE_STR2MEM_OUTPUT_ENDIANNESS_REG_ADDRESS); state->bitswap = input_formatter_reg_load(ID, HIVE_STR2MEM_BIT_SWAPPING_REG_ADDRESS); state->block_synch = input_formatter_reg_load(ID, HIVE_STR2MEM_BLOCK_SYNC_LEVEL_REG_ADDRESS); state->packet_synch = input_formatter_reg_load(ID, HIVE_STR2MEM_PACKET_SYNC_LEVEL_REG_ADDRESS); state->readpostwrite_synch = input_formatter_reg_load(ID, HIVE_STR2MEM_READ_POST_WRITE_SYNC_ENABLE_REG_ADDRESS); state->is_2ppc = input_formatter_reg_load(ID, HIVE_STR2MEM_DUAL_BYTE_INPUTS_ENABLED_REG_ADDRESS); state->en_status_update = input_formatter_reg_load(ID, HIVE_STR2MEM_EN_STAT_UPDATE_ADDRESS); return; }
void input_formatter_get_state( const input_formatter_ID_t ID, input_formatter_state_t *state) { assert(ID < N_INPUT_FORMATTER_ID); assert(state != NULL); /* state->reset = input_formatter_reg_load(ID, HIVE_IF_RESET_ADDRESS); */ state->start_line = input_formatter_reg_load(ID, HIVE_IF_START_LINE_ADDRESS); state->start_column = input_formatter_reg_load(ID, HIVE_IF_START_COLUMN_ADDRESS); state->cropped_height = input_formatter_reg_load(ID, HIVE_IF_CROPPED_HEIGHT_ADDRESS); state->cropped_width = input_formatter_reg_load(ID, HIVE_IF_CROPPED_WIDTH_ADDRESS); state->ver_decimation = input_formatter_reg_load(ID, HIVE_IF_VERTICAL_DECIMATION_ADDRESS); state->hor_decimation = input_formatter_reg_load(ID, HIVE_IF_HORIZONTAL_DECIMATION_ADDRESS); state->hor_deinterleaving = input_formatter_reg_load(ID, HIVE_IF_H_DEINTERLEAVING_ADDRESS); state->left_padding = input_formatter_reg_load(ID, HIVE_IF_LEFTPADDING_WIDTH_ADDRESS); state->eol_offset = input_formatter_reg_load(ID, HIVE_IF_END_OF_LINE_OFFSET_ADDRESS); state->vmem_start_address = input_formatter_reg_load(ID, HIVE_IF_VMEM_START_ADDRESS_ADDRESS); state->vmem_end_address = input_formatter_reg_load(ID, HIVE_IF_VMEM_END_ADDRESS_ADDRESS); state->vmem_increment = input_formatter_reg_load(ID, HIVE_IF_VMEM_INCREMENT_ADDRESS); state->is_yuv420 = input_formatter_reg_load(ID, HIVE_IF_YUV_420_FORMAT_ADDRESS); state->vsync_active_low = input_formatter_reg_load(ID, HIVE_IF_VSYNCK_ACTIVE_LOW_ADDRESS); state->hsync_active_low = input_formatter_reg_load(ID, HIVE_IF_HSYNCK_ACTIVE_LOW_ADDRESS); state->allow_fifo_overflow = input_formatter_reg_load(ID, HIVE_IF_ALLOW_FIFO_OVERFLOW_ADDRESS); state->block_fifo_when_no_req = input_formatter_reg_load(ID, HIVE_IF_BLOCK_FIFO_NO_REQ_ADDRESS); state->ver_deinterleaving = input_formatter_reg_load(ID, HIVE_IF_V_DEINTERLEAVING_ADDRESS); /* FSM */ state->fsm_sync_status = input_formatter_reg_load(ID, HIVE_IF_FSM_SYNC_STATUS); state->fsm_sync_counter = input_formatter_reg_load(ID, HIVE_IF_FSM_SYNC_COUNTER); state->fsm_crop_status = input_formatter_reg_load(ID, HIVE_IF_FSM_CROP_STATUS); state->fsm_crop_line_counter = input_formatter_reg_load(ID, HIVE_IF_FSM_CROP_LINE_COUNTER); state->fsm_crop_pixel_counter = input_formatter_reg_load(ID, HIVE_IF_FSM_CROP_PIXEL_COUNTER); state->fsm_deinterleaving_index = input_formatter_reg_load(ID, HIVE_IF_FSM_DEINTERLEAVING_IDX); state->fsm_dec_h_counter = input_formatter_reg_load(ID, HIVE_IF_FSM_DECIMATION_H_COUNTER); state->fsm_dec_v_counter = input_formatter_reg_load(ID, HIVE_IF_FSM_DECIMATION_V_COUNTER); state->fsm_dec_block_v_counter = input_formatter_reg_load(ID, HIVE_IF_FSM_DECIMATION_BLOCK_V_COUNTER); state->fsm_padding_status = input_formatter_reg_load(ID, HIVE_IF_FSM_PADDING_STATUS); state->fsm_padding_elem_counter = input_formatter_reg_load(ID, HIVE_IF_FSM_PADDING_ELEMENT_COUNTER); state->fsm_vector_support_error = input_formatter_reg_load(ID, HIVE_IF_FSM_VECTOR_SUPPORT_ERROR); state->fsm_vector_buffer_full = input_formatter_reg_load(ID, HIVE_IF_FSM_VECTOR_SUPPORT_BUFF_FULL); state->vector_support = input_formatter_reg_load(ID, HIVE_IF_FSM_VECTOR_SUPPORT); state->sensor_data_lost = input_formatter_reg_load(ID, HIVE_IF_FIFO_SENSOR_STATUS); return; }