Unverified Commit 28e5a3de authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: SOF: Use guard()/scoped_guard() for locks when

Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:

Only code refactoring, and no behavior change.

Replace most of the manual *lock/*unlock handling with guard use.
parents dd808d6b 83aee46d
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -190,15 +190,13 @@ irqreturn_t acp_sof_ipc_irq_thread(int irq, void *context)
	dsp_ack = snd_sof_dsp_read(sdev, ACP_DSP_BAR, ACP_SCRATCH_REG_0 + dsp_ack_write);
	if (dsp_ack) {
		if (likely(sdev->fw_state == SOF_FW_BOOT_COMPLETE)) {
			spin_lock_irq(&sdev->ipc_lock);
			guard(spinlock_irq)(&sdev->ipc_lock);

			/* handle immediate reply from DSP core */
			acp_dsp_ipc_get_reply(sdev);
			snd_sof_ipc_reply(sdev, 0);
			/* set the done bit */
			acp_dsp_ipc_dsp_done(sdev);

			spin_unlock_irq(&sdev->ipc_lock);
		} else {
			dev_dbg_ratelimited(sdev->dev, "IPC reply before FW_BOOT_COMPLETE: %#x\n",
					    dsp_ack);
+2 −6
Original line number Diff line number Diff line
@@ -81,14 +81,10 @@ EXPORT_SYMBOL(imx8_dump);

static void imx_handle_reply(struct imx_dsp_ipc *ipc)
{
	struct snd_sof_dev *sdev;
	unsigned long flags;

	sdev = imx_dsp_get_data(ipc);
	struct snd_sof_dev *sdev = imx_dsp_get_data(ipc);

	spin_lock_irqsave(&sdev->ipc_lock, flags);
	guard(spinlock_irqsave)(&sdev->ipc_lock);
	snd_sof_ipc_process_reply(sdev, 0);
	spin_unlock_irqrestore(&sdev->ipc_lock, flags);
}

static void imx_handle_request(struct imx_dsp_ipc *ipc)
+1 −6
Original line number Diff line number Diff line
@@ -143,9 +143,6 @@ irqreturn_t atom_irq_thread(int irq, void *context)

	/* reply message from DSP */
	if (ipcx & SHIM_BYT_IPCX_DONE) {

		spin_lock_irq(&sdev->ipc_lock);

		/*
		 * handle immediate reply from DSP core. If the msg is
		 * found, set done bit in cmd_done which is called at the
@@ -153,11 +150,9 @@ irqreturn_t atom_irq_thread(int irq, void *context)
		 * because the done bit can't be set in cmd_done function
		 * which is triggered by msg
		 */
		guard(spinlock_irq)(&sdev->ipc_lock);
		snd_sof_ipc_process_reply(sdev, ipcx);

		atom_dsp_done(sdev);

		spin_unlock_irq(&sdev->ipc_lock);
	}

	/* new message from DSP */
+1 −6
Original line number Diff line number Diff line
@@ -315,9 +315,6 @@ static irqreturn_t bdw_irq_thread(int irq, void *context)
		snd_sof_dsp_update_bits_unlocked(sdev, BDW_DSP_BAR,
						 SHIM_IMRX, SHIM_IMRX_DONE,
						 SHIM_IMRX_DONE);

		spin_lock_irq(&sdev->ipc_lock);

		/*
		 * handle immediate reply from DSP core. If the msg is
		 * found, set done bit in cmd_done which is called at the
@@ -325,11 +322,9 @@ static irqreturn_t bdw_irq_thread(int irq, void *context)
		 * because the done bit can't be set in cmd_done function
		 * which is triggered by msg
		 */
		guard(spinlock_irq)(&sdev->ipc_lock);
		snd_sof_ipc_process_reply(sdev, ipcx);

		bdw_dsp_done(sdev);

		spin_unlock_irq(&sdev->ipc_lock);
	}

	ipcd = snd_sof_dsp_read(sdev, BDW_DSP_BAR, SHIM_IPCD);
+2 −9
Original line number Diff line number Diff line
@@ -69,13 +69,10 @@ irqreturn_t cnl_ipc4_irq_thread(int irq, void *context)
				data->primary = primary;
				data->extension = extension;

				spin_lock_irq(&sdev->ipc_lock);

				guard(spinlock_irq)(&sdev->ipc_lock);
				snd_sof_ipc_get_reply(sdev);
				cnl_ipc_host_done(sdev);
				snd_sof_ipc_reply(sdev, data->primary);

				spin_unlock_irq(&sdev->ipc_lock);
			} else {
				dev_dbg_ratelimited(sdev->dev,
						    "IPC reply before FW_READY: %#x|%#x\n",
@@ -141,15 +138,11 @@ irqreturn_t cnl_ipc_irq_thread(int irq, void *context)
					CNL_DSP_REG_HIPCCTL_DONE, 0);

		if (likely(sdev->fw_state == SOF_FW_BOOT_COMPLETE)) {
			spin_lock_irq(&sdev->ipc_lock);

			/* handle immediate reply from DSP core */
			guard(spinlock_irq)(&sdev->ipc_lock);
			hda_dsp_ipc_get_reply(sdev);
			snd_sof_ipc_reply(sdev, msg);

			cnl_ipc_dsp_done(sdev);

			spin_unlock_irq(&sdev->ipc_lock);
		} else {
			dev_dbg_ratelimited(sdev->dev, "IPC reply before FW_READY: %#x\n",
					    msg);
Loading