Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab2e87cd authored by Shravya Samala's avatar Shravya Samala Committed by Gerrit - the friendly Code Review server
Browse files

msm: camera: ife: Adjust epoch configuration



In case if calculated epoch is more than last
active line, then there is a chance that calculated epoch
is closer to EOF. This results in missing Epoch notification
at CRM.
Check if calculated epoch is greater than half of
last active line, then configure epoch at half the active lines.

CRs-Fixed: 2781565
Change-Id: Icb44d2e0e72b4ff36bd500ce51016cce418ff205
Signed-off-by: default avatarShravya Samala <shravyas@codeaurora.org>
parent 4e9f4848
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1972,10 +1972,10 @@ static int cam_tfe_camif_resource_start(

	/* Epoch config */
	epoch0_irq_mask = (((rsrc_data->last_line + rsrc_data->vbi_value) -
			rsrc_data->first_line) / 2) +
			rsrc_data->first_line;
	if (epoch0_irq_mask > rsrc_data->last_line)
		epoch0_irq_mask = rsrc_data->last_line;
			rsrc_data->first_line) / 2);
	if (epoch0_irq_mask > (rsrc_data->last_line - rsrc_data->first_line))
		epoch0_irq_mask = (rsrc_data->last_line -
					rsrc_data->first_line);

	epoch1_irq_mask = rsrc_data->reg_data->epoch_line_cfg &
			0xFFFF;
+4 −3
Original line number Diff line number Diff line
@@ -426,10 +426,11 @@ static int cam_vfe_camif_resource_start(
	default:
		epoch0_irq_mask = (((rsrc_data->last_line +
				rsrc_data->vbi_value) -
				rsrc_data->first_line) / 2) +
				rsrc_data->first_line) / 2);
		if ((epoch0_irq_mask) >
			(rsrc_data->last_line - rsrc_data->first_line))
			epoch0_irq_mask = rsrc_data->last_line -
				rsrc_data->first_line;
		if (epoch0_irq_mask > rsrc_data->last_line)
			epoch0_irq_mask = rsrc_data->last_line;

		epoch1_irq_mask = rsrc_data->reg_data->epoch_line_cfg &
				0xFFFF;
+4 −2
Original line number Diff line number Diff line
@@ -471,8 +471,10 @@ static int cam_vfe_camif_ver3_resource_start(
		epoch0_line_cfg = ((rsrc_data->last_line +
			rsrc_data->vbi_value) -
			rsrc_data->first_line) / 4;
		if (epoch0_line_cfg > rsrc_data->last_line)
			epoch0_line_cfg = rsrc_data->last_line;
		if ((epoch0_line_cfg * 2) >
			(rsrc_data->last_line - rsrc_data->first_line))
			epoch0_line_cfg = (rsrc_data->last_line -
				rsrc_data->first_line)/2;
	/* epoch line cfg will still be configured at midpoint of the
	 * frame width. We use '/ 4' instead of '/ 2'
	 * cause it is multipixel path
+3 −3
Original line number Diff line number Diff line
@@ -307,9 +307,9 @@ static int cam_vfe_fe_resource_start(

	/* epoch config */
	epoch0_irq_mask = (((rsrc_data->last_line + rsrc_data->vbi_value) -
		rsrc_data->first_line) / 2) + rsrc_data->first_line;
	if (epoch0_irq_mask > rsrc_data->last_line)
		epoch0_irq_mask = rsrc_data->last_line;
		rsrc_data->first_line) / 2);
	if (epoch0_irq_mask > (rsrc_data->last_line - rsrc_data->first_line))
		epoch0_irq_mask = rsrc_data->last_line - rsrc_data->first_line;

	epoch1_irq_mask = rsrc_data->reg_data->epoch_line_cfg & 0xFFFF;
	computed_epoch_line_cfg = (epoch0_irq_mask << 16) | epoch1_irq_mask;