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

Commit 0c999fe8 authored by Tejas Prajapati's avatar Tejas Prajapati Committed by Gerrit - the friendly Code Review server
Browse files

msm: camera: icp: use mutex to avoid sleep in spin_lock



__might_sleep() cannot be called inside spin_lock,
clock core has __might_sleep() call so use mutex
in place of spin_lock.

Change-Id: Ib09097fa4371a5105553af49f4c75643884cd892
Signed-off-by: default avatarTejas Prajapati <tpraja@codeaurora.org>
parent bfa4f838
Loading
Loading
Loading
Loading
+4 −5
Original line number Original line Diff line number Diff line
@@ -300,7 +300,6 @@ int cam_bps_process_cmd(void *device_priv, uint32_t cmd_type,
	struct cam_bps_device_core_info *core_info = NULL;
	struct cam_bps_device_core_info *core_info = NULL;
	struct cam_bps_device_hw_info *hw_info = NULL;
	struct cam_bps_device_hw_info *hw_info = NULL;
	int rc = 0;
	int rc = 0;
	unsigned long flags;


	if (!device_priv) {
	if (!device_priv) {
		CAM_ERR(CAM_ICP, "Invalid arguments");
		CAM_ERR(CAM_ICP, "Invalid arguments");
@@ -394,16 +393,16 @@ int cam_bps_process_cmd(void *device_priv, uint32_t cmd_type,
		}
		}
		break;
		break;
	case CAM_ICP_BPS_CMD_DISABLE_CLK:
	case CAM_ICP_BPS_CMD_DISABLE_CLK:
		spin_lock_irqsave(&bps_dev->hw_lock, flags);
		mutex_lock(&bps_dev->hw_mutex);
		if (core_info->clk_enable == true)
		if (core_info->clk_enable == true)
			cam_bps_toggle_clk(soc_info, false);
			cam_bps_toggle_clk(soc_info, false);
		core_info->clk_enable = false;
		core_info->clk_enable = false;
		spin_unlock_irqrestore(&bps_dev->hw_lock, flags);
		mutex_unlock(&bps_dev->hw_mutex);
		break;
		break;
	case CAM_ICP_BPS_CMD_RESET:
	case CAM_ICP_BPS_CMD_RESET:
		spin_lock_irqsave(&bps_dev->hw_lock, flags);
		mutex_lock(&bps_dev->hw_mutex);
		rc = cam_bps_cmd_reset(soc_info, core_info);
		rc = cam_bps_cmd_reset(soc_info, core_info);
		spin_unlock_irqrestore(&bps_dev->hw_lock, flags);
		mutex_unlock(&bps_dev->hw_mutex);
		break;
		break;
	default:
	default:
		CAM_ERR(CAM_ICP, "Invalid Cmd Type:%u", cmd_type);
		CAM_ERR(CAM_ICP, "Invalid Cmd Type:%u", cmd_type);
+4 −5
Original line number Original line Diff line number Diff line
@@ -300,7 +300,6 @@ int cam_ipe_process_cmd(void *device_priv, uint32_t cmd_type,
	struct cam_ipe_device_core_info *core_info = NULL;
	struct cam_ipe_device_core_info *core_info = NULL;
	struct cam_ipe_device_hw_info *hw_info = NULL;
	struct cam_ipe_device_hw_info *hw_info = NULL;
	int rc = 0;
	int rc = 0;
	unsigned long flags;


	if (!device_priv) {
	if (!device_priv) {
		CAM_ERR(CAM_ICP, "Invalid arguments");
		CAM_ERR(CAM_ICP, "Invalid arguments");
@@ -389,16 +388,16 @@ int cam_ipe_process_cmd(void *device_priv, uint32_t cmd_type,
		}
		}
		break;
		break;
	case CAM_ICP_IPE_CMD_DISABLE_CLK:
	case CAM_ICP_IPE_CMD_DISABLE_CLK:
		spin_lock_irqsave(&ipe_dev->hw_lock, flags);
		mutex_lock(&ipe_dev->hw_mutex);
		if (core_info->clk_enable == true)
		if (core_info->clk_enable == true)
			cam_ipe_toggle_clk(soc_info, false);
			cam_ipe_toggle_clk(soc_info, false);
		core_info->clk_enable = false;
		core_info->clk_enable = false;
		spin_unlock_irqrestore(&ipe_dev->hw_lock, flags);
		mutex_unlock(&ipe_dev->hw_mutex);
		break;
		break;
	case CAM_ICP_IPE_CMD_RESET:
	case CAM_ICP_IPE_CMD_RESET:
		spin_lock_irqsave(&ipe_dev->hw_lock, flags);
		mutex_lock(&ipe_dev->hw_mutex);
		rc = cam_ipe_cmd_reset(soc_info, core_info);
		rc = cam_ipe_cmd_reset(soc_info, core_info);
		spin_unlock_irqrestore(&ipe_dev->hw_lock, flags);
		mutex_unlock(&ipe_dev->hw_mutex);
		break;
		break;
	default:
	default:
		CAM_ERR(CAM_ICP, "Invalid Cmd Type:%u", cmd_type);
		CAM_ERR(CAM_ICP, "Invalid Cmd Type:%u", cmd_type);