Example #1
0
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;
}