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

Commit cab5eccc authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "Merge remote-tracking branch 'dev/msm-4.14-camx' into msm-4.14.c4 10/31"

parents b2595399 d9d8a6a3
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -343,7 +343,6 @@ int cam_csid_ppi_init_soc_resources(struct cam_hw_soc_info *soc_info,
irqreturn_t cam_csid_ppi_irq(int irq_num, void *data)
{
	uint32_t      irq_status = 0;
	uint32_t      i, ppi_cfg_val = 0;
	bool          fatal_err_detected = false;

	struct cam_csid_ppi_hw                *ppi_hw;
@@ -390,11 +389,13 @@ irqreturn_t cam_csid_ppi_irq(int irq_num, void *data)
	if (fatal_err_detected) {
		CAM_ERR(CAM_ISP, "PPI: %d irq_status:0x%x",
			ppi_hw->hw_intf->hw_idx, irq_status);
		/* disable lanes */
		for (i = 0; i < CAM_CSID_PPI_LANES_MAX; i++)
			ppi_cfg_val &= ~PPI_CFG_CPHY_DLX_EN(i);

		cam_io_w_mb(ppi_cfg_val, soc_info->reg_map[0].mem_base +
		/* disable the interrupt */
		cam_io_w_mb(0, soc_info->reg_map[0].mem_base +
			ppi_reg->ppi_irq_mask_addr);

		/* disable lanes */
		cam_io_w_mb(0, soc_info->reg_map[0].mem_base +
			ppi_reg->ppi_module_cfg_addr);
	}
ret:
+16 −15
Original line number Diff line number Diff line
@@ -4193,6 +4193,22 @@ int cam_ife_csid_hw_probe_init(struct cam_hw_intf *csid_hw_intf,
	for (i = 0; i <= CAM_IFE_PIX_PATH_RES_RDI_3; i++)
		ife_csid_hw->rdi_path_config[i].measure_enabled = 0;

	scnprintf(worker_name, sizeof(worker_name),
		"csid%u_worker", ife_csid_hw->hw_intf->hw_idx);
	CAM_DBG(CAM_ISP, "Create CSID worker %s", worker_name);
	rc = cam_req_mgr_workq_create(worker_name,
		CAM_CSID_WORKQ_NUM_TASK,
		&ife_csid_hw->work, CRM_WORKQ_USAGE_IRQ, 0);

	if (rc) {
		CAM_ERR(CAM_ISP, "Unable to create a workq, rc=%d", rc);
		goto err;
	}

	for (i = 0; i < CAM_CSID_WORKQ_NUM_TASK; i++)
		ife_csid_hw->work->task.pool[i].payload =
			&ife_csid_hw->work_data[i];

	/* Check if ppi bridge is present or not? */
	ife_csid_hw->ppi_enable = of_property_read_bool(
		csid_hw_info->soc_info.pdev->dev.of_node,
@@ -4209,21 +4225,6 @@ int cam_ife_csid_hw_probe_init(struct cam_hw_intf *csid_hw_intf,
			break;
		}
	}
	snprintf(worker_name, sizeof(worker_name),
		"csid%u_worker", ife_csid_hw->hw_intf->hw_idx);
	CAM_DBG(CAM_ISP, "Create CSID worker %s", worker_name);
	rc = cam_req_mgr_workq_create(worker_name,
		CAM_CSID_WORKQ_NUM_TASK,
		&ife_csid_hw->work, CRM_WORKQ_USAGE_IRQ, 0);
	if (rc) {
		CAM_ERR(CAM_ISP, "Unable to create a workq, rc=%d", rc);
		goto err;
	}
	for (i = 0; i < CAM_CSID_WORKQ_NUM_TASK; i++)
		ife_csid_hw->work->task.pool[i].payload =
			&ife_csid_hw->work_data[i];

	return 0;
err:
	if (rc) {
		kfree(ife_csid_hw->ipp_res.res_priv);