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

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

Merge "scsi: ufs: Fix clock gating issue"

parents b20cbca6 20891d1b
Loading
Loading
Loading
Loading
+22 −3
Original line number Diff line number Diff line
@@ -6506,8 +6506,6 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
			/* Mark completed command as NULL in LRB */
			lrbp->cmd = NULL;
			hba->ufs_stats.clk_rel.ctx = XFR_REQ_COMPL;
			__ufshcd_release(hba, false);
			__ufshcd_hibern8_release(hba, false);
			if (cmd->request) {
				/*
				 * As we are accessing the "request" structure,
@@ -6519,6 +6517,17 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
			}

			clear_bit_unlock(index, &hba->lrb_in_use);
			/*
			 *__ufshcd_release and __ufshcd_hibern8_release is
			 * called after clear_bit_unlock so that
			 * these function can be called with updated state of
			 * lrb_in_use flag so that for last transfer req
			 * completion, gate and hibernate work function would
			 * be called to gate the clock and put the link in
			 * hibern8 state.
			 */
			__ufshcd_release(hba, false);
			__ufshcd_hibern8_release(hba, false);

			/* Do not touch lrbp after scsi done */
			cmd->scsi_done(cmd);
@@ -6574,7 +6583,6 @@ void ufshcd_abort_outstanding_transfer_requests(struct ufs_hba *hba, int result)
			update_req_stats(hba, lrbp);
			/* Mark completed command as NULL in LRB */
			lrbp->cmd = NULL;
			ufshcd_release_all(hba);
			if (cmd->request) {
				/*
				 * As we are accessing the "request" structure,
@@ -6585,6 +6593,17 @@ void ufshcd_abort_outstanding_transfer_requests(struct ufs_hba *hba, int result)
					true);
			}
			clear_bit_unlock(index, &hba->lrb_in_use);

			/*
			 * ufshcd_release_all is called after clear_bit_unlock
			 * so that the function can be called with updated state
			 * of lrb_in_use flag so that for last abort req
			 * completion, gate and hibernate work function would
			 * be called to gate the clock and put the link in
			 * hibern8 state.
			 */
			 ufshcd_release_all(hba);

			/* Do not touch lrbp after scsi done */
			cmd->scsi_done(cmd);
		} else if (lrbp->command_type == UTP_CMD_TYPE_DEV_MANAGE) {