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

Commit 66fcd11c authored by Jeyaprakash Soundrapandian's avatar Jeyaprakash Soundrapandian Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera: isp: Stop IRQ if error IRQ is fired" into dev/msm-4.9-camx

parents bccd7946 33300dce
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -373,12 +373,17 @@ int cam_vfe_irq_top_half(uint32_t evt_id,
	 *  need to handle overflow condition here, otherwise irq storm
	 *  will block everything.
	 */
	if (evt_payload->irq_reg_val[1]) {
	if ((evt_payload->irq_reg_val[0] & 0x3FC00) ||
		(evt_payload->irq_reg_val[1])) {
		CAM_ERR(CAM_ISP,
			"Encountered Error Irq_status1=0x%x. Stopping further IRQ processing from this HW",
			"Encountered Error Irq_status0=0x%x Status1=0x%x",
			evt_payload->irq_reg_val[0],
			evt_payload->irq_reg_val[1]);
		CAM_ERR(CAM_ISP, "Violation status = %x",
		CAM_ERR(CAM_ISP, "Violation status = 0x%x",
			evt_payload->irq_reg_val[2]);
		CAM_ERR(CAM_ISP,
			"Stopping further IRQ processing from this HW index=%d",
			handler_priv->core_index);
		cam_io_w(0, handler_priv->mem_base + 0x60);
		cam_io_w(0, handler_priv->mem_base + 0x5C);

+3 −0
Original line number Diff line number Diff line
@@ -2300,12 +2300,15 @@ static int cam_vfe_bus_error_irq_top_half(uint32_t evt_id,
	struct cam_irq_th_payload *th_payload)
{
	int i = 0;
	struct cam_vfe_bus_ver2_priv  *bus_priv = th_payload->handler_priv;

	CAM_ERR_RATE_LIMIT(CAM_ISP, "Bus Err IRQ");
	for (i = 0; i < th_payload->num_registers; i++) {
		CAM_ERR_RATE_LIMIT(CAM_ISP, "IRQ_Status%d: 0x%x", i,
			th_payload->evt_status_arr[i]);
	}
	cam_irq_controller_disable_irq(bus_priv->common_data.bus_irq_controller,
		bus_priv->error_irq_handle);

	/* Returning error stops from enqueuing bottom half */
	return -EFAULT;