From nobody Mon Jun 8 06:35:53 2026 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 818E6283C9D for ; Thu, 4 Jun 2026 03:36:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780544174; cv=none; b=agzACp5eBE+3LmoAHmF6Lda+Hd1RpAGwPZA4NngW2oKIFsM/oCnZkBTyJX533G0UhYMuvDY2LI5izcmj/t30ayGq8QDmEQEC1v6LZ162lfBmFznMFAF+Pj59YPeFL7mRbglnVatjH3ynAIESA4T7a94pDttPZlrbAntRbTRmj/4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780544174; c=relaxed/simple; bh=JsmDQDwFjv1qMs71CZFn8iCXQdOuq5NjJNvZvFP2ek4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XoyI/f4dcfiGq/cdOFDHUM1SM/s50s5EEQhgZLi5eO5tQ+Df41MC9tDF2VssancB/bYatQ6IICjqYfaetXcCPt3+G/DtA+Eab8YX9toV7q+qWHvi6Li6sLOEAKn3JICA+ymH9tlqE6U6dGU4rbTSamqnT0PhyW6Hs9yVfxwlrNM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XhNQBOta; arc=none smtp.client-ip=209.85.210.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XhNQBOta" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-84226d0f1d2so160903b3a.1 for ; Wed, 03 Jun 2026 20:36:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780544173; x=1781148973; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TEBgbFdEMrwR0Bbx/xOW9IyMneCSJBVo6qr7YB9TYfA=; b=XhNQBOtadXZsW30pOsG8/oJROsT+4P70T+zu4pOfEVX+YvURA1ZA4Unkh6LcQiBd39 4hLxc9kWSjYccU99eZBFsP/FaVmdq9GeW0/YWAcGNCREK1wMfeAddYiCNQQpQcMmcZTo 650loJj+iqgXKfLEa2JKCUr9Z0nF292A9WrYOLWCnb+M+W0b0soTl2ekHDll0W7Fw0Ut sQ+7Lqfxr/m9+eWyza97FRxXKThTnp6pb2ZL7WZotYUrU1YOtzLIHbm8lWx4FZnlEe8/ I4Y/vZGVnTxrTEnTnIMmcRd7QXR5k53NIdFeUhYG7pCP5YDiFVhqCzc50raeqH65R2km vqWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780544173; x=1781148973; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=TEBgbFdEMrwR0Bbx/xOW9IyMneCSJBVo6qr7YB9TYfA=; b=X5SIFAK6LTAJtjN+nwIkxbuM0qzJxV4LFDjJrCzp9LCa3Zox6w0E3ZXA84zxLpN8D4 27YsLtfdAfVlJfa0w/bfQhSY4eL1FpYAYRm9O8kaSDMcVlpg5eguYuL0qLuEfln0BK37 x/UeVWjH5r1HRct2YAiL5dZAqECtMbJWzDPTWPyh37VnzX/c7HOyfIXwnJcFX02tCoSs BcauV86RBlswAZ3xA7wm7s0bNYq8eVVQKrUgrjilOlJjTSv+8n19M2X/5hvL+NyzaCf9 wg85ANJn0kq5iQNQWNzCLjR3kz/irBgNTjTS4KPBuH61cpfwZSZiCiW+8k96d/yUyw0i WV6w== X-Forwarded-Encrypted: i=1; AFNElJ/92HZS4UH9S/vPI62fFiPqnLsSoGnpYgC7P0ozgP/ZK46GqGEtJO+JtNkpM6C0J5NN9+ydC+fOyNYSIas=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+3RJ0ju2g2BYaaQpBs24EyK/kqH6p1zijk01TNG961A0p/PfY Jrnh0JktdLK4Pmt5uWPfgAyV0NuJ5i9wrDqNKGQAOeekPR3reN/USM0i X-Gm-Gg: Acq92OGVqvOuv8R+z04ujXhMRxvhXFf4HPsDibt+5KwxmRsdeTVtFt95WuP2AS2ueif xwUJIdQVDwhdOt0L7TBlY5fVDhpoXb/CupPksAaUboy4jKdszOiVvM1dZ6kvLmdA5Z0oBMsA5im I7Lq3t0eJR/97ZVEL0pxyOzr5IklzR4jJZPQjM4xPtE2L480hNQj/0kQr8jWRZlgfvQZgAFCNhx CzcEkOSIilK+GgExU+Tb1GPNANd7XkqnQ4mn5CAkEKPPWyl3npwxgE9srHq4nCoVnESkn8Ll+HA I6UhetLqb3oEYtxY3ofhkorIPgMpK8KMl4ppt5+NFuXsZ+mgfv3ioo9GRB+1r0uMJ6xyP+4y52v qBKxNU3wLvvE+79E37F9M4Fvtksd+084dcWDeVwMyImYBieHPPyAbJA+hZTRxim8jx891cpJhF8 aSBwCmMotLyh+jQRlI3I7Q7WHQBYLSV4EMlrNAZe1+Ow+rOh6kcyoTg6U/QSFBKhqH3VCH X-Received: by 2002:a05:6a00:b483:b0:842:2ddb:e303 with SMTP id d2e1a72fcca58-84284da5a08mr6132587b3a.12.1780544172780; Wed, 03 Jun 2026 20:36:12 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428221a7e9sm5539745b3a.11.2026.06.03.20.36.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jun 2026 20:36:12 -0700 (PDT) From: phucduc.bui@gmail.com To: Heiko Stuebner , Mark Brown , Liam Girdwood Cc: Nicolas Frattaroli , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, bui duc phuc Subject: [PATCH v2 1/3] ASoC: rockchip: rockchip_i2s: Use guard() for spin locks Date: Thu, 4 Jun 2026 10:35:51 +0700 Message-ID: <20260604033554.96996-2-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604033554.96996-1-phucduc.bui@gmail.com> References: <20260604033554.96996-1-phucduc.bui@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: bui duc phuc Clean up the code using guard() for spin locks. Merely code refactoring, and no behavior change. Signed-off-by: bui duc phuc --- NOTE: This patch is compile-tested only. sound/soc/rockchip/rockchip_i2s.c | 160 +++++++++++++++--------------- 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchi= p_i2s.c index 0a0a95b4f520..5a5087f4ae03 100644 --- a/sound/soc/rockchip/rockchip_i2s.c +++ b/sound/soc/rockchip/rockchip_i2s.c @@ -127,52 +127,52 @@ static int rockchip_snd_txctrl(struct rk_i2s_dev *i2s= , int on) unsigned int val =3D 0; int ret =3D 0; =20 - spin_lock(&i2s->lock); - if (on) { - ret =3D regmap_update_bits(i2s->regmap, I2S_DMACR, - I2S_DMACR_TDE_ENABLE, - I2S_DMACR_TDE_ENABLE); - if (ret < 0) - goto end; - ret =3D regmap_update_bits(i2s->regmap, I2S_XFER, - I2S_XFER_TXS_START | I2S_XFER_RXS_START, - I2S_XFER_TXS_START | I2S_XFER_RXS_START); - if (ret < 0) - goto end; - i2s->tx_start =3D true; - } else { - i2s->tx_start =3D false; - - ret =3D regmap_update_bits(i2s->regmap, I2S_DMACR, - I2S_DMACR_TDE_ENABLE, - I2S_DMACR_TDE_DISABLE); - if (ret < 0) - goto end; - - if (!i2s->rx_start) { + scoped_guard(spinlock, &i2s->lock) { + if (on) { + ret =3D regmap_update_bits(i2s->regmap, I2S_DMACR, + I2S_DMACR_TDE_ENABLE, + I2S_DMACR_TDE_ENABLE); + if (ret < 0) + break; ret =3D regmap_update_bits(i2s->regmap, I2S_XFER, I2S_XFER_TXS_START | I2S_XFER_RXS_START, - I2S_XFER_TXS_STOP | I2S_XFER_RXS_STOP); + I2S_XFER_TXS_START | I2S_XFER_RXS_START); if (ret < 0) - goto end; - udelay(150); - ret =3D regmap_update_bits(i2s->regmap, I2S_CLR, - I2S_CLR_TXC | I2S_CLR_RXC, - I2S_CLR_TXC | I2S_CLR_RXC); - if (ret < 0) - goto end; - ret =3D regmap_read_poll_timeout_atomic(i2s->regmap, - I2S_CLR, - val, - val =3D=3D 0, - 20, - 200); + break; + i2s->tx_start =3D true; + } else { + i2s->tx_start =3D false; + + ret =3D regmap_update_bits(i2s->regmap, I2S_DMACR, + I2S_DMACR_TDE_ENABLE, + I2S_DMACR_TDE_DISABLE); if (ret < 0) - dev_warn(i2s->dev, "fail to clear: %d\n", ret); + break; + + if (!i2s->rx_start) { + ret =3D regmap_update_bits(i2s->regmap, I2S_XFER, + I2S_XFER_TXS_START | I2S_XFER_RXS_START, + I2S_XFER_TXS_STOP | I2S_XFER_RXS_STOP); + if (ret < 0) + break; + udelay(150); + ret =3D regmap_update_bits(i2s->regmap, I2S_CLR, + I2S_CLR_TXC | I2S_CLR_RXC, + I2S_CLR_TXC | I2S_CLR_RXC); + if (ret < 0) + break; + ret =3D regmap_read_poll_timeout_atomic(i2s->regmap, + I2S_CLR, + val, + val =3D=3D 0, + 20, + 200); + if (ret < 0) + dev_warn(i2s->dev, "fail to clear: %d\n", ret); + } } } -end: - spin_unlock(&i2s->lock); + if (ret < 0) dev_err(i2s->dev, "lrclk update failed\n"); =20 @@ -184,53 +184,53 @@ static int rockchip_snd_rxctrl(struct rk_i2s_dev *i2s= , int on) unsigned int val =3D 0; int ret =3D 0; =20 - spin_lock(&i2s->lock); - if (on) { - ret =3D regmap_update_bits(i2s->regmap, I2S_DMACR, - I2S_DMACR_RDE_ENABLE, - I2S_DMACR_RDE_ENABLE); - if (ret < 0) - goto end; - - ret =3D regmap_update_bits(i2s->regmap, I2S_XFER, - I2S_XFER_TXS_START | I2S_XFER_RXS_START, - I2S_XFER_TXS_START | I2S_XFER_RXS_START); - if (ret < 0) - goto end; - i2s->rx_start =3D true; - } else { - i2s->rx_start =3D false; - - ret =3D regmap_update_bits(i2s->regmap, I2S_DMACR, - I2S_DMACR_RDE_ENABLE, - I2S_DMACR_RDE_DISABLE); - if (ret < 0) - goto end; + scoped_guard(spinlock, &i2s->lock) { + if (on) { + ret =3D regmap_update_bits(i2s->regmap, I2S_DMACR, + I2S_DMACR_RDE_ENABLE, + I2S_DMACR_RDE_ENABLE); + if (ret < 0) + break; =20 - if (!i2s->tx_start) { ret =3D regmap_update_bits(i2s->regmap, I2S_XFER, I2S_XFER_TXS_START | I2S_XFER_RXS_START, - I2S_XFER_TXS_STOP | I2S_XFER_RXS_STOP); + I2S_XFER_TXS_START | I2S_XFER_RXS_START); if (ret < 0) - goto end; - udelay(150); - ret =3D regmap_update_bits(i2s->regmap, I2S_CLR, - I2S_CLR_TXC | I2S_CLR_RXC, - I2S_CLR_TXC | I2S_CLR_RXC); - if (ret < 0) - goto end; - ret =3D regmap_read_poll_timeout_atomic(i2s->regmap, - I2S_CLR, - val, - val =3D=3D 0, - 20, - 200); + break; + i2s->rx_start =3D true; + } else { + i2s->rx_start =3D false; + + ret =3D regmap_update_bits(i2s->regmap, I2S_DMACR, + I2S_DMACR_RDE_ENABLE, + I2S_DMACR_RDE_DISABLE); if (ret < 0) - dev_warn(i2s->dev, "fail to clear: %d\n", ret); + break; + + if (!i2s->tx_start) { + ret =3D regmap_update_bits(i2s->regmap, I2S_XFER, + I2S_XFER_TXS_START | I2S_XFER_RXS_START, + I2S_XFER_TXS_STOP | I2S_XFER_RXS_STOP); + if (ret < 0) + break; + udelay(150); + ret =3D regmap_update_bits(i2s->regmap, I2S_CLR, + I2S_CLR_TXC | I2S_CLR_RXC, + I2S_CLR_TXC | I2S_CLR_RXC); + if (ret < 0) + break; + ret =3D regmap_read_poll_timeout_atomic(i2s->regmap, + I2S_CLR, + val, + val =3D=3D 0, + 20, + 200); + if (ret < 0) + dev_warn(i2s->dev, "fail to clear: %d\n", ret); + } } } -end: - spin_unlock(&i2s->lock); + if (ret < 0) dev_err(i2s->dev, "lrclk update failed\n"); =20 --=20 2.43.0 From nobody Mon Jun 8 06:35:53 2026 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6A92B3B0AEA for ; Thu, 4 Jun 2026 03:36:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780544178; cv=none; b=VGxCQccgfua9//oYwbTuqpUqkdBkWuyJY4SYnAEnedz85hOsfzIr9gTpGoNDcjtOlnPPIk+Fu/oa2gCyqRA4XV2YPj2TFqLfW6P3QMTLBcj/5WCSd2QaXVmQ+DnCJ61Zl5lXd4bwaNrRZm/Agpbh3EsM+6n0QLyzbewjpfCC154= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780544178; c=relaxed/simple; bh=xCjeuu7+zl859aKolJL90IgyyO7+SOpa7ucBzKSx38g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZP1Q2RsvcI8cYxK3kpI17ePbHjCjD7hKKsNrcSdfWQOmgy3CQrujG30FCbSK1Zift05XN7zv6PRFK81ovs4SKnT0aceZzMR4qdaXZ7dC26mQA3xfE8ZRWlUNjUCOvvx9UZhmTpiMvIwcJmT2v2MYMbLfePG3UvNsKAotb3C4SKM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MIaIDThh; arc=none smtp.client-ip=209.85.210.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MIaIDThh" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-8423f236418so107816b3a.1 for ; Wed, 03 Jun 2026 20:36:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780544177; x=1781148977; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QqiGW/dz4YSeZ3jaBcWBt4ocDaFmKXFEK9JnLN8NHsw=; b=MIaIDThhoAnPL9gVvVCnWtmV229n5wZeyqBQKS9leY+CDiaSF9uOfEEbGqBPZbAIwq sF7vA1TbzwsQ2S1c1i3vj9iUH+AP9itiBvDpYi+RKg/2gi/zEjSrc6PsAdJmlCyKWx/+ ARsdlulUYKNO1L9otrrjZ3FoNu1VGT9hVUPgjMgUFRzYLn5D3GC0SW1/YZO5btiybnJ9 4bGl/cQ1qhGRLVUHWFyf6DEIU0N/TmvrthexACeyWlW7HRRMjNdrufH6AsqREj0nNz4P fvzF4pE9scqL2zaHPlcuw9xSBeTvvZT/G5Zmh0FM3vys6X2MlvglWrhimVazvzxW/dwz JFWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780544177; x=1781148977; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=QqiGW/dz4YSeZ3jaBcWBt4ocDaFmKXFEK9JnLN8NHsw=; b=MXnZa7EJ6PyuoVztJYSj7EiM/YDM8VH4dVqy8fCPO/F2Uh7UiifkSmqYD4+KtuZ6Io lhC6/5eEXaJodpssASaG0FvW5K6mtDwsIQWj0KcEthQyIj30zp5eh1Sq+UUh/qRqnFxe +3B1+AN+zmrknx5x5swWkLo7HO3NQIWALVPmFj08rGGnBcqD77jlIL3S60szM6mtTnYV v45JN6yu+IbM2oFNNh+NM/Ihw5DBmw8cFU3NWouHMqWJW2TP2l1DDz2997kKGq+ZD8yr fl7U8GOqeEvGLxwcORBs6J9g6ZRRg6CzfOkFo8rEw0PLbX0U9KQO8+8P2i71SbKxyQbu 4w1w== X-Forwarded-Encrypted: i=1; AFNElJ/7eJIaLTuIXminzCVCl1ECRrCM5SeQoaXT4afaA3dOtRxNIRfF2RSCXo3YgbFu/w0+/fTGXbBMutg7uxc=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+iDj2KCSb/EOfqotdy00wcEQlZ5k1cCnnRikU0g09S62FyHFx +/TvmAX7IvSwT1IgpLdc8GBY9C1JTaS1e6YwkMB78aMWzCSQGDMMrp6n X-Gm-Gg: Acq92OE0PskqY53jCclLDeEXZFksr23rHJ6lKIt9uMBo2oiKq/HdCRHyamicEdl85kZ R4Kz/+AYTGQ+Uqe19r4G8nv0lp867wjUZ4NCFHOssyZwQmvTdvpEDNlCNmXKtYGrv+/GUwI1qg1 h+XOY7HibDW4Zi97tykJahbM4I5TrJbWp777SDURBsRNWHGoG8jjAUitgfzida2F/gTpM1zcIDj DPbyvN3K8z1phBHOfLd/QDd3b6aUlXWaeDWmy3/Cci2sWAMKO4Gcube89PHg8Vo7B3BYwRaUe+9 7auQrKn8Gp0A0XD3ApNj9WPAfjBqkLxsewW10Sgy4lMhGEzJs607ujcnXX6+FjLB9hbanNVArMx Jcfp3YnkN9h4e0v6i+I8Dt3bgYJma3JrGm/RYFPBZSSi/nU5P5zZ7usoBw4T9+JZpS72b2YZ8mg f2k/VMnVuR0UhlVWko8brj2choXYHWmQkUA4jxDJv66zW4iArzhAWUiWIBGSkkCkguoTzXClzh9 CGKG6A= X-Received: by 2002:a05:6a00:1302:b0:837:80a:5abe with SMTP id d2e1a72fcca58-84284fd0951mr6418129b3a.37.1780544176738; Wed, 03 Jun 2026 20:36:16 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428221a7e9sm5539745b3a.11.2026.06.03.20.36.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jun 2026 20:36:16 -0700 (PDT) From: phucduc.bui@gmail.com To: Heiko Stuebner , Mark Brown , Liam Girdwood Cc: Nicolas Frattaroli , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, bui duc phuc Subject: [PATCH v2 2/3] ASoC: rockchip: i2s-tdm: Use guard() for spin locks Date: Thu, 4 Jun 2026 10:35:52 +0700 Message-ID: <20260604033554.96996-3-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604033554.96996-1-phucduc.bui@gmail.com> References: <20260604033554.96996-1-phucduc.bui@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: bui duc phuc Clean up the code using guard() for spin locks. Merely code refactoring, and no behavior change. Signed-off-by: bui duc phuc --- NOTE: This patch is compile-tested only. sound/soc/rockchip/rockchip_i2s_tdm.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/sound/soc/rockchip/rockchip_i2s_tdm.c b/sound/soc/rockchip/roc= kchip_i2s_tdm.c index fc52149ed6ae..3f3db28b8940 100644 --- a/sound/soc/rockchip/rockchip_i2s_tdm.c +++ b/sound/soc/rockchip/rockchip_i2s_tdm.c @@ -285,9 +285,8 @@ static void rockchip_snd_txrxctrl(struct snd_pcm_substr= eam *substream, struct snd_soc_dai *dai, int on) { struct rk_i2s_tdm_dev *i2s_tdm =3D to_info(dai); - unsigned long flags; =20 - spin_lock_irqsave(&i2s_tdm->lock, flags); + guard(spinlock_irqsave)(&i2s_tdm->lock); if (on) { if (substream->stream =3D=3D SNDRV_PCM_STREAM_PLAYBACK) rockchip_enable_tde(i2s_tdm->regmap); @@ -313,7 +312,6 @@ static void rockchip_snd_txrxctrl(struct snd_pcm_substr= eam *substream, I2S_CLR_TXC | I2S_CLR_RXC); } } - spin_unlock_irqrestore(&i2s_tdm->lock, flags); } =20 static void rockchip_snd_txctrl(struct rk_i2s_tdm_dev *i2s_tdm, int on) @@ -587,12 +585,11 @@ static int rockchip_i2s_trcm_mode(struct snd_pcm_subs= tream *substream, unsigned int fmt) { struct rk_i2s_tdm_dev *i2s_tdm =3D to_info(dai); - unsigned long flags; =20 if (!i2s_tdm->clk_trcm) return 0; =20 - spin_lock_irqsave(&i2s_tdm->lock, flags); + guard(spinlock_irqsave)(&i2s_tdm->lock); if (i2s_tdm->refcount) rockchip_i2s_tdm_xfer_pause(substream, i2s_tdm); =20 @@ -614,7 +611,6 @@ static int rockchip_i2s_trcm_mode(struct snd_pcm_substr= eam *substream, =20 if (i2s_tdm->refcount) rockchip_i2s_tdm_xfer_resume(substream, i2s_tdm); - spin_unlock_irqrestore(&i2s_tdm->lock, flags); =20 return 0; } --=20 2.43.0 From nobody Mon Jun 8 06:35:53 2026 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7B74C3AE1A6 for ; Thu, 4 Jun 2026 03:36:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780544183; cv=none; b=E2ReDL/E0FNHYLy0yqvjTyNo79apFYAwG/PPmTWwfy62F+MWvQTu8KZkZE1k3jifBkSGRdQ4aaeVZ730KgucEGJF5MdKobe1td/AIOmDDk2Tm6IhxxMcei4ZzpGJtD8A0GoxwKhTkMbQU+lDTIuuyXaw7IyFvfs5jQtW7d7J5Ss= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780544183; c=relaxed/simple; bh=e4QZEWu0LaYxNAjrUyyjcA7cClGJIINulv5Tp/fj0Ok=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=a/MGCEHR0raFcup3lI4X58zy2ugWYvyrPp8rdA88p3H4GX/ixqzIfvTQxIpe3HtuXobtEYvl44aOPRN7H75pfGs++1D7Z2tH1KWXx8ZoqJjXUViV7XKd44hLKT0d0Ps51gMPabaeLrJnqUdDSyaxb2UHDVOBmdjc8UEvaVfszq8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=UtYUBYdF; arc=none smtp.client-ip=209.85.210.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UtYUBYdF" Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-842338c18e0so161654b3a.1 for ; Wed, 03 Jun 2026 20:36:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780544181; x=1781148981; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6nO3aH+rs1DO+SPkK+tgw7RxXFDKMNno/ViWk7zADc0=; b=UtYUBYdFRxUoDVyHq+NN0r/Fbwy+SChvyC6OhTjooPN6XI1M2LVJpF36tl3OqqTNCR p9HSGzYcaaDIeWvdkz5JvHJvRRIlyim9bOWnzO8Jj6KLn3gQwTxaIkzUtg5/qKcIt/y2 sjYxgWbMTZCgTGHpfP/WOESFUM7nHsz8kbgskCAcbgH/TT9y5FQLLHsCPQZeFiWuDl+V lQifPl3KAjPItXbQOCOS2RGje4MF7z4r1t+Mswhz/todRBmwv3Q+fkSOYL4GmBFNbFRA tNj+VAM1qyYYGWmcEamv7zivEk5wFwrFNJ9SAGvvur6vtsnUwZEuALK7fmRRxDXVgvjT RjHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780544181; x=1781148981; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6nO3aH+rs1DO+SPkK+tgw7RxXFDKMNno/ViWk7zADc0=; b=LRvRrOXbw01R6qZlTicEraEuPwVHpn4nDE6H88Zfzd4Mu+1y8eKM95r0jQxlJ10Ybz Qe6q32VSFE9Asll6EZ3jJdXjbflOjLbNlFRVJmylMOpqcv1udVDKyCf4lo9Gj7di83dz 7m216Z+AL6suADAK2hD0xj6o6SRBkB2UYJujl/ZrVYXYyx6jhCvUZwKz21m1/i1YXo59 QbbA0J9T8GPMZ/K2LzGL6duYFyZE3Lj3uzDww+EBSepXOU7H/euOYGz4lXza3PT0C8Tz lz8Kq/oDr3lgB45zHWYYIaU8r0D4uu10RBJ4LA7T3ShELvy0M71EMweiVOfpVAAap3/u LfZA== X-Forwarded-Encrypted: i=1; AFNElJ+I/WOQz5CPLsBMJfEo3Vgw44F3/z4DS+EKFvlbrJfxSyCdx1h2jCOUF7RCs8UWltkDpkq14JcrIlAwiMo=@vger.kernel.org X-Gm-Message-State: AOJu0Yyy5QJmuL8U5fLI7U/o8LaskQ33A99y9WhW8wh1r9h/AeAh777G poIYviyNeGHMTHAnJUF1l9ZuWOtxQcxcAne8QkvfkE8mxps/yr189bxE X-Gm-Gg: Acq92OG7c4CbDM5KfkIMwplJxdiE3dMGEn9OfgxGH55BnrYFc20nspYXklMhyFjixLF +asYPr25UtuaiTFnrJyK0Z5BwA0JiY02L1u3Zx0I1b8SPRtUjIlkejXEepPBxzvfNsZYAP2NCC3 gghmz71CQpFa+DhKCHNTwxboag5/gLd4ObC134jws/oPE8ROw/oeZ6tExmv7zXyjP46h7BElbA9 u4LGSD2+cFbkbr0ZWTpRckAya9QaYHu/7Kw7Z0SZDQPDs7vS0HfikUidNhxAghcEoO673ZNLk/2 Dsv8CWyEvsObATJgVz3Br0/+teVdNg7ijSydfLSQGamsNoke5RDcM8lW4FWgrSfFJrAZq5ge87x e9YZXcubMFjiP9xvUpCX1la2vQ3YWerF2ANwwmlqn9zXTOKzVkZxTt84DuHSnbsfK+XqCxgQBSf WJMBKTJA6Jp8iIZccSaLEOXDAbqkHmEvjtejWmthQhieRgd4k9qC86KxVpbzOwpMqxGsnpNXu8T UZ5JTo= X-Received: by 2002:a05:6a00:6c9d:b0:842:708f:39a6 with SMTP id d2e1a72fcca58-84284c4aa40mr5735294b3a.10.1780544180694; Wed, 03 Jun 2026 20:36:20 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428221a7e9sm5539745b3a.11.2026.06.03.20.36.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jun 2026 20:36:20 -0700 (PDT) From: phucduc.bui@gmail.com To: Heiko Stuebner , Mark Brown , Liam Girdwood Cc: Nicolas Frattaroli , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, bui duc phuc Subject: [PATCH v2 3/3] ASoC: rockchip: rockchip_sai: Use guard() for spin locks Date: Thu, 4 Jun 2026 10:35:53 +0700 Message-ID: <20260604033554.96996-4-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604033554.96996-1-phucduc.bui@gmail.com> References: <20260604033554.96996-1-phucduc.bui@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: bui duc phuc Clean up the code using guard() for spin locks. Merely code refactoring, and no behavior change. Signed-off-by: bui duc phuc --- NOTE: This patch is compile-tested only. Changes in v2: - Remove the unnecessary err_pm_put label in rockchip_sai_hw_params(). sound/soc/rockchip/rockchip_sai.c | 262 +++++++++++++++--------------- 1 file changed, 129 insertions(+), 133 deletions(-) diff --git a/sound/soc/rockchip/rockchip_sai.c b/sound/soc/rockchip/rockchi= p_sai.c index ed393e5034a4..a195e96fed0a 100644 --- a/sound/soc/rockchip/rockchip_sai.c +++ b/sound/soc/rockchip/rockchip_sai.c @@ -18,7 +18,6 @@ #include #include #include - #include "rockchip_sai.h" =20 #define DRV_NAME "rockchip-sai" @@ -216,14 +215,12 @@ static void rockchip_sai_xfer_clk_stop_and_wait(struc= t rk_sai_dev *sai, unsigned static int rockchip_sai_runtime_suspend(struct device *dev) { struct rk_sai_dev *sai =3D dev_get_drvdata(dev); - unsigned long flags; =20 rockchip_sai_fsync_lost_detect(sai, 0); rockchip_sai_fsync_err_detect(sai, 0); =20 - spin_lock_irqsave(&sai->xfer_lock, flags); - rockchip_sai_xfer_clk_stop_and_wait(sai, NULL); - spin_unlock_irqrestore(&sai->xfer_lock, flags); + scoped_guard(spinlock_irqsave, &sai->xfer_lock) + rockchip_sai_xfer_clk_stop_and_wait(sai, NULL); =20 regcache_cache_only(sai->regmap, true); /* @@ -483,7 +480,6 @@ static int rockchip_sai_set_fmt(struct snd_soc_dai *dai= , unsigned int fmt) struct rk_sai_dev *sai =3D snd_soc_dai_get_drvdata(dai); unsigned int mask =3D 0, val =3D 0; unsigned int clk_gates; - unsigned long flags; int ret =3D 0; =20 pm_runtime_get_sync(dai->dev); @@ -499,56 +495,56 @@ static int rockchip_sai_set_fmt(struct snd_soc_dai *d= ai, unsigned int fmt) sai->is_master_mode =3D false; break; default: - ret =3D -EINVAL; - goto err_pm_put; - } - - spin_lock_irqsave(&sai->xfer_lock, flags); - rockchip_sai_xfer_clk_stop_and_wait(sai, &clk_gates); - if (sai->initialized) { - if (sai->has_capture && sai->has_playback) - rockchip_sai_xfer_stop(sai, -1); - else if (sai->has_capture) - rockchip_sai_xfer_stop(sai, SNDRV_PCM_STREAM_CAPTURE); - else - rockchip_sai_xfer_stop(sai, SNDRV_PCM_STREAM_PLAYBACK); - } else { - rockchip_sai_clear(sai, 0); - sai->initialized =3D true; + pm_runtime_put(dai->dev); + return -EINVAL; } =20 - regmap_update_bits(sai->regmap, SAI_CKR, mask, val); + scoped_guard(spinlock_irqsave, &sai->xfer_lock) { + rockchip_sai_xfer_clk_stop_and_wait(sai, &clk_gates); + if (sai->initialized) { + if (sai->has_capture && sai->has_playback) + rockchip_sai_xfer_stop(sai, -1); + else if (sai->has_capture) + rockchip_sai_xfer_stop(sai, SNDRV_PCM_STREAM_CAPTURE); + else + rockchip_sai_xfer_stop(sai, SNDRV_PCM_STREAM_PLAYBACK); + } else { + rockchip_sai_clear(sai, 0); + sai->initialized =3D true; + } =20 - mask =3D SAI_CKR_CKP_MASK | SAI_CKR_FSP_MASK; - switch (fmt & SND_SOC_DAIFMT_INV_MASK) { - case SND_SOC_DAIFMT_NB_NF: - val =3D SAI_CKR_CKP_NORMAL | SAI_CKR_FSP_NORMAL; - break; - case SND_SOC_DAIFMT_NB_IF: - val =3D SAI_CKR_CKP_NORMAL | SAI_CKR_FSP_INVERTED; - break; - case SND_SOC_DAIFMT_IB_NF: - val =3D SAI_CKR_CKP_INVERTED | SAI_CKR_FSP_NORMAL; - break; - case SND_SOC_DAIFMT_IB_IF: - val =3D SAI_CKR_CKP_INVERTED | SAI_CKR_FSP_INVERTED; - break; - default: - ret =3D -EINVAL; - goto err_xfer_unlock; - } + regmap_update_bits(sai->regmap, SAI_CKR, mask, val); + + mask =3D SAI_CKR_CKP_MASK | SAI_CKR_FSP_MASK; + switch (fmt & SND_SOC_DAIFMT_INV_MASK) { + case SND_SOC_DAIFMT_NB_NF: + val =3D SAI_CKR_CKP_NORMAL | SAI_CKR_FSP_NORMAL; + break; + case SND_SOC_DAIFMT_NB_IF: + val =3D SAI_CKR_CKP_NORMAL | SAI_CKR_FSP_INVERTED; + break; + case SND_SOC_DAIFMT_IB_NF: + val =3D SAI_CKR_CKP_INVERTED | SAI_CKR_FSP_NORMAL; + break; + case SND_SOC_DAIFMT_IB_IF: + val =3D SAI_CKR_CKP_INVERTED | SAI_CKR_FSP_INVERTED; + break; + default: + ret =3D -EINVAL; + break; + } =20 - regmap_update_bits(sai->regmap, SAI_CKR, mask, val); + if (ret =3D=3D 0) { + regmap_update_bits(sai->regmap, SAI_CKR, mask, val); + rockchip_sai_fmt_create(sai, fmt); + } =20 - rockchip_sai_fmt_create(sai, fmt); + if (clk_gates) + regmap_update_bits(sai->regmap, SAI_XFER, + SAI_XFER_CLK_MASK | SAI_XFER_FSS_MASK, + clk_gates); + } =20 -err_xfer_unlock: - if (clk_gates) - regmap_update_bits(sai->regmap, SAI_XFER, - SAI_XFER_CLK_MASK | SAI_XFER_FSS_MASK, - clk_gates); - spin_unlock_irqrestore(&sai->xfer_lock, flags); -err_pm_put: pm_runtime_put(dai->dev); =20 return ret; @@ -564,7 +560,6 @@ static int rockchip_sai_hw_params(struct snd_pcm_substr= eam *substream, unsigned int ch_per_lane, slot_width; unsigned int val, fscr, reg; unsigned int lanes, req_lanes; - unsigned long flags; int ret =3D 0; =20 if (!rockchip_sai_stream_valid(substream, dai)) @@ -591,8 +586,8 @@ static int rockchip_sai_hw_params(struct snd_pcm_substr= eam *substream, dev_err(sai->dev, "not enough lanes (%d) for requested number of %s cha= nnels (%d)\n", lanes, reg =3D=3D SAI_TXCR ? "playback" : "capture", params_channels(params)); - ret =3D -EINVAL; - goto err_pm_put; + pm_runtime_put(sai->dev); + return -EINVAL; } else { lanes =3D req_lanes; } @@ -618,84 +613,88 @@ static int rockchip_sai_hw_params(struct snd_pcm_subs= tream *substream, val =3D SAI_XCR_VDW(32); break; default: - ret =3D -EINVAL; - goto err_pm_put; + pm_runtime_put(sai->dev); + return -EINVAL; } =20 val |=3D SAI_XCR_CSR(lanes); =20 - spin_lock_irqsave(&sai->xfer_lock, flags); - - regmap_update_bits(sai->regmap, reg, SAI_XCR_VDW_MASK | SAI_XCR_CSR_MASK,= val); + scoped_guard(spinlock_irqsave, &sai->xfer_lock) { =20 - if (!sai->is_tdm) - regmap_update_bits(sai->regmap, reg, SAI_XCR_SBW_MASK, - SAI_XCR_SBW(params_physical_width(params))); + regmap_update_bits(sai->regmap, reg, SAI_XCR_VDW_MASK | SAI_XCR_CSR_MASK= , val); =20 - regmap_read(sai->regmap, reg, &val); + if (!sai->is_tdm) + regmap_update_bits(sai->regmap, reg, SAI_XCR_SBW_MASK, + SAI_XCR_SBW(params_physical_width(params))); =20 - slot_width =3D SAI_XCR_SBW_V(val); - ch_per_lane =3D params_channels(params) / lanes; + regmap_read(sai->regmap, reg, &val); =20 - regmap_update_bits(sai->regmap, reg, SAI_XCR_SNB_MASK, - SAI_XCR_SNB(ch_per_lane)); + slot_width =3D SAI_XCR_SBW_V(val); + ch_per_lane =3D params_channels(params) / lanes; =20 - fscr =3D SAI_FSCR_FW(sai->fw_ratio * slot_width * ch_per_lane); + regmap_update_bits(sai->regmap, reg, SAI_XCR_SNB_MASK, + SAI_XCR_SNB(ch_per_lane)); =20 - switch (sai->fpw) { - case FPW_ONE_BCLK_WIDTH: - fscr |=3D SAI_FSCR_FPW(1); - break; - case FPW_ONE_SLOT_WIDTH: - fscr |=3D SAI_FSCR_FPW(slot_width); - break; - case FPW_HALF_FRAME_WIDTH: - fscr |=3D SAI_FSCR_FPW(sai->fw_ratio * slot_width * ch_per_lane / 2); - break; - default: - dev_err(sai->dev, "Invalid Frame Pulse Width %d\n", sai->fpw); - ret =3D -EINVAL; - goto err_xfer_unlock; - } + fscr =3D SAI_FSCR_FW(sai->fw_ratio * slot_width * ch_per_lane); =20 - regmap_update_bits(sai->regmap, SAI_FSCR, - SAI_FSCR_FW_MASK | SAI_FSCR_FPW_MASK, fscr); - - if (sai->is_master_mode) { - bclk_rate =3D sai->fw_ratio * slot_width * ch_per_lane * params_rate(par= ams); - ret =3D clk_set_rate(sai->mclk, sai->mclk_rate); - if (ret) { - dev_err(sai->dev, "Failed to set mclk to %u: %pe\n", - sai->mclk_rate, ERR_PTR(ret)); - goto err_xfer_unlock; - } - - mclk_rate =3D clk_get_rate(sai->mclk); - if (mclk_rate < bclk_rate) { - dev_err(sai->dev, "Mismatch mclk: %u, at least %u\n", - mclk_rate, bclk_rate); + switch (sai->fpw) { + case FPW_ONE_BCLK_WIDTH: + fscr |=3D SAI_FSCR_FPW(1); + break; + case FPW_ONE_SLOT_WIDTH: + fscr |=3D SAI_FSCR_FPW(slot_width); + break; + case FPW_HALF_FRAME_WIDTH: + fscr |=3D SAI_FSCR_FPW(sai->fw_ratio * slot_width * ch_per_lane / 2); + break; + default: + dev_err(sai->dev, "Invalid Frame Pulse Width %d\n", sai->fpw); ret =3D -EINVAL; - goto err_xfer_unlock; + break; } =20 - div_bclk =3D DIV_ROUND_CLOSEST(mclk_rate, bclk_rate); - mclk_req_rate =3D bclk_rate * div_bclk; - - if (mclk_rate < mclk_req_rate - CLK_SHIFT_RATE_HZ_MAX || - mclk_rate > mclk_req_rate + CLK_SHIFT_RATE_HZ_MAX) { - dev_err(sai->dev, "Mismatch mclk: %u, expected %u (+/- %dHz)\n", - mclk_rate, mclk_req_rate, CLK_SHIFT_RATE_HZ_MAX); - ret =3D -EINVAL; - goto err_xfer_unlock; + if (ret =3D=3D 0) { + regmap_update_bits(sai->regmap, SAI_FSCR, + SAI_FSCR_FW_MASK | SAI_FSCR_FPW_MASK, fscr); + + if (sai->is_master_mode) { + bclk_rate =3D sai->fw_ratio * slot_width * + ch_per_lane * params_rate(params); + ret =3D clk_set_rate(sai->mclk, sai->mclk_rate); + if (ret) + dev_err(sai->dev, "Failed to set mclk to %u: %pe\n", + sai->mclk_rate, ERR_PTR(ret)); + else { + mclk_rate =3D clk_get_rate(sai->mclk); + if (mclk_rate < bclk_rate) { + dev_err(sai->dev, "Mismatch mclk: %u, at least %u\n", + mclk_rate, bclk_rate); + ret =3D -EINVAL; + } else { + + div_bclk =3D DIV_ROUND_CLOSEST(mclk_rate, bclk_rate); + mclk_req_rate =3D bclk_rate * div_bclk; + + if (mclk_rate < + mclk_req_rate - CLK_SHIFT_RATE_HZ_MAX || + mclk_rate > + mclk_req_rate + CLK_SHIFT_RATE_HZ_MAX) { + dev_err(sai->dev, + "Mismatch mclk: %u, expected %u (+/- %dHz)\n", + mclk_rate, mclk_req_rate, + CLK_SHIFT_RATE_HZ_MAX); + ret =3D -EINVAL; + } else + regmap_update_bits(sai->regmap, + SAI_CKR, + SAI_CKR_MDIV_MASK, + SAI_CKR_MDIV(div_bclk)); + } + } + } } - - regmap_update_bits(sai->regmap, SAI_CKR, SAI_CKR_MDIV_MASK, - SAI_CKR_MDIV(div_bclk)); } =20 -err_xfer_unlock: - spin_unlock_irqrestore(&sai->xfer_lock, flags); -err_pm_put: pm_runtime_put(sai->dev); =20 return ret; @@ -705,7 +704,6 @@ static int rockchip_sai_prepare(struct snd_pcm_substrea= m *substream, struct snd_soc_dai *dai) { struct rk_sai_dev *sai =3D snd_soc_dai_get_drvdata(dai); - unsigned long flags; =20 if (!rockchip_sai_stream_valid(substream, dai)) return 0; @@ -726,13 +724,12 @@ static int rockchip_sai_prepare(struct snd_pcm_substr= eam *substream, * udelay falls short. */ udelay(20); - spin_lock_irqsave(&sai->xfer_lock, flags); - regmap_update_bits(sai->regmap, SAI_XFER, - SAI_XFER_CLK_MASK | - SAI_XFER_FSS_MASK, - SAI_XFER_CLK_EN | - SAI_XFER_FSS_EN); - spin_unlock_irqrestore(&sai->xfer_lock, flags); + scoped_guard(spinlock_irqsave, &sai->xfer_lock) + regmap_update_bits(sai->regmap, SAI_XFER, + SAI_XFER_CLK_MASK | + SAI_XFER_FSS_MASK, + SAI_XFER_CLK_EN | + SAI_XFER_FSS_EN); } =20 rockchip_sai_fsync_lost_detect(sai, 1); @@ -915,7 +912,6 @@ static int rockchip_sai_set_tdm_slot(struct snd_soc_dai= *dai, int slots, int slot_width) { struct rk_sai_dev *sai =3D snd_soc_dai_get_drvdata(dai); - unsigned long flags; unsigned int clk_gates; int sw =3D slot_width; =20 @@ -931,16 +927,16 @@ static int rockchip_sai_set_tdm_slot(struct snd_soc_d= ai *dai, return -EINVAL; =20 pm_runtime_get_sync(dai->dev); - spin_lock_irqsave(&sai->xfer_lock, flags); - rockchip_sai_xfer_clk_stop_and_wait(sai, &clk_gates); - regmap_update_bits(sai->regmap, SAI_TXCR, SAI_XCR_SBW_MASK, - SAI_XCR_SBW(sw)); - regmap_update_bits(sai->regmap, SAI_RXCR, SAI_XCR_SBW_MASK, - SAI_XCR_SBW(sw)); - regmap_update_bits(sai->regmap, SAI_XFER, - SAI_XFER_CLK_MASK | SAI_XFER_FSS_MASK, - clk_gates); - spin_unlock_irqrestore(&sai->xfer_lock, flags); + scoped_guard(spinlock_irqsave, &sai->xfer_lock) { + rockchip_sai_xfer_clk_stop_and_wait(sai, &clk_gates); + regmap_update_bits(sai->regmap, SAI_TXCR, SAI_XCR_SBW_MASK, + SAI_XCR_SBW(sw)); + regmap_update_bits(sai->regmap, SAI_RXCR, SAI_XCR_SBW_MASK, + SAI_XCR_SBW(sw)); + regmap_update_bits(sai->regmap, SAI_XFER, + SAI_XFER_CLK_MASK | SAI_XFER_FSS_MASK, + clk_gates); + } pm_runtime_put(dai->dev); =20 return 0; --=20 2.43.0