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

Commit c1a9bdcb authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera: isp: avoid spin lock recursion"

parents 19a608e3 77366328
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -1547,12 +1547,11 @@ void msm_isp_axi_cfg_update(struct vfe_device *vfe_dev,
{
	int i, j;
	uint32_t update_state;
	unsigned long flags, flags1;
	unsigned long flags;
	struct msm_vfe_axi_shared_data *axi_data = &vfe_dev->axi_data;
	struct msm_vfe_axi_stream *stream_info;
	int num_stream = 0;

	spin_lock_irqsave(&vfe_dev->common_data->common_dev_data_lock, flags);
	for (i = 0; i < VFE_AXI_SRC_MAX; i++) {
		if (SRC_TO_INTF(axi_data->stream_info[i].stream_src) !=
			frame_src) {
@@ -1566,7 +1565,7 @@ void msm_isp_axi_cfg_update(struct vfe_device *vfe_dev,
			!stream_info->controllable_output) ||
			stream_info->state == AVAILABLE)
			continue;
		spin_lock_irqsave(&stream_info->lock, flags1);
		spin_lock_irqsave(&stream_info->lock, flags);
		if (stream_info->state == PAUSING) {
			/*AXI Stopped, apply update*/
			stream_info->state = PAUSED;
@@ -1580,10 +1579,8 @@ void msm_isp_axi_cfg_update(struct vfe_device *vfe_dev,
		} else if (stream_info->state == RESUMING) {
			msm_isp_update_dual_HW_axi(vfe_dev, stream_info);
		}
		spin_unlock_irqrestore(&stream_info->lock, flags1);
		spin_unlock_irqrestore(&stream_info->lock, flags);
	}
	spin_unlock_irqrestore(&vfe_dev->common_data->common_dev_data_lock,
		flags);
	if (num_stream)
		update_state = atomic_dec_return(
			&axi_data->axi_cfg_update[frame_src]);