From nobody Mon Sep 28 12:32:55 2026 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (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 ABC942BE7CD for ; Fri, 21 Aug 2026 12:30:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787315443; cv=none; b=TpfJE81nevO3SvJPF7swQOO+VOUCZ9Y7ZfrV65LMKY46+ipWLDV1rEBNahSlsP660uSuHU7g+0PYczBK7TSkvEKIax8YiOytfZPRfSnEJyhldgmEQ8nbDFfQy03JbJhqwPr/KMbKw3KFcmB/5AgZC6mxX16UJJR6kRRMOb2N4J4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787315443; c=relaxed/simple; bh=YdGYLhvtvptCpYDC3ICVM4oOhiZ9/gCcjjUKAA8PwCM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qYD9qiGI3n6zUiML/zJ+Rg9f4s6YFMSjLR9Na3to+6Phon6iC+ft9wej6nksiK3qPimcTrmLFIMaoq1DevbDyCWsHn7ucPuT+8Rr4PGUWrCbLFkVgDSc0E2swqTFxmpEZ0QbdDMQ6BPXGW9p/RrcPAvf7s9BdbrcP9yIreY9nlc= 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=QplJiDqv; arc=none smtp.client-ip=209.85.214.181 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="QplJiDqv" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-2ce7d2adef4so13237675ad.3 for ; Fri, 21 Aug 2026 05:30:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787315441; x=1787920241; 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:content-type; bh=xAiRO/oCYlRl0/keklqXsoT6bN4V7lIX81Jp9VCDRm0=; b=QplJiDqv7sfsoHPHMCQfkvPpIA4sXQxyXPNb0srqAhxsRI1GhyVLkLDwwSDL5wXv0P K/MbOw9Smnrh9r1ODdDiVZcFaVbgzi5tzPxD/vQml5L0CbeoXDDjsXlaozpbzENW/K0H AM1dORdxSzDEeX6eLtAWhmwLz7BHZGBqvjgOXcbRrQVhjKa9wfmKJA18CEjKgk8OOsKm 9VQJh8HqBH1x9abup1ck4bMxiz4qnAKDNp/WWQvy4kAeYYnMS4t9DLcErNDWgSgE4KbI uPlHNF8WFMY8L604hOfChpmLghIcWJPfyNyfjy1qBbisRjJnL9ef5AJ0eXzJ0Jz04sYf uHvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787315441; x=1787920241; 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:content-type; bh=xAiRO/oCYlRl0/keklqXsoT6bN4V7lIX81Jp9VCDRm0=; b=pfyF1Z2rmsBZAAIjJYtvrUMHJEUPf1WN+WHAXXAnqtKJHh50uE4/TiDlYdn8rhCYiB mkq/aXjAmG2tidsNIGXN5sN8IhXQFaLyXfhATuxTaCiQsw9agsmAKgXWV+dTsWRFGvzd H8HREpuq0ZHhbdciU10xjfLuig1zfoMhbxbZ+Pn17NvdnX4mMHOXK38bHQe+onp9am/7 xn6UsCv2R8WUwX2beu29HYdhjOY+meNJlPliIo15DvKYbeJjo+CqEfC82+hyx8rU9wOW V9BjKQODYuXmk5LUdXIUj6B6YJJPepSbN6s6lIOHe5/6xLoijOSUnC55uDeESWM0wtJV nPJg== X-Forwarded-Encrypted: i=1; AHgh+RrzCnXMlm875Ny6/jQcS9eCSScOxy1QUx4ry6zyzwgqzWYsytlRg9XIy82HZoWfEeyWpgoRc4VtW1XyEtQ=@vger.kernel.org X-Gm-Message-State: AFuF++l2XG8r2nNtqthnHTnmxYT9stO8AdVI/jKjDh2irUDeUBtkhmow gaNFitucCXuBTBBeRomp+F5zjmQ8oPMU5YRyM4tBdXkOsyhPAP08GZeu X-Gm-Gg: AR+sD12UGbwBB4iGeYb6j1h4A5BnUEeSR83SD1f7equk+E+8tNB5ML1OobPTd770kmc x57tS/fgX6810A82UTQtVUrEZclOYcdaNMwTmCAGpM7mjh9uNYlx5+QNRMmgq7n1uALJLNpB7wV xxtOiAKD6CwwXTs+UUALNIEeLtVaYf2hBu8tPLx1ObkrP8jYaEhOSD2NjN4Hp03o627E3udKkJ9 04n0KGLBrbWVwkz1JuNCn5MgdWQ46N0GNYxgPjPLqNyq+awwMGz7ij7wRro9jtO0JbGqCpIybuZ ZGPkd1j306U199cZBt5hoHKYEfa+FylBwFqrYQ1xSs0jB2bN9leXbo3HD2jqGTn9CvyLsx9VMXF LV2UD6C4EhOTT+2VsCOAN+UFGJ0oPv6cN/G2V1CevpY3M8kEAPYgvYkWTTAgn5BvGcdqtNaOX+C RyyLxP3ideVlQ0qbPnJkr8LlZL+24IlUnatUaQl/Vg5wh+9aIH6apx1ezXbpEbns9WTQJzz0kEB I1hz03vZNCazrccZ6UP6QIAVZyPhxO0mBXLkfbzLXCzOFyDF4mISwnFvIl/uSmXYZWksyIF00eZ 4Y5BFz/tykeG/7w= X-Received: by 2002:a17:902:d544:b0:2d6:2901:6265 with SMTP id d9443c01a7336-2d64adeb93emr123774635ad.2.1787315440957; Fri, 21 Aug 2026 05:30:40 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d62e36e1besm18302235ad.53.2026.08.21.05.30.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2026 05:30:40 -0700 (PDT) From: phucduc.bui@gmail.com To: Mark Brown , Matthias Brugger Cc: Liam Girdwood , AngeloGioacchino Del Regno , Jaroslav Kysela , Takashi Iwai , Cezary Rojewski , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, bui duc phuc Subject: [PATCH v2 1/4] ASoC: mediatek: mt8186: fix APLL mux setting error handling Date: Fri, 21 Aug 2026 19:30:18 +0700 Message-ID: <20260821123021.41390-2-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821123021.41390-1-phucduc.bui@gmail.com> References: <20260821123021.41390-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 The APLL mux setup functions return immediately when a clock operation fails, without undoing the clock changes already made. This can leave clocks enabled or muxes configured to an unexpected parent. Restore the affected muxes to CLK26M and disable previously enabled clocks on error before propagating the original error. Fixes: 55b423d5623c ("ASoC: mediatek: mt8186: support audio clock control i= n platform driver") Signed-off-by: bui duc phuc --- sound/soc/mediatek/mt8186/mt8186-afe-clk.c | 50 ++++++++++++++++------ 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/sound/soc/mediatek/mt8186/mt8186-afe-clk.c b/sound/soc/mediate= k/mt8186/mt8186-afe-clk.c index daaca36a2d08..aa8b2eaf7b95 100644 --- a/sound/soc/mediatek/mt8186/mt8186-afe-clk.c +++ b/sound/soc/mediatek/mt8186/mt8186-afe-clk.c @@ -98,7 +98,7 @@ static int apll1_mux_setting(struct mtk_base_afe *afe, bo= ol enable) if (ret) { dev_err(afe->dev, "%s clk_prepare_enable %s fail %d\n", __func__, aud_clks[CLK_TOP_MUX_AUD_1], ret); - return ret; + goto ERR_ENABLE_CLK_TOP_MUX_AUD_1; } ret =3D clk_set_parent(afe_priv->clk[CLK_TOP_MUX_AUD_1], afe_priv->clk[CLK_TOP_APLL1_CK]); @@ -106,7 +106,7 @@ static int apll1_mux_setting(struct mtk_base_afe *afe, = bool enable) dev_err(afe->dev, "%s clk_set_parent %s-%s fail %d\n", __func__, aud_clks[CLK_TOP_MUX_AUD_1], aud_clks[CLK_TOP_APLL1_CK], ret); - return ret; + goto ERR_SELECT_CLK_TOP_MUX_AUD_1; } =20 /* 180.6336 / 8 =3D 22.5792MHz */ @@ -114,7 +114,7 @@ static int apll1_mux_setting(struct mtk_base_afe *afe, = bool enable) if (ret) { dev_err(afe->dev, "%s clk_prepare_enable %s fail %d\n", __func__, aud_clks[CLK_TOP_MUX_AUD_ENG1], ret); - return ret; + goto ERR_ENABLE_CLK_TOP_MUX_AUD_ENG1; } ret =3D clk_set_parent(afe_priv->clk[CLK_TOP_MUX_AUD_ENG1], afe_priv->clk[CLK_TOP_APLL1_D8]); @@ -122,7 +122,7 @@ static int apll1_mux_setting(struct mtk_base_afe *afe, = bool enable) dev_err(afe->dev, "%s clk_set_parent %s-%s fail %d\n", __func__, aud_clks[CLK_TOP_MUX_AUD_ENG1], aud_clks[CLK_TOP_APLL1_D8], ret); - return ret; + goto ERR_SELECT_CLK_TOP_MUX_AUD_ENG1; } } else { ret =3D clk_set_parent(afe_priv->clk[CLK_TOP_MUX_AUD_ENG1], @@ -131,7 +131,7 @@ static int apll1_mux_setting(struct mtk_base_afe *afe, = bool enable) dev_err(afe->dev, "%s clk_set_parent %s-%s fail %d\n", __func__, aud_clks[CLK_TOP_MUX_AUD_ENG1], aud_clks[CLK_CLK26M], ret); - return ret; + goto EXIT; } clk_disable_unprepare(afe_priv->clk[CLK_TOP_MUX_AUD_ENG1]); =20 @@ -141,12 +141,25 @@ static int apll1_mux_setting(struct mtk_base_afe *afe= , bool enable) dev_err(afe->dev, "%s clk_set_parent %s-%s fail %d\n", __func__, aud_clks[CLK_TOP_MUX_AUD_1], aud_clks[CLK_CLK26M], ret); - return ret; + goto EXIT; } clk_disable_unprepare(afe_priv->clk[CLK_TOP_MUX_AUD_1]); } =20 return 0; + +ERR_SELECT_CLK_TOP_MUX_AUD_ENG1: + clk_set_parent(afe_priv->clk[CLK_TOP_MUX_AUD_ENG1], + afe_priv->clk[CLK_CLK26M]); + clk_disable_unprepare(afe_priv->clk[CLK_TOP_MUX_AUD_ENG1]); +ERR_ENABLE_CLK_TOP_MUX_AUD_ENG1: +ERR_SELECT_CLK_TOP_MUX_AUD_1: + clk_set_parent(afe_priv->clk[CLK_TOP_MUX_AUD_1], + afe_priv->clk[CLK_CLK26M]); + clk_disable_unprepare(afe_priv->clk[CLK_TOP_MUX_AUD_1]); +ERR_ENABLE_CLK_TOP_MUX_AUD_1: +EXIT: + return ret; } =20 static int apll2_mux_setting(struct mtk_base_afe *afe, bool enable) @@ -159,7 +172,7 @@ static int apll2_mux_setting(struct mtk_base_afe *afe, = bool enable) if (ret) { dev_err(afe->dev, "%s clk_prepare_enable %s fail %d\n", __func__, aud_clks[CLK_TOP_MUX_AUD_2], ret); - return ret; + goto ERR_ENABLE_CLK_TOP_MUX_AUD_2; } ret =3D clk_set_parent(afe_priv->clk[CLK_TOP_MUX_AUD_2], afe_priv->clk[CLK_TOP_APLL2_CK]); @@ -167,7 +180,7 @@ static int apll2_mux_setting(struct mtk_base_afe *afe, = bool enable) dev_err(afe->dev, "%s clk_set_parent %s-%s fail %d\n", __func__, aud_clks[CLK_TOP_MUX_AUD_2], aud_clks[CLK_TOP_APLL2_CK], ret); - return ret; + goto ERR_SELECT_CLK_TOP_MUX_AUD_2; } =20 /* 196.608 / 8 =3D 24.576MHz */ @@ -175,7 +188,7 @@ static int apll2_mux_setting(struct mtk_base_afe *afe, = bool enable) if (ret) { dev_err(afe->dev, "%s clk_prepare_enable %s fail %d\n", __func__, aud_clks[CLK_TOP_MUX_AUD_ENG2], ret); - return ret; + goto ERR_ENABLE_CLK_TOP_MUX_AUD_ENG2; } ret =3D clk_set_parent(afe_priv->clk[CLK_TOP_MUX_AUD_ENG2], afe_priv->clk[CLK_TOP_APLL2_D8]); @@ -183,7 +196,7 @@ static int apll2_mux_setting(struct mtk_base_afe *afe, = bool enable) dev_err(afe->dev, "%s clk_set_parent %s-%s fail %d\n", __func__, aud_clks[CLK_TOP_MUX_AUD_ENG2], aud_clks[CLK_TOP_APLL2_D8], ret); - return ret; + goto ERR_SELECT_CLK_TOP_MUX_AUD_ENG2; } } else { ret =3D clk_set_parent(afe_priv->clk[CLK_TOP_MUX_AUD_ENG2], @@ -192,7 +205,7 @@ static int apll2_mux_setting(struct mtk_base_afe *afe, = bool enable) dev_err(afe->dev, "%s clk_set_parent %s-%s fail %d\n", __func__, aud_clks[CLK_TOP_MUX_AUD_ENG2], aud_clks[CLK_CLK26M], ret); - return ret; + goto EXIT; } clk_disable_unprepare(afe_priv->clk[CLK_TOP_MUX_AUD_ENG2]); =20 @@ -202,12 +215,25 @@ static int apll2_mux_setting(struct mtk_base_afe *afe= , bool enable) dev_err(afe->dev, "%s clk_set_parent %s-%s fail %d\n", __func__, aud_clks[CLK_TOP_MUX_AUD_2], aud_clks[CLK_CLK26M], ret); - return ret; + goto EXIT; } clk_disable_unprepare(afe_priv->clk[CLK_TOP_MUX_AUD_2]); } =20 return 0; + +ERR_SELECT_CLK_TOP_MUX_AUD_ENG2: + clk_set_parent(afe_priv->clk[CLK_TOP_MUX_AUD_ENG2], + afe_priv->clk[CLK_CLK26M]); + clk_disable_unprepare(afe_priv->clk[CLK_TOP_MUX_AUD_ENG2]); +ERR_ENABLE_CLK_TOP_MUX_AUD_ENG2: +ERR_SELECT_CLK_TOP_MUX_AUD_2: + clk_set_parent(afe_priv->clk[CLK_TOP_MUX_AUD_2], + afe_priv->clk[CLK_CLK26M]); + clk_disable_unprepare(afe_priv->clk[CLK_TOP_MUX_AUD_2]); +ERR_ENABLE_CLK_TOP_MUX_AUD_2: +EXIT: + return ret; } =20 int mt8186_afe_enable_cgs(struct mtk_base_afe *afe) --=20 2.43.0 From nobody Mon Sep 28 12:32:55 2026 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 3D19B3AE6FA for ; Fri, 21 Aug 2026 12:30:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787315449; cv=none; b=key9BOj4ok2o5M64zb7DBBFtgl/HEOCoCa61492ZUjdWYpongxJVGTAkNeI3eiqe2iGr7uXg7mu1Wczwqm1pOOQMpPKOwA9hykcKH8tjVYggeCEcpNTa8DYLEg0ozoyKrqeG3C3Gg+djTd+3f4FaVKyzxMVpv3oL+ERi1tJRz7E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787315449; c=relaxed/simple; bh=iXxLVjwMkWoyJknyoROrRBROEAewERLInffB9+kF+Aw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DvuEth40ToCWipKbmER75R7mYLXRAAEeY2FHBkICVt/zQsBzZkpSecBEwJtkPj+Okv68IYLhlQMTUxmCYgJtAacB4zEDaoLlsmaw3Pb6VCfFBSMES8XJBwI8+49c/CimH1DdpwcEr8jETR1Tfpi/A3f1mZ6ecTqtz7N3bjq+6WY= 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=pjuEzdpt; arc=none smtp.client-ip=209.85.214.176 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="pjuEzdpt" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2d5655cc850so11467135ad.3 for ; Fri, 21 Aug 2026 05:30:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787315447; x=1787920247; 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:content-type; bh=aYYHob6Ydur3f5fIO7z1CwtF7crP/M+VG3L/vmLd3WI=; b=pjuEzdptT0HJrEBgV8HAO0l6lg3UDvGXzLK5dS3uGSp41NlGjfryRSzV6DnAoMsAMz j7T8/EFqjfx3cu9NaNUBLkA8MIqEAVzQnkrjUJ90NKEGBLsVMmXG+6a4AhEBBJ3u6iQT 4fedV8kWQIoOCSlLHXXeU0w3YA24xB09qyEV0tzGfdNViA4qBU2IdaRZaNGHeiNigG15 RXC9dMRLl9hGo4XH3zKUfc+NosWoANNYy45cHJOv6jxBr/Q0eksWUl6lU31hPxHA9qIY 6nRfYALzrm00SvyS2j/TnTPrDNfuE9zs1aqE/hwgFRV/EprqxRKMnm1U0kad0ZW2hJ4o N9SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787315447; x=1787920247; 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:content-type; bh=aYYHob6Ydur3f5fIO7z1CwtF7crP/M+VG3L/vmLd3WI=; b=JoKA/MbVoBhOoPEBOkDkzv0VhKC4BsWrilst0DJ3Nj9sOBqFnKs/9nXuJ9tVhP0nCB t7VaIgDOw414WA8pAsC6iJI3VJ5nvJYC1tG5HdeV6j9aBomyFsj0v8GPrWIEkw3HFstj cjO/uXhZq3wW0I1x8L+6YByzQl6Uc1FDtg8J7G2Ag8cfVyGUz/ILY1jkkNmGkpNokPaE Gu1OrmO3TUB5aT3GCMBRiR5BS9qgS1zvVnZw+zqaBK/L9Z1VXgCo7Dx6uEZxVHncxpOe 0CKCdNnr6yN9cS4VXS6iPcaP4VsUwAGV/V/B+7QCvoW0LGNLpWBfIZKpuKj04Q43UmuI VYkQ== X-Forwarded-Encrypted: i=1; AHgh+RqhZlu+Tlwl6LSa2HYH2L2B8bsDfb/zPtLk4KWjewbN/pQNTxw5twXx6WaB1Qo6nxqPSI8H3ppeLnaW9G0=@vger.kernel.org X-Gm-Message-State: AFuF++k+SlMpUipdCQ51pkFgOpJ/CEU2ucx+/mCtX4x9qEEqnijpJyRO ky543kolPto9ZjGrnKkm2Imo8NoGOI3O/vG8LAdojwB9PhirR1nJQmVh X-Gm-Gg: AR+sD128KLzBrO84xqq1DW21fEV059aGdmsKbxrxINOsI+mX7dNagUZhmNVDdjwZHuR eQS4mep8IeyVObifN4ljSFuar8svFnI2WuV8RMXGqkQZ44Fpr5ZMF6iwr+oE2A+oyqdzlsLU6AI BbvgHG2nY7nbpN3bCjL2nQCpGyhX197jRhYzGzWfxb00XNGadqjXtgUVy4qTdTDvPQk42DVbJOv 6yahttx2RMd7i1eBJM9lF3MHH0ZE/V2lliE1SGcsQTSrmjnR0kzGEzjrmTgUx/8WcTaV7klGZJ7 YyGk4u35gKCGkXDvAizHqjRd9EsG1ZeK8I2IbI511Sh6hlZsUzi82CA4tZWuSMYw1G+iUPFcka5 ahEYadlzt5qTukY4/lAbwzTUXylXxbVu/+JQeG8MRs4c+xQ1p0/zsUoYZhsfQnlkiaYYZzcQl9N xdGP0YOlR/AZswJICrOKVkvuxcj+rmHpU8aJnb+ZtTpG0rvxAP5Kw0Qgd9wweri7JjITQimWrXE A0ViIg/ObpzP49PXiozSp43vYEXwwUeGAj5LYC7cNPyAOzKgfrcIoIFnBX792YvyTHLeX+cfUUb Wkz+D2gCzpTeJy8= X-Received: by 2002:a17:903:390d:b0:2c9:fb11:1bf4 with SMTP id d9443c01a7336-2d64af4eea9mr121346745ad.7.1787315446434; Fri, 21 Aug 2026 05:30:46 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d62e36e1besm18302235ad.53.2026.08.21.05.30.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2026 05:30:46 -0700 (PDT) From: phucduc.bui@gmail.com To: Mark Brown , Matthias Brugger Cc: Liam Girdwood , AngeloGioacchino Del Regno , Jaroslav Kysela , Takashi Iwai , Cezary Rojewski , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, bui duc phuc Subject: [PATCH v2 2/4] ASoC: mediatek: mt8186: Fix AFE clock error handling Date: Fri, 21 Aug 2026 19:30:19 +0700 Message-ID: <20260821123021.41390-3-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821123021.41390-1-phucduc.bui@gmail.com> References: <20260821123021.41390-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 The error paths in mt8186_afe_enable_clock() do not consistently undo the clock operations performed before an error. Fix the goto targets and cleanup order so that the audio internal bus parent is restored to CLK26M and all previously enabled clocks are disabled before returning the error. Fixes: 55b423d5623c ("ASoC: mediatek: mt8186: support audio clock control i= n platform driver") Signed-off-by: bui duc phuc --- sound/soc/mediatek/mt8186/mt8186-afe-clk.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/sound/soc/mediatek/mt8186/mt8186-afe-clk.c b/sound/soc/mediate= k/mt8186/mt8186-afe-clk.c index aa8b2eaf7b95..94bcaf92e396 100644 --- a/sound/soc/mediatek/mt8186/mt8186-afe-clk.c +++ b/sound/soc/mediatek/mt8186/mt8186-afe-clk.c @@ -294,7 +294,7 @@ int mt8186_afe_enable_clock(struct mtk_base_afe *afe) dev_err(afe->dev, "%s clk_set_parent %s-%s fail %d\n", __func__, aud_clks[CLK_MUX_AUDIO], aud_clks[CLK_CLK26M], ret); - goto clk_mux_audio_err; + goto clk_mux_audio_intbus_err; } =20 ret =3D clk_prepare_enable(afe_priv->clk[CLK_MUX_AUDIOINTBUS]); @@ -321,24 +321,22 @@ int mt8186_afe_enable_clock(struct mtk_base_afe *afe) if (ret) { dev_err(afe->dev, "%s clk_prepare_enable %s fail %d\n", __func__, aud_clks[CLK_AFE], ret); - goto clk_afe_err; + goto clk_mux_audio_h_parent_err; } =20 return 0; =20 -clk_afe_err: - clk_disable_unprepare(afe_priv->clk[CLK_AFE]); clk_mux_audio_h_parent_err: + mt8186_set_audio_int_bus_parent(afe, CLK_CLK26M); clk_mux_audio_intbus_parent_err: - mt8186_set_audio_int_bus_parent(afe, CLK_CLK26M); + clk_disable_unprepare(afe_priv->clk[CLK_MUX_AUDIOINTBUS]); clk_mux_audio_intbus_err: - clk_disable_unprepare(afe_priv->clk[CLK_MUX_AUDIOINTBUS]); + clk_disable_unprepare(afe_priv->clk[CLK_MUX_AUDIO]); clk_mux_audio_err: - clk_disable_unprepare(afe_priv->clk[CLK_MUX_AUDIO]); -clk_infra_sys_audio_err: - clk_disable_unprepare(afe_priv->clk[CLK_INFRA_SYS_AUDIO]); + clk_disable_unprepare(afe_priv->clk[CLK_INFRA_AUDIO_26M]); clk_infra_audio_26m_err: - clk_disable_unprepare(afe_priv->clk[CLK_INFRA_AUDIO_26M]); + clk_disable_unprepare(afe_priv->clk[CLK_INFRA_SYS_AUDIO]); +clk_infra_sys_audio_err: =20 return ret; } --=20 2.43.0 From nobody Mon Sep 28 12:32:55 2026 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.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 8B0BC47668E for ; Fri, 21 Aug 2026 12:31:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787315467; cv=none; b=OyAPkW4VrsgMd82QuObIkemx95FPD2wFJ+LVFitWWyzEM0zpLLWBOFf+7M61kH8sa2wwquRtK9H8usNVD2DKWGU3kTMcMSE9TJUX2auKr9zlfiSv5qKTRScdrA12Vf65j9GABrLU1utwUurYuNq2mrA71HJYP3eNCVkUl1x44xc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787315467; c=relaxed/simple; bh=t72dr0cwfbwJ9VAdoQJMcgZwLqXIztHpdw9rz+BPXpY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dx+oiQb1g6pt01/G40GR5+/j/rMs97ksyYytwBbFhs6zdexGwkwaZJIPny0Q1OJNVk7xBGHVCaTNKF0uUmzEfJ8tyf3+w0gJs0m3nxPvPbKs03mbO7j2Z0qQ6Zomm+Nk0PplJylZKZRrVOD2k5/jxakzrBJUkpLUICVeGuxqVrI= 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=Od1juvEf; arc=none smtp.client-ip=209.85.214.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="Od1juvEf" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2cf50c6f235so11620485ad.0 for ; Fri, 21 Aug 2026 05:31:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787315466; x=1787920266; 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:content-type; bh=gGl1wn1tthVVpzXm7BgSd3YBH4Pka/KCiti4HDh7cGM=; b=Od1juvEfwmEtI4cZUzUrnK6l+YbuUO23CvQMS1JG6PBz1e7gyRaLMe4wHYSqC1h5gb VYyxf7R2gYuFdbrl7d8DBdz5vyEZbMz/RRPi5itjJJOFZ0YAK3GbBbDeVy0uPdXH+uv6 P5e7XHF9fV8oxs3lhkr0+OysB9mX2xAvr0vIIg2lmePdubpiSTF7D8D0GBYpGcgJm2SI MA6ZjbSdnpWP8lmSWT7nvWMgEusFfA6W5be4qL8Ha7K2J4YTjCsMoy+v2y2Vyv6pUNuM OdJeo2VaJGE1o4uEcGF30FVlghnaOZWhGbgf5xMdvTOIp8Hqo8mwAZWz5TG+TUh6cBOU EUDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787315466; x=1787920266; 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:content-type; bh=gGl1wn1tthVVpzXm7BgSd3YBH4Pka/KCiti4HDh7cGM=; b=RcBlKrB8ieyGwmrV1MqUt6xbdhRz7/8vyC79pHvtntHZbVrayASyMHDn/CIapQSvO9 Ur26mJ0gWJbwdn+larN+8rERbDRZAEm3O6ZOzpdhpm66+3r5Ydn32WpJ4CURl8agxgib jcskaaw0Qp+s8ZhS2rNmjW7/aS1v3ISN8nu7cycxVuUgMjfTqKRSqn2GGoCDyZ1ccBHR VPEDHc2Xy6Ibwq+B2JcOEM7kKNgKuSf2TtpPsHp/E0Y2eJF7+H+Uk9s514xkIrOklbE1 K1y1cLn1taw7xFHfevvQM5PLmqPNnX3gYcHW/OOKAUxj9GD7e/FuL9vojKmxkFwIg5PY bpMQ== X-Forwarded-Encrypted: i=1; AHgh+Rp1n6+kBhX8FeGBaTcjwwvpxep0p5bnstEhBNlASomyJ350Z4CwzYBOhc3FlwKrzFgXNY4KZGdSdbMQ0F8=@vger.kernel.org X-Gm-Message-State: AFuF++nUdj+6uCVI9fh6PtOkmXbICIgr3lAK5CqC14xa+J0NMtkk0UAg GxK4sEV62ai++6n6Ua3KhTq70MzLMXzrkVp8kaNIb/ug4FNtrhpm0RYE X-Gm-Gg: AR+sD11E9Qg2QPYAAOr60xjJbyyfY3Q0HNNiCYjLS4NOfVVfEOHMalnBE50XGV/HroV XinjdHeltSp7pHj+8Kjgv7c3lEzOjXwUcUWEsKdV+dNxIT+jXdIhChBKxwq4PYDnrouu2mP7ur4 pn9KrMHvJqdcVu2+GxbK5CpsSB3RGqJqH3o7NquRIrFWEW9yE+qVfKUVDLIEFMCpHWz2owvH9qn q75Dts0gCTBF9SfoGGEulAVEAYEjR+FkhiRe/50V4nVtQL4CUCgST/JMkveZ+Xu4mqdiLX7uFRB 4aZgps/xemuml2GLhRktonlaZJSZq2ruQUzeA9/lhzUn1T76NE3INeFxi/uHYQRmFEaHecuPD9P g2LJHmFpgYyNJLujix9i3EO61+5wka9rcEnECKJXat6aleBtxZL399vTWoHqnHIbUiWguK8ycvD QbyD0q3QroG4rFG7FsBN+K7g2SyrRMol477p5at7jMz6Z5JD9vPZg50AkkL8iObiMOt/7Jje06a towQ//p9ct1pyIBw2Kj9BxLjqAPEtRRPZ3Zxnv31H52BjE5ugEe44y+LAP3Iz2GhNlnylV38FHa qJX+ X-Received: by 2002:a17:903:3546:b0:2c7:f2c6:89e0 with SMTP id d9443c01a7336-2d64adf3b42mr124052375ad.4.1787315450332; Fri, 21 Aug 2026 05:30:50 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d62e36e1besm18302235ad.53.2026.08.21.05.30.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2026 05:30:50 -0700 (PDT) From: phucduc.bui@gmail.com To: Mark Brown , Matthias Brugger Cc: Liam Girdwood , AngeloGioacchino Del Regno , Jaroslav Kysela , Takashi Iwai , Cezary Rojewski , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, bui duc phuc Subject: [PATCH v2 3/4] ASoC: mediatek: mt8186: Fix APLL enable error handling Date: Fri, 21 Aug 2026 19:30:20 +0700 Message-ID: <20260821123021.41390-4-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821123021.41390-1-phucduc.bui@gmail.com> References: <20260821123021.41390-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 Currently, the mt8186_apll*_enable() functions call mux_setting(afe, true) but do not check its return value to handle failures. In addition, the cleanup paths of mt8186_apll*_enable() do not call mux_setting(afe, false) when the enable operation fails, while the mt8186_apll*_disable() functions do. Add error handling for apll*_mux_setting() and call mux_setting(afe, false) in the cleanup paths when mt8186_apll*_enable() fails. Fixes: 55b423d5623c ("ASoC: mediatek: mt8186: support audio clock control i= n platform driver") Signed-off-by: bui duc phuc --- sound/soc/mediatek/mt8186/mt8186-afe-clk.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/sound/soc/mediatek/mt8186/mt8186-afe-clk.c b/sound/soc/mediate= k/mt8186/mt8186-afe-clk.c index 94bcaf92e396..d6b0174e2655 100644 --- a/sound/soc/mediatek/mt8186/mt8186-afe-clk.c +++ b/sound/soc/mediatek/mt8186/mt8186-afe-clk.c @@ -359,7 +359,9 @@ int mt8186_apll1_enable(struct mtk_base_afe *afe) int ret; =20 /* setting for APLL */ - apll1_mux_setting(afe, true); + ret =3D apll1_mux_setting(afe, true); + if (ret) + goto err_apll1_mux_setting; =20 ret =3D clk_prepare_enable(afe_priv->clk[CLK_APLL22M]); if (ret) { @@ -384,9 +386,10 @@ int mt8186_apll1_enable(struct mtk_base_afe *afe) return 0; =20 err_clk_apll1_tuner: - clk_disable_unprepare(afe_priv->clk[CLK_APLL1_TUNER]); + clk_disable_unprepare(afe_priv->clk[CLK_APLL22M]); err_clk_apll22m: - clk_disable_unprepare(afe_priv->clk[CLK_APLL22M]); + apll1_mux_setting(afe, false); +err_apll1_mux_setting: =20 return ret; } @@ -412,7 +415,9 @@ int mt8186_apll2_enable(struct mtk_base_afe *afe) int ret; =20 /* setting for APLL */ - apll2_mux_setting(afe, true); + ret =3D apll2_mux_setting(afe, true); + if (ret) + goto err_apll2_mux_setting; =20 ret =3D clk_prepare_enable(afe_priv->clk[CLK_APLL24M]); if (ret) { @@ -437,9 +442,10 @@ int mt8186_apll2_enable(struct mtk_base_afe *afe) return 0; =20 err_clk_apll2_tuner: - clk_disable_unprepare(afe_priv->clk[CLK_APLL2_TUNER]); + clk_disable_unprepare(afe_priv->clk[CLK_APLL24M]); err_clk_apll24m: - clk_disable_unprepare(afe_priv->clk[CLK_APLL24M]); + apll2_mux_setting(afe, false); +err_apll2_mux_setting: =20 return ret; } --=20 2.43.0 From nobody Mon Sep 28 12:32:55 2026 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.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 DB52B3CAA2F for ; Fri, 21 Aug 2026 12:30:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787315456; cv=none; b=pAPyl31MS86c/g8i7RqNCTD5GN4L3NlAy50VghkWVKcTJVE94FmL7lxJU859v2mmOc03FVJ3URq2M/3dwI1r7YmrJVewB+VveUAU5NGpZS9ytU5HbReRi8hnnm9a1GOhFbCKh2iZ4pmVYwi7GEK7D/NrnkMYsd0la1jD/scM4Ko= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787315456; c=relaxed/simple; bh=zYEyJa4Qyd3J1VT84wcZMZlpZNVLGXeLDORoEAIUOFs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qlKeFceCEWjDhbLuAqJLPt947g2QT3tCpcuy1xCcYQHk7cKqbXzt1RQR1JW6h11uHBhAPacnh9slhaIzpupFh1K+NVdS5zI2TxvHz9wF2fZKW8I/r8IHrKurc5SvqExdF37gClgL9Ys5YPz/7YZaRHFI8nO9j36Avxutnd7u86E= 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=Ydn7nmc+; arc=none smtp.client-ip=209.85.214.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="Ydn7nmc+" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2d530328efbso8495765ad.0 for ; Fri, 21 Aug 2026 05:30:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787315454; x=1787920254; 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:content-type; bh=cOrddxMe438IsC7xeJkXYhGEPOhIf02MCjyvV84OxAQ=; b=Ydn7nmc+SL7IIQeqE3LxFs1+XH4WgSi1PiCDPWXQubpfn/uzaGseQI/RAGvTm0feKT oCeyJ4evjJE9HmI/7aebfkQumJrIl3B6qhF/+kb8fNsD2le08LGOsXVcEpzemDQYj7+3 dI2Bokz/EwUEisJurOnGpgMXb0C//vfxkCb3ZVTDlTRIJ3zIJR7pG56Y03Yg0tnzDpyW fdWwRPCejjGASqzllOpFt5RKU6escQdXFn2f833yWIYXn2aceOgweI3j8kt6iA3hv9vC XteEREw8ifkFVnYrWYlatWA49I5X7XGzEt9RD4+E1PgA7p70JY4VQYFxqsPhmSFaGXMD utbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787315454; x=1787920254; 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:content-type; bh=cOrddxMe438IsC7xeJkXYhGEPOhIf02MCjyvV84OxAQ=; b=ArvgdaaiEE8ssmaUjSz+1hfnXQ4s8D0fXXMmkL3nEaKTloDXNhdpjuucXeAte7T12D 25wY8iyHE818gJ9gB/epdHCDGovu9ZeWNIHj0x4pPfX01nNOzewPaLj5vPXQQZqn3XVf bTuhdlq2pKhXd3QMUo9aO3FPunuZjKcbejbmsa2cmcy+mI90CS4BHlLK3VpCQw/cgAI9 31G94l8QSG6Vp8LrCdpJNCdXM0GZnmutukGOc5feAap34tDA/ehnGRBBIogRkoddFC/F AoLyj2iqz3GoGz22e9DkF+/aZQE5eA8WWN/bg5qoG0YaYqYpvIE+lpq/3iIoiYOH+OtK lwgQ== X-Forwarded-Encrypted: i=1; AHgh+RqC920aJGkqKxW9MIuIsasAhUTn7kQL0j35UkO4c3uWLRSL7dNRQGnCnxWrwXQLTDen5qahxQryNhzijo0=@vger.kernel.org X-Gm-Message-State: AFuF++kjNKV/67P6655tG3/Clwpj0LglrFrxXHUdek4UJXmPgvfD6JI2 C04DOfgn/HKXPTZzMwny4R+rOj00ymvqSysO2c5Ugyi51OljykdxjPId X-Gm-Gg: AR+sD10dAXI5IaEBzD+E94+rEXUBuXqwcNh/yO6ZzKzxYYdZirW4SMPwH1I/DvAI+QS stWdPpucgfgfegpWXBs0bMQ1I9s9y5dmG+0K4XlF4oAD/TMM5RhFeHTZ54D8Hve95lsOLHTCf4F jIthoKlSOR1BSH0wbHzxEKPaPZ7ZaSCRmTL4b+Js37Lhz8NJgtDg6G/vEfjvMD5xbfHnhpu5njC bKV+EnFVYpb5iLiqW+KrZUiGHaFoWxoR727FhJJYpjQ7R5QylowYnJMfVl8OcdZG93GVZtcWmxo gUTF0MxvtECkgMjhVMt2eThAvvT1hpv6GUgwSSzd91lDmS9auOTcXcbzaJ3YEFVqajq/fOgUREh IdEpP1IOd64CnnMdSLhTxJGs1eS2nmbl8navife6E7IwLpc+T/ihE/qIa22aPBNtAPBvM/H8gQ8 cdpapIwg4J91FlpYay+JL9XxzsWRqmOvbxbckTk2TFGG+lLPZ9zCQoOqcD5Z96GEUgBA/X/+Ra4 O+mRXXRtWW94FmwPe0eIF5LFQOiy8Y4/KZ6MthFMgRXKy1lnBOpbnKfaqQLWJi2gGGOPFFafnL0 L7lT X-Received: by 2002:a17:903:3c6c:b0:2ca:9d5a:8b6c with SMTP id d9443c01a7336-2d64adc5f3emr120518305ad.5.1787315454282; Fri, 21 Aug 2026 05:30:54 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d62e36e1besm18302235ad.53.2026.08.21.05.30.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2026 05:30:53 -0700 (PDT) From: phucduc.bui@gmail.com To: Mark Brown , Matthias Brugger Cc: Liam Girdwood , AngeloGioacchino Del Regno , Jaroslav Kysela , Takashi Iwai , Cezary Rojewski , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, bui duc phuc Subject: [PATCH v2 4/4] ASoC: mediatek: mt8186: Fix MCK error handling Date: Fri, 21 Aug 2026 19:30:21 +0700 Message-ID: <20260821123021.41390-5-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821123021.41390-1-phucduc.bui@gmail.com> References: <20260821123021.41390-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 The mt8186_mck_enable() function returns immediately when a clock operation fails, leaving previously enabled clocks active. Add error paths to disable previously enabled clocks before returning the error. Fixes: 55b423d5623c ("ASoC: mediatek: mt8186: support audio clock control i= n platform driver") Signed-off-by: bui duc phuc --- sound/soc/mediatek/mt8186/mt8186-afe-clk.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/sound/soc/mediatek/mt8186/mt8186-afe-clk.c b/sound/soc/mediate= k/mt8186/mt8186-afe-clk.c index d6b0174e2655..8cc8eb8022b5 100644 --- a/sound/soc/mediatek/mt8186/mt8186-afe-clk.c +++ b/sound/soc/mediatek/mt8186/mt8186-afe-clk.c @@ -528,7 +528,7 @@ int mt8186_mck_enable(struct mtk_base_afe *afe, int mck= _id, int rate) if (ret) { dev_err(afe->dev, "%s(), clk_prepare_enable %s fail %d\n", __func__, aud_clks[m_sel_id], ret); - return ret; + goto ERR_ENABLE_MCLK; } ret =3D clk_set_parent(afe_priv->clk[m_sel_id], afe_priv->clk[apll_clk_id]); @@ -536,7 +536,7 @@ int mt8186_mck_enable(struct mtk_base_afe *afe, int mck= _id, int rate) dev_err(afe->dev, "%s(), clk_set_parent %s-%s fail %d\n", __func__, aud_clks[m_sel_id], aud_clks[apll_clk_id], ret); - return ret; + goto ERR_SELECT_MCLK; } } =20 @@ -545,16 +545,25 @@ int mt8186_mck_enable(struct mtk_base_afe *afe, int m= ck_id, int rate) if (ret) { dev_err(afe->dev, "%s(), clk_prepare_enable %s fail %d\n", __func__, aud_clks[div_clk_id], ret); - return ret; + goto ERR_ENABLE_MCLK_DIV; } ret =3D clk_set_rate(afe_priv->clk[div_clk_id], rate); if (ret) { dev_err(afe->dev, "%s(), clk_set_rate %s, rate %d, fail %d\n", __func__, aud_clks[div_clk_id], rate, ret); - return ret; + goto ERR_SET_MCLK_RATE; } =20 return 0; + +ERR_SET_MCLK_RATE: + clk_disable_unprepare(afe_priv->clk[div_clk_id]); +ERR_ENABLE_MCLK_DIV: +ERR_SELECT_MCLK: + if (m_sel_id >=3D 0) + clk_disable_unprepare(afe_priv->clk[m_sel_id]); +ERR_ENABLE_MCLK: + return ret; } =20 void mt8186_mck_disable(struct mtk_base_afe *afe, int mck_id) --=20 2.43.0