Commit c5ea3e43 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

media: atomisp: fix some bad indents



As smatch reports, there are several bad indents:

    drivers/staging/media/atomisp/pci/hmm/hmm.c:271 hmm_alloc() warn: inconsistent indenting
    drivers/staging/media/atomisp/pci/runtime/bufq/src/bufq.c:390 ia_css_bufq_enqueue_psys_event() warn: inconsistent indenting
    drivers/staging/media/atomisp/pci/runtime/debug/src/ia_css_debug.c:2132 ia_css_debug_dump_isys_state() warn: inconsistent indenting
    drivers/staging/media/atomisp/pci/runtime/binary/src/binary.c:246 sh_css_binary_get_sc_requirements() warn: inconsistent indenting
    drivers/staging/media/atomisp/pci/runtime/binary/src/binary.c:565 ia_css_binary_get_shading_info_type_1() warn: inconsistent indenting
    drivers/staging/media/atomisp/pci/sh_css.c:5109 sh_css_pipes_stop() warn: inconsistent indenting
    drivers/staging/media/atomisp/pci/sh_css.c:8791 ia_css_pipe_create() warn: inconsistent indenting

Some of them are due to ifdefs. Get rid of them by either getting
a common code that would work for both ISP2400 and ISP2401 or
by creating separate functions, one for each ISP version.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 5ad658c0
Loading
Loading
Loading
Loading
+427 −434
Original line number Diff line number Diff line
@@ -135,52 +135,30 @@ struct sh_css_binary_sc_requirements {
								at shading correction. */
};

/* Get the requirements for the shading correction. */
/* ISP2400: Get the requirements for the shading correction. */
static int
#ifndef ISP2401
ia_css_binary_compute_shading_table_bayer_origin(
    const struct ia_css_binary *binary,				/* [in] */
    unsigned int required_bds_factor,				/* [in] */
    const struct ia_css_stream_config *stream_config,		/* [in] */
    struct sh_css_shading_table_bayer_origin_compute_results *res)	/* [out] */
#else
sh_css_binary_get_sc_requirements(
    const struct ia_css_binary *binary,			/* [in] */
    unsigned int required_bds_factor,			/* [in] */
    const struct ia_css_stream_config *stream_config,	/* [in] */
    struct sh_css_binary_sc_requirements *scr)		/* [out] */
#endif
{
	int err;

#ifndef ISP2401
	/* Numerator and denominator of the fixed bayer downscaling factor.
	(numerator >= denominator) */
#else
	/* Numerator and denominator of the fixed bayer downscaling factor. (numerator >= denominator) */
#endif
	unsigned int bds_num, bds_den;

#ifndef ISP2401
	/* Horizontal/Vertical ratio of bayer scaling
	between input area and output area. */
	unsigned int bs_hor_ratio_in;
	unsigned int bs_hor_ratio_out;
	unsigned int bs_ver_ratio_in;
	unsigned int bs_ver_ratio_out;
#else
	/* Horizontal/Vertical ratio of bayer scaling between input area and output area. */
	unsigned int bs_hor_ratio_in, bs_hor_ratio_out, bs_ver_ratio_in, bs_ver_ratio_out;
#endif

	/* Left padding set by InputFormatter. */
#ifndef ISP2401
	unsigned int left_padding_bqs;			/* in bqs */
#else
	unsigned int left_padding_bqs;
#endif

#ifndef ISP2401
	/* Flag for the NEED_BDS_FACTOR_2_00 macro defined in isp kernels. */
	unsigned int need_bds_factor_2_00;

@@ -201,7 +179,106 @@ sh_css_binary_get_sc_requirements(
	err = sh_css_bds_factor_get_numerator_denominator
	(required_bds_factor, &bds_num, &bds_den);
	if (err)
#else
		return err;

	/* Set the horizontal/vertical ratio of bayer scaling
	between input area and output area. */
	bs_hor_ratio_in  = bds_num;
	bs_hor_ratio_out = bds_den;
	bs_ver_ratio_in  = bds_num;
	bs_ver_ratio_out = bds_den;

	/* Set the left padding set by InputFormatter. (ifmtr.c) */
	if (stream_config->left_padding == -1)
		left_padding_bqs = _ISP_BQS(binary->left_padding);
	else
		left_padding_bqs = (unsigned int)((int)ISP_VEC_NELEMS
				   - _ISP_BQS(stream_config->left_padding));

	/* Set the left padding adjusted inside the isp.
	When bds_factor 2.00 is needed, some padding is added to left_padding
	inside the isp, before bayer downscaling. (raw.isp.c)
	(Hopefully, left_crop/left_padding/top_crop should be defined in css
	appropriately, depending on bds_factor.)
	*/
	need_bds_factor_2_00 = ((binary->info->sp.bds.supported_bds_factors &
				(PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_2_00) |
				 PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_2_50) |
				 PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_3_00) |
				 PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_4_00) |
				 PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_4_50) |
				 PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_5_00) |
				 PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_6_00) |
				 PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_8_00))) != 0);

	if (need_bds_factor_2_00 && binary->info->sp.pipeline.left_cropping > 0)
		left_padding_adjusted_bqs = left_padding_bqs + ISP_VEC_NELEMS;
	else
		left_padding_adjusted_bqs = left_padding_bqs;

	/* Currently, the bad pixel caused by filters before bayer scaling
	is NOT considered, because the bad pixel is subtle.
	When some large filter is used in the future,
	we need to consider the bad pixel.

	Currently, when bds_factor isn't 1.00, 3x3 anti-alias filter is applied
	to each color plane(Gr/R/B/Gb) before bayer downscaling.
	This filter moves each color plane to right/bottom directions
	by 1 pixel at the most, depending on downscaling factor.
	*/
	bad_bqs_on_left_before_bs = 0;
	bad_bqs_on_top_before_bs = 0;

	/* Currently, the bad pixel caused by filters after bayer scaling
	is NOT considered, because the bad pixel is subtle.
	When some large filter is used in the future,
	we need to consider the bad pixel.

	Currently, when DPC&BNR is processed between bayer scaling and
	shading correction, DPC&BNR moves each color plane to
	right/bottom directions by 1 pixel.
	*/
	bad_bqs_on_left_after_bs = 0;
	bad_bqs_on_top_after_bs = 0;

	/* Calculate the origin of bayer (real sensor data area)
	located on the shading table during the shading correction. */
	res->sc_bayer_origin_x_bqs_on_shading_table =
		((left_padding_adjusted_bqs + bad_bqs_on_left_before_bs)
		* bs_hor_ratio_out + bs_hor_ratio_in / 2) / bs_hor_ratio_in
		+ bad_bqs_on_left_after_bs;
	/* "+ bs_hor_ratio_in/2": rounding for division by bs_hor_ratio_in */
	res->sc_bayer_origin_y_bqs_on_shading_table =
		(bad_bqs_on_top_before_bs * bs_ver_ratio_out + bs_ver_ratio_in / 2) / bs_ver_ratio_in
		+ bad_bqs_on_top_after_bs;
	/* "+ bs_ver_ratio_in/2": rounding for division by bs_ver_ratio_in */

	res->bayer_scale_hor_ratio_in  = (uint32_t)bs_hor_ratio_in;
	res->bayer_scale_hor_ratio_out = (uint32_t)bs_hor_ratio_out;
	res->bayer_scale_ver_ratio_in  = (uint32_t)bs_ver_ratio_in;
	res->bayer_scale_ver_ratio_out = (uint32_t)bs_ver_ratio_out;

	return err;
}

/* ISP2401: Get the requirements for the shading correction. */
static int
sh_css_binary_get_sc_requirements(const struct ia_css_binary *binary, /* [in] */
				  unsigned int required_bds_factor,   /* [in] */
				  const struct ia_css_stream_config *stream_config, /* [in] */
				  struct sh_css_binary_sc_requirements *scr) /* [out] */
{
	int err;

	/* Numerator and denominator of the fixed bayer downscaling factor. (numerator >= denominator) */
	unsigned int bds_num, bds_den;

	/* Horizontal/Vertical ratio of bayer scaling between input area and output area. */
	unsigned int bs_hor_ratio_in, bs_hor_ratio_out, bs_ver_ratio_in, bs_ver_ratio_out;

	/* Left padding set by InputFormatter. */
	unsigned int left_padding_bqs;

	/* Flags corresponding to NEED_BDS_FACTOR_2_00/NEED_BDS_FACTOR_1_50/NEED_BDS_FACTOR_1_25 macros
	 * defined in isp kernels. */
	unsigned int need_bds_factor_2_00, need_bds_factor_1_50, need_bds_factor_1_25;
@@ -225,64 +302,42 @@ sh_css_binary_get_sc_requirements(
	unsigned int sensor_data_origin_x_bqs_on_internal;
	unsigned int sensor_data_origin_y_bqs_on_internal;

	unsigned int bs_frac = bds_frac_acc;	/* scaling factor 1.0 in fixed point */
	unsigned int bs_out, bs_in;		/* scaling ratio in fixed point */

	IA_CSS_ENTER_PRIVATE("binary=%p, required_bds_factor=%d, stream_config=%p",
			     binary, required_bds_factor, stream_config);

	/* Get the numerator and denominator of the required bayer downscaling factor. */
	err = sh_css_bds_factor_get_numerator_denominator(required_bds_factor, &bds_num, &bds_den);
	if (err)
	{
	err = sh_css_bds_factor_get_numerator_denominator(required_bds_factor,
							  &bds_num, &bds_den);
	if (err) {
		IA_CSS_LEAVE_ERR_PRIVATE(err);
#endif
		return err;
#ifdef ISP2401
	}
#endif

#ifndef ISP2401
/* Set the horizontal/vertical ratio of bayer scaling
between input area and output area. */
#else
	IA_CSS_LOG("bds_num=%d, bds_den=%d", bds_num, bds_den);

	/* Set the horizontal/vertical ratio of bayer scaling between input area and output area. */
#endif
	bs_hor_ratio_in  = bds_num;
	bs_hor_ratio_out = bds_den;
	bs_ver_ratio_in  = bds_num;
	bs_ver_ratio_out = bds_den;

#ifndef ISP2401
/* Set the left padding set by InputFormatter. (ifmtr.c) */
#else
	/* Set the left padding set by InputFormatter. (ia_css_ifmtr_configure() in ifmtr.c) */
#endif
	if (stream_config->left_padding == -1)
		left_padding_bqs = _ISP_BQS(binary->left_padding);
	else
#ifndef ISP2401
	left_padding_bqs = (unsigned int)((int)ISP_VEC_NELEMS
					  - _ISP_BQS(stream_config->left_padding));
#else
		left_padding_bqs = (unsigned int)((int)ISP_VEC_NELEMS - _ISP_BQS(stream_config->left_padding));
#endif

#ifndef ISP2401
/* Set the left padding adjusted inside the isp.
When bds_factor 2.00 is needed, some padding is added to left_padding
inside the isp, before bayer downscaling. (raw.isp.c)
(Hopefully, left_crop/left_padding/top_crop should be defined in css
appropriately, depending on bds_factor.)
*/
#else
	IA_CSS_LOG("stream.left_padding=%d, binary.left_padding=%d, left_padding_bqs=%d",
	   stream_config->left_padding, binary->left_padding, left_padding_bqs);
		   stream_config->left_padding, binary->left_padding,
		   left_padding_bqs);

	/* Set the left padding adjusted inside the isp kernels.
	* When the bds_factor isn't 1.00, the left padding size is adjusted inside the isp,
	* before bayer downscaling. (scaled_hor_plane_index(), raw_compute_hphase() in raw.isp.c)
	*/
#endif
	need_bds_factor_2_00 = ((binary->info->sp.bds.supported_bds_factors &
				(PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_2_00) |
				PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_2_50) |
@@ -293,11 +348,6 @@ need_bds_factor_2_00 = ((binary->info->sp.bds.supported_bds_factors &
				PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_6_00) |
				PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_8_00))) != 0);

#ifndef ISP2401
if (need_bds_factor_2_00 && binary->info->sp.pipeline.left_cropping > 0)
	left_padding_adjusted_bqs = left_padding_bqs + ISP_VEC_NELEMS;
else
#else
	need_bds_factor_1_50 = ((binary->info->sp.bds.supported_bds_factors &
				(PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_1_50) |
				PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_2_25) |
@@ -311,40 +361,26 @@ need_bds_factor_1_25 = ((binary->info->sp.bds.supported_bds_factors &
				PACK_BDS_FACTOR(SH_CSS_BDS_FACTOR_5_00))) != 0);

	if (binary->info->sp.pipeline.left_cropping > 0 &&
    (need_bds_factor_2_00 || need_bds_factor_1_50 || need_bds_factor_1_25))
{
	    (need_bds_factor_2_00 || need_bds_factor_1_50 || need_bds_factor_1_25)) {
		/*
		* downscale 2.0  -> first_vec_adjusted_bqs = 128
		* downscale 1.5  -> first_vec_adjusted_bqs = 96
		* downscale 1.25 -> first_vec_adjusted_bqs = 80
		*/
	unsigned int first_vec_adjusted_bqs
	= ISP_VEC_NELEMS * bs_hor_ratio_in / bs_hor_ratio_out;
		unsigned int first_vec_adjusted_bqs = ISP_VEC_NELEMS * bs_hor_ratio_in / bs_hor_ratio_out;
		left_padding_adjusted_bqs = first_vec_adjusted_bqs
			    - _ISP_BQS(binary->info->sp.pipeline.left_cropping);
} else
#endif
	} else {
		left_padding_adjusted_bqs = left_padding_bqs;
	}

#ifndef ISP2401
/* Currently, the bad pixel caused by filters before bayer scaling
is NOT considered, because the bad pixel is subtle.
When some large filter is used in the future,
we need to consider the bad pixel.

Currently, when bds_factor isn't 1.00, 3x3 anti-alias filter is applied
to each color plane(Gr/R/B/Gb) before bayer downscaling.
This filter moves each color plane to right/bottom directions
by 1 pixel at the most, depending on downscaling factor.
*/
bad_bqs_on_left_before_bs = 0;
bad_bqs_on_top_before_bs = 0;
#else
	IA_CSS_LOG("supported_bds_factors=%d, need_bds_factor:2_00=%d, 1_50=%d, 1_25=%d",
		   binary->info->sp.bds.supported_bds_factors,
	   need_bds_factor_2_00, need_bds_factor_1_50, need_bds_factor_1_25);
		   need_bds_factor_2_00, need_bds_factor_1_50,
		   need_bds_factor_1_25);
	IA_CSS_LOG("left_cropping=%d, left_padding_adjusted_bqs=%d",
	   binary->info->sp.pipeline.left_cropping, left_padding_adjusted_bqs);
		   binary->info->sp.pipeline.left_cropping,
		   left_padding_adjusted_bqs);

	/* Set the top padding padded inside the isp kernel for bayer downscaling binaries.
	* When the bds_factor isn't 1.00, the top padding is padded inside the isp
@@ -357,8 +393,7 @@ top_padding_bqs = 0;
	if (binary->info->sp.pipeline.top_cropping > 0 &&
	    (required_bds_factor == SH_CSS_BDS_FACTOR_1_25 ||
	    required_bds_factor == SH_CSS_BDS_FACTOR_1_50 ||
     required_bds_factor == SH_CSS_BDS_FACTOR_2_00))
{
	    required_bds_factor == SH_CSS_BDS_FACTOR_2_00)) {
		/* Calculation from calculate_input_line() and raw_compute_vphase() in raw.isp.c. */
		int top_cropping_bqs = _ISP_BQS(binary->info->sp.pipeline.top_cropping);
		/* top cropping (in bqs) */
@@ -372,7 +407,8 @@ if (binary->info->sp.pipeline.top_cropping > 0 &&
						1) / bds_frac_acc);
	}

IA_CSS_LOG("top_cropping=%d, top_padding_bqs=%d", binary->info->sp.pipeline.top_cropping, top_padding_bqs);
	IA_CSS_LOG("top_cropping=%d, top_padding_bqs=%d",
		   binary->info->sp.pipeline.top_cropping, top_padding_bqs);

	/* Set the right/down shift amount caused by filters applied BEFORE bayer scaling,
	* which scaling is applied BEFORE shading corrertion.
@@ -383,23 +419,8 @@ IA_CSS_LOG("top_cropping=%d, top_padding_bqs=%d", binary->info->sp.pipeline.top_
	*/
	right_shift_bqs_before_bs = 0;
	down_shift_bqs_before_bs = 0;
#endif

#ifndef ISP2401
/* Currently, the bad pixel caused by filters after bayer scaling
is NOT considered, because the bad pixel is subtle.
When some large filter is used in the future,
we need to consider the bad pixel.

Currently, when DPC&BNR is processed between bayer scaling and
shading correction, DPC&BNR moves each color plane to
right/bottom directions by 1 pixel.
*/
bad_bqs_on_left_after_bs = 0;
bad_bqs_on_top_after_bs = 0;
#else
if (need_bds_factor_2_00 || need_bds_factor_1_50 || need_bds_factor_1_25)
{
	if (need_bds_factor_2_00 || need_bds_factor_1_50 || need_bds_factor_1_25) {
		right_shift_bqs_before_bs = 1;
		down_shift_bqs_before_bs = 1;
	}
@@ -415,29 +436,9 @@ IA_CSS_LOG("right_shift_bqs_before_bs=%d, down_shift_bqs_before_bs=%d",
	*/
	right_shift_bqs_after_bs = 0;
	down_shift_bqs_after_bs = 0;
#endif

#ifndef ISP2401
/* Calculate the origin of bayer (real sensor data area)
located on the shading table during the shading correction. */
res->sc_bayer_origin_x_bqs_on_shading_table
= ((left_padding_adjusted_bqs + bad_bqs_on_left_before_bs)
   * bs_hor_ratio_out + bs_hor_ratio_in / 2) / bs_hor_ratio_in
+ bad_bqs_on_left_after_bs;
/* "+ bs_hor_ratio_in/2": rounding for division by bs_hor_ratio_in */
res->sc_bayer_origin_y_bqs_on_shading_table
= (bad_bqs_on_top_before_bs
   * bs_ver_ratio_out + bs_ver_ratio_in / 2) / bs_ver_ratio_in
+ bad_bqs_on_top_after_bs;
/* "+ bs_ver_ratio_in/2": rounding for division by bs_ver_ratio_in */

res->bayer_scale_hor_ratio_in  = (uint32_t)bs_hor_ratio_in;
res->bayer_scale_hor_ratio_out = (uint32_t)bs_hor_ratio_out;
res->bayer_scale_ver_ratio_in  = (uint32_t)bs_ver_ratio_in;
res->bayer_scale_ver_ratio_out = (uint32_t)bs_ver_ratio_out;
#else
if (binary->info->mem_offsets.offsets.param->dmem.dp.size != 0)   /* if DPC&BNR is enabled in the binary */
{
	/* if DPC&BNR is enabled in the binary */
	if (binary->info->mem_offsets.offsets.param->dmem.dp.size != 0) {
		right_shift_bqs_after_bs = 1;
		down_shift_bqs_after_bs = 1;
	}
@@ -445,23 +446,17 @@ if (binary->info->mem_offsets.offsets.param->dmem.dp.size != 0) /* if DPC&BNR
	IA_CSS_LOG("right_shift_bqs_after_bs=%d, down_shift_bqs_after_bs=%d",
		   right_shift_bqs_after_bs, down_shift_bqs_after_bs);

/* Set the origin of the sensor data area on the internal frame at shading correction. */
{
	unsigned int bs_frac = bds_frac_acc;	/* scaling factor 1.0 in fixed point */
	unsigned int bs_out, bs_in;		/* scaling ratio in fixed point */

	bs_out = bs_hor_ratio_out * bs_frac;
	bs_in = bs_hor_ratio_in * bs_frac;
	sensor_data_origin_x_bqs_on_internal
	= ((left_padding_adjusted_bqs + right_shift_bqs_before_bs) * bs_out + bs_in / 2) / bs_in
	sensor_data_origin_x_bqs_on_internal =
		((left_padding_adjusted_bqs + right_shift_bqs_before_bs) * bs_out + bs_in / 2) / bs_in
		+ right_shift_bqs_after_bs;	/* "+ bs_in/2": rounding */

	bs_out = bs_ver_ratio_out * bs_frac;
	bs_in = bs_ver_ratio_in * bs_frac;
	sensor_data_origin_y_bqs_on_internal
	= ((top_padding_bqs + down_shift_bqs_before_bs) * bs_out + bs_in / 2) / bs_in
	sensor_data_origin_y_bqs_on_internal =
		((top_padding_bqs + down_shift_bqs_before_bs) * bs_out + bs_in / 2) / bs_in
		+ down_shift_bqs_after_bs;	/* "+ bs_in/2": rounding */
}

	scr->bayer_scale_hor_ratio_in			= (uint32_t)bs_hor_ratio_in;
	scr->bayer_scale_hor_ratio_out			= (uint32_t)bs_hor_ratio_out;
@@ -471,72 +466,37 @@ scr->sensor_data_origin_x_bqs_on_internal = (uint32_t)sensor_data_origin_x_bqs_o
	scr->sensor_data_origin_y_bqs_on_internal	= (uint32_t)sensor_data_origin_y_bqs_on_internal;

	IA_CSS_LOG("sc_requirements: %d, %d, %d, %d, %d, %d",
	   scr->bayer_scale_hor_ratio_in, scr->bayer_scale_hor_ratio_out,
		   scr->bayer_scale_hor_ratio_in,
		   scr->bayer_scale_hor_ratio_out,
		   scr->bayer_scale_ver_ratio_in, scr->bayer_scale_ver_ratio_out,
	   scr->sensor_data_origin_x_bqs_on_internal, scr->sensor_data_origin_y_bqs_on_internal);
#endif
		   scr->sensor_data_origin_x_bqs_on_internal,
		   scr->sensor_data_origin_y_bqs_on_internal);

#ifdef ISP2401
	IA_CSS_LEAVE_ERR_PRIVATE(err);
#endif
	return err;
}

/* Get the shading information of Shading Correction Type 1. */
static int
ia_css_binary_get_shading_info_type_1(const struct ia_css_binary
				      *binary,	/* [in] */
isp2400_binary_get_shading_info_type_1(const struct ia_css_binary *binary,	/* [in] */
				       unsigned int required_bds_factor,			/* [in] */
				       const struct ia_css_stream_config *stream_config,	/* [in] */
#ifndef ISP2401
				       struct ia_css_shading_info *info)			/* [out] */
#else
				      struct ia_css_shading_info *shading_info,		/* [out] */
				      struct ia_css_pipe_config *pipe_config)			/* [out] */
#endif
{
	int err;
#ifndef ISP2401
	struct sh_css_shading_table_bayer_origin_compute_results res;
#else
	struct sh_css_binary_sc_requirements scr;
#endif

#ifndef ISP2401
	assert(binary);
	assert(info);
#else
	u32 in_width_bqs, in_height_bqs, internal_width_bqs, internal_height_bqs;
	u32 num_hor_grids, num_ver_grids, bqs_per_grid_cell, tbl_width_bqs, tbl_height_bqs;
	u32 sensor_org_x_bqs_on_internal, sensor_org_y_bqs_on_internal, sensor_width_bqs, sensor_height_bqs;
	u32 sensor_center_x_bqs_on_internal, sensor_center_y_bqs_on_internal;
	u32 left, right, upper, lower;
	u32 adjust_left, adjust_right, adjust_upper, adjust_lower, adjust_width_bqs, adjust_height_bqs;
	u32 internal_org_x_bqs_on_tbl, internal_org_y_bqs_on_tbl;
	u32 sensor_org_x_bqs_on_tbl, sensor_org_y_bqs_on_tbl;
#endif

#ifndef ISP2401
	info->type = IA_CSS_SHADING_CORRECTION_TYPE_1;
#else
	assert(binary);
	assert(stream_config);
	assert(shading_info);
	assert(pipe_config);
#endif

#ifndef ISP2401
	info->info.type_1.enable	    = binary->info->sp.enable.sc;
	info->info.type_1.num_hor_grids	    = binary->sctbl_width_per_color;
	info->info.type_1.num_ver_grids	    = binary->sctbl_height;
	info->info.type_1.bqs_per_grid_cell = (1 << binary->deci_factor_log2);
#else
	IA_CSS_ENTER_PRIVATE("binary=%p, required_bds_factor=%d, stream_config=%p",
			     binary, required_bds_factor, stream_config);
#endif

	/* Initialize by default values. */
#ifndef ISP2401
	info->info.type_1.bayer_scale_hor_ratio_in	= 1;
	info->info.type_1.bayer_scale_hor_ratio_out	= 1;
	info->info.type_1.bayer_scale_ver_ratio_in	= 1;
@@ -550,16 +510,53 @@ ia_css_binary_get_shading_info_type_1(const struct ia_css_binary
	    stream_config,
	    &res);
	if (err)
#else
		return err;

	info->info.type_1.bayer_scale_hor_ratio_in	= res.bayer_scale_hor_ratio_in;
	info->info.type_1.bayer_scale_hor_ratio_out	= res.bayer_scale_hor_ratio_out;
	info->info.type_1.bayer_scale_ver_ratio_in	= res.bayer_scale_ver_ratio_in;
	info->info.type_1.bayer_scale_ver_ratio_out	= res.bayer_scale_ver_ratio_out;
	info->info.type_1.sc_bayer_origin_x_bqs_on_shading_table = res.sc_bayer_origin_x_bqs_on_shading_table;
	info->info.type_1.sc_bayer_origin_y_bqs_on_shading_table = res.sc_bayer_origin_y_bqs_on_shading_table;

	return err;
}

/* Get the shading information of Shading Correction Type 1. */
static int
isp2401_binary_get_shading_info_type_1(const struct ia_css_binary *binary,	/* [in] */
				       unsigned int required_bds_factor,			/* [in] */
				       const struct ia_css_stream_config *stream_config,	/* [in] */
				       struct ia_css_shading_info *shading_info,		/* [out] */
				       struct ia_css_pipe_config *pipe_config)			/* [out] */
{
	int err;
	struct sh_css_binary_sc_requirements scr;

	u32 in_width_bqs, in_height_bqs, internal_width_bqs, internal_height_bqs;
	u32 num_hor_grids, num_ver_grids, bqs_per_grid_cell, tbl_width_bqs, tbl_height_bqs;
	u32 sensor_org_x_bqs_on_internal, sensor_org_y_bqs_on_internal, sensor_width_bqs, sensor_height_bqs;
	u32 sensor_center_x_bqs_on_internal, sensor_center_y_bqs_on_internal;
	u32 left, right, upper, lower;
	u32 adjust_left, adjust_right, adjust_upper, adjust_lower, adjust_width_bqs, adjust_height_bqs;
	u32 internal_org_x_bqs_on_tbl, internal_org_y_bqs_on_tbl;
	u32 sensor_org_x_bqs_on_tbl, sensor_org_y_bqs_on_tbl;

	assert(binary);
	assert(stream_config);
	assert(shading_info);
	assert(pipe_config);

	IA_CSS_ENTER_PRIVATE("binary=%p, required_bds_factor=%d, stream_config=%p",
			     binary, required_bds_factor, stream_config);

	/* Initialize by default values. */
	*shading_info = DEFAULT_SHADING_INFO_TYPE_1;

	err = sh_css_binary_get_sc_requirements(binary, required_bds_factor, stream_config, &scr);
	if (err)
	{
	if (err) {
		IA_CSS_LEAVE_ERR_PRIVATE(err);
#endif
		return err;
#ifdef ISP2401
	}

	IA_CSS_LOG("binary: id=%d, sctbl=%dx%d, deci=%d",
@@ -575,7 +572,8 @@ IA_CSS_LOG("binary: in=%dx%d, in_padded_w=%d, int=%dx%d, int_padded_w=%d, out=%d
	in_width_bqs	    = _ISP_BQS(binary->in_frame_info.res.width);
	in_height_bqs	    = _ISP_BQS(binary->in_frame_info.res.height);

/* Frame size internally used in ISP, including sensor data and padding.
	/*
	 * Frame size internally used in ISP, including sensor data and padding.
	 * This is the frame size, to which the shading correction is applied.
	 */
	internal_width_bqs  = _ISP_BQS(binary->internal_frame_info.res.width);
@@ -587,22 +585,13 @@ num_ver_grids = binary->sctbl_height;
	bqs_per_grid_cell = (1 << binary->deci_factor_log2);
	tbl_width_bqs  = (num_hor_grids - 1) * bqs_per_grid_cell;
	tbl_height_bqs = (num_ver_grids - 1) * bqs_per_grid_cell;
#endif

#ifndef ISP2401
info->info.type_1.bayer_scale_hor_ratio_in	= res.bayer_scale_hor_ratio_in;
info->info.type_1.bayer_scale_hor_ratio_out	= res.bayer_scale_hor_ratio_out;
info->info.type_1.bayer_scale_ver_ratio_in	= res.bayer_scale_ver_ratio_in;
info->info.type_1.bayer_scale_ver_ratio_out	= res.bayer_scale_ver_ratio_out;
info->info.type_1.sc_bayer_origin_x_bqs_on_shading_table = res.sc_bayer_origin_x_bqs_on_shading_table;
info->info.type_1.sc_bayer_origin_y_bqs_on_shading_table = res.sc_bayer_origin_y_bqs_on_shading_table;
#else
	IA_CSS_LOG("tbl_width_bqs=%d, tbl_height_bqs=%d", tbl_width_bqs, tbl_height_bqs);
#endif

#ifdef ISP2401
/* Real sensor data area on the internal frame at shading correction.
 * Filters and scaling are applied to the internal frame before shading correction, depending on the binary.
	/*
	 * Real sensor data area on the internal frame at shading correction.
	 * Filters and scaling are applied to the internal frame before
	 * shading correction, depending on the binary.
	 */
	sensor_org_x_bqs_on_internal = scr.sensor_data_origin_x_bqs_on_internal;
	sensor_org_y_bqs_on_internal = scr.sensor_data_origin_y_bqs_on_internal;
@@ -641,8 +630,7 @@ adjust_height_bqs = adjust_upper + adjust_lower;

	IA_CSS_LOG("adjust_width_bqs=%d, adjust_height_bqs=%d", adjust_width_bqs, adjust_height_bqs);

if (adjust_width_bqs > tbl_width_bqs || adjust_height_bqs > tbl_height_bqs)
{
	if (adjust_width_bqs > tbl_width_bqs || adjust_height_bqs > tbl_height_bqs) {
		IA_CSS_LEAVE_ERR_PRIVATE(-EINVAL);
		return -EINVAL;
	}
@@ -698,10 +686,10 @@ IA_CSS_LOG("pipe_config: origin=(%d,%d)",
		   pipe_config->internal_frame_origin_bqs_on_sctbl.y);

	IA_CSS_LEAVE_ERR_PRIVATE(err);
#endif
	return err;
}


int
ia_css_binary_get_shading_info(const struct ia_css_binary *binary,			/* [in] */
			       enum ia_css_shading_correction_type type,		/* [in] */
@@ -718,19 +706,24 @@ ia_css_binary_get_shading_info(const struct ia_css_binary *binary, /* [in] */
	IA_CSS_ENTER_PRIVATE("binary=%p, type=%d, required_bds_factor=%d, stream_config=%p",
			     binary, type, required_bds_factor, stream_config);

	if (type == IA_CSS_SHADING_CORRECTION_TYPE_1)
#ifndef ISP2401
		err = ia_css_binary_get_shading_info_type_1(binary, required_bds_factor, stream_config,
							    shading_info);
#else
		err = ia_css_binary_get_shading_info_type_1(binary, required_bds_factor, stream_config,
			shading_info, pipe_config);
#endif
	if (type != IA_CSS_SHADING_CORRECTION_TYPE_1) {
		err = -ENOTSUPP;

	/* Other function calls can be added here when other shading correction types will be added in the future. */
		IA_CSS_LEAVE_ERR_PRIVATE(err);
		return err;
	}

	if (!IS_ISP2401)
		err = isp2400_binary_get_shading_info_type_1(binary,
							     required_bds_factor,
							     stream_config,
							     shading_info);
	else
		err = -ENOTSUPP;
		err = isp2401_binary_get_shading_info_type_1(binary,
							     required_bds_factor,
							     stream_config,
							     shading_info,
							     pipe_config);

	IA_CSS_LEAVE_ERR_PRIVATE(err);
	return err;
+1 −2
Original line number Diff line number Diff line
@@ -385,7 +385,6 @@ int ia_css_bufq_enqueue_psys_event(
    u8 evt_payload_1,
    uint8_t evt_payload_2)
{

	int error = 0;
	ia_css_queue_t *q;

+28 −49
Original line number Diff line number Diff line
@@ -5106,10 +5106,9 @@ sh_css_pipes_stop(struct ia_css_stream *stream)
		* the CSS driver should capture these error code and
		* handle it in the driver exception handling mechanism.
		*/
	if (err) {
		if (err)
			goto ERR;
	}
	}

	/*
	 * In the CSS firmware use scenario "Continuous Preview"
@@ -8768,47 +8767,27 @@ ia_css_acc_pipe_create(struct ia_css_pipe *pipe) {
	return err;
}

int
ia_css_pipe_create(const struct ia_css_pipe_config *config,
		    struct ia_css_pipe **pipe) {
#ifndef ISP2401
	if (!config)
#else
int ia_css_pipe_create(const struct ia_css_pipe_config *config,
		       struct ia_css_pipe **pipe)
{
	int err = 0;

	IA_CSS_ENTER_PRIVATE("config = %p, pipe = %p", config, pipe);

	if (!config)
	{
		IA_CSS_LEAVE_ERR_PRIVATE(-EINVAL);
#endif
		return -EINVAL;
#ifndef ISP2401
	if (!pipe)
#else
}

if (!pipe)
{
	if (!config || !pipe) {
		IA_CSS_LEAVE_ERR_PRIVATE(-EINVAL);
#endif
		return -EINVAL;
#ifndef ISP2401
	return ia_css_pipe_create_extra(config, NULL, pipe);
#else
	}

	err = ia_css_pipe_create_extra(config, NULL, pipe);

if (err == 0)
{
	if (err == 0) {
		IA_CSS_LOG("pipe created successfully = %p", *pipe);
	}

	IA_CSS_LEAVE_ERR_PRIVATE(err);

	return err;
#endif
}

int
+3 −3

File changed.

Contains only whitespace changes.

+2 −2

File changed.

Contains only whitespace changes.