Loading drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c +23 −1 Original line number Diff line number Diff line /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -2194,6 +2194,7 @@ int msm_isp_close_node(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) { long rc = 0; int wm; unsigned long flags; struct vfe_device *vfe_dev = v4l2_get_subdevdata(sd); ISP_DBG("%s E open_cnt %u\n", __func__, vfe_dev->vfe_open_cnt); mutex_lock(&vfe_dev->realtime_mutex); Loading @@ -2207,6 +2208,27 @@ int msm_isp_close_node(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) return -EINVAL; } /* reset master and slave mask in case daemon died */ if (vfe_dev->axi_data.src_info[VFE_PIX_0].dual_hw_ms_info. dual_hw_ms_type == MS_TYPE_MASTER) { spin_lock_irqsave( &vfe_dev->common_data->common_dev_data_lock, flags); vfe_dev->common_data->ms_resource.master_active = 0; spin_unlock_irqrestore( &vfe_dev->common_data->common_dev_data_lock, flags); } else if (vfe_dev->axi_data.src_info[VFE_PIX_0].dual_hw_ms_info. dual_hw_ms_type == MS_TYPE_SLAVE) { spin_lock_irqsave( &vfe_dev->common_data->common_dev_data_lock, flags); vfe_dev->common_data->ms_resource.slave_active_mask = 0; vfe_dev->common_data->ms_resource.reserved_slave_mask = 0; spin_unlock_irqrestore( &vfe_dev->common_data->common_dev_data_lock, flags); } if (vfe_dev->vfe_open_cnt > 1) { vfe_dev->vfe_open_cnt--; mutex_unlock(&vfe_dev->core_mutex); Loading Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c +23 −1 Original line number Diff line number Diff line /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -2194,6 +2194,7 @@ int msm_isp_close_node(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) { long rc = 0; int wm; unsigned long flags; struct vfe_device *vfe_dev = v4l2_get_subdevdata(sd); ISP_DBG("%s E open_cnt %u\n", __func__, vfe_dev->vfe_open_cnt); mutex_lock(&vfe_dev->realtime_mutex); Loading @@ -2207,6 +2208,27 @@ int msm_isp_close_node(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) return -EINVAL; } /* reset master and slave mask in case daemon died */ if (vfe_dev->axi_data.src_info[VFE_PIX_0].dual_hw_ms_info. dual_hw_ms_type == MS_TYPE_MASTER) { spin_lock_irqsave( &vfe_dev->common_data->common_dev_data_lock, flags); vfe_dev->common_data->ms_resource.master_active = 0; spin_unlock_irqrestore( &vfe_dev->common_data->common_dev_data_lock, flags); } else if (vfe_dev->axi_data.src_info[VFE_PIX_0].dual_hw_ms_info. dual_hw_ms_type == MS_TYPE_SLAVE) { spin_lock_irqsave( &vfe_dev->common_data->common_dev_data_lock, flags); vfe_dev->common_data->ms_resource.slave_active_mask = 0; vfe_dev->common_data->ms_resource.reserved_slave_mask = 0; spin_unlock_irqrestore( &vfe_dev->common_data->common_dev_data_lock, flags); } if (vfe_dev->vfe_open_cnt > 1) { vfe_dev->vfe_open_cnt--; mutex_unlock(&vfe_dev->core_mutex); Loading