From nobody Mon Sep 28 15:32:25 2026 Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) (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 DC3EC40F733 for ; Thu, 20 Aug 2026 11:13:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787224413; cv=none; b=eZ9rNySFRCyr8CtqLU1USsZl0QHuVSobK8claxXaIDjmxcXDyXdxaJJuq83bT5RN2I1KI6GmhPcXf8weP24FTemIFdH1K8p3vGU/hxDg+Kt6VdVv0QSz/Pt0Jvp8aXjNUnk+R/OXhu2IxecxLJ3Z76piR2111e9YUmpouP3Q9ho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787224413; c=relaxed/simple; bh=Zq0PqvhDgBXcdrrESrjMXS9r5ZQAhVmXwWmJ9GO82KQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FHnhgfc9iexxiZ5oGSfIzi+ZRcSh6jkW7PLi3V7mvhVD67hWuHZvQFFQ2jrRKkE9MjokTYS34elCP3GE7XrhObVlDgYrrJo6T1mRAPupQF9lqWfkfNRHG7EZYTWnwNbmRKJFG1awCQVlzQKWxFqlL7qCn5DWOqHBuddDbq5dt/Q= 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=mlAYYYD4; arc=none smtp.client-ip=209.85.215.174 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="mlAYYYD4" Received: by mail-pg1-f174.google.com with SMTP id 41be03b00d2f7-c966b9ee9cbso1191833a12.1 for ; Thu, 20 Aug 2026 04:13:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787224411; x=1787829211; 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=dEPw4BvlvPjIur7O7WbNJIb0EAN2oqpObl5Gh2Ij5Dk=; b=mlAYYYD4zJLRznSlMzOF0X/YR+g4oBCxZueelYc2E6MBx8DDIkbC5uB0L4Xi/2FvHT VSBVr1L4GUZcCPe/NVgZJVaAWvwFncYko/07P6dQFfTgUouZxUNFn7lTtvdmWD2PfyeE KeS6avpz2rM/BwVXnIPbaVGaB8naxM4f89+DAiC+zVoQuw6f+UOKjEI96HF1K3QhqomA u6UCxcLfiQzfYE4tM9Ku6aPRCkcp2CgDuw8lP448iZKtWrDyjIxIxdLtCN54smyeCRpi MihZHpkgTPPYrvM5879zdQjhBZjnbvQ6h7KBs/nvGmHFRrvUATz4OnINQsKm2J/7ESQ+ s3hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787224411; x=1787829211; 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=dEPw4BvlvPjIur7O7WbNJIb0EAN2oqpObl5Gh2Ij5Dk=; b=g7O2h3yTf5IGx3RyuLbRiHu0FOJaQVh9d2xy8rB/phVvlnYk6y7yFCXehEdePtkTAJ 8lFQoYt+uMrcKyULhuhStxAHSYbnmZ4Ih7I7J5qJ8d1u+8RGdqYrCHD1OIsmZ5BD0kGD Mytqlfh4KbkEFj7Dog8aSSBmdQ2z82HT2VEPeQc+JukDGpoBzl2MKwmfQPemECizpXdV 0Zb/gCM392IzvKq813nEbOuJdi+SRe4TK9GFrrjjH/aXnp2g1uv088KTX9jbAb/9cuUM 0CzWq8ci8k4Cx1fRs2t2EKqhJw0So59b8hzhn39vcrr3TwTwSRQVHm4KTsSG5bAmMKHE t2fg== X-Forwarded-Encrypted: i=1; AHgh+Rr6AORovB1aj8WqJ21Y82a34cjsZ9V8d5t/AM1MpHHKo/Ey1amk4QKxtAuWSM/hHXxPwrBu9/7rp90w06o=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4YdlggoPvH+t4ZPXrF2eHADvh87woDSZDoBY7nNDK4dizolR1 A/I4Nupuk6nYDkt1t7MurCEeL4UAmfXliEQhI9lslNqNK+P3VhAN0fhs X-Gm-Gg: AR+sD13O/fZgOMAWNiyGez5GibHoaHFuK7Z0NnBgYlF6b/4/aDIFShES7bte6hE9Lzt mLB33IaiccSoS6Ba7/vpfHsL3vLO5Il/ijUZcFfvdxdvP+lWtV73beLZ/dWkl+oKyBfi2kK3hVd PBaa5FM+RKLbMW9uEttBwcBuXaRzhLq6DRvAFatH4y/+WmMhc6hk+8T2c4QmpIcxyMMp8GnAdj7 oFq1Qjsa7g4DJA10jsqdGl2RcwP6jYD6PPAjQStpllK2+4bNuT2Gi/utdmbcIEYKIk7HggZocaa pEyFkVzjuUMOE8dOA6c6rYjAEMl2dZ4lsLw/S/kuA58lnd/4Fz+m1B7a6Hpn7eCeTKG9UcopWjP EeQs1lGEl2TcrEkniRumWIAJxNRdpCXacEfyvHg4uJAzNlHb/lNRYc0VFd6W2LzIqLFdJFzU9rp HKbcBtoUnaiubLh1k+5fRBOltCjR7DA/dllRHqkHXa/bAK4GS3o7f+9lcGTaYdnqTHI+8wLOsN4 KW8EIds9ogDqRaOjCtd6qP9rT212hVI/TSHhazoqrB2raGj59E9DRJhedcSyCLDtNtajrUzdqkH xlpU X-Received: by 2002:a05:6a00:14d0:b0:842:2419:6bfe with SMTP id d2e1a72fcca58-851d384706dmr20743184b3a.7.1787224411118; Thu, 20 Aug 2026 04:13:31 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851d36185c8sm1515460b3a.38.2026.08.20.04.13.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 04:13:30 -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 1/5] ASoC: mediatek: mt8186: fix APLL mux setting error handling Date: Thu, 20 Aug 2026 18:12:49 +0700 Message-ID: <20260820111253.97866-2-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260820111253.97866-1-phucduc.bui@gmail.com> References: <20260820111253.97866-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. 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 15:32:25 2026 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (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 26E9041A905 for ; Thu, 20 Aug 2026 11:13:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787224417; cv=none; b=DkemHInRXf1Q85wPMiRQTC83dbzkV/QHk/RsB3QDgg9EiOf8ae4CMyRQ3LQ1I+KNu+ngFaQ3fL1x3U6qFtRHJssqoM4nGpwL4dr9kQMnu017suRMSs9FzBEHtvVMpXVbMqDfJ20yzr2cuAggylumik3Rk93KLXCVf6ZNO0zi/kQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787224417; c=relaxed/simple; bh=LCT+82lm6KznZfAuCfv9h5ezKD9PrDxKi2dRpeEV5tM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TgERDXuxMQpFdVYd63Y+NgOyZBPqYUcxoLcQs74C4vJSoToqPTWLeSnPHZSAjgIDofjGpmmVgebfqhOS2jfzFo7WjBNxUZikOw6GzvRCgh8vydQAFuIF20yzbrhjcVaGVQzMORSlYEJpPmiuLqCP24MIc5R/uG/x6gVUQ7XYh3I= 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=ClHdnWMH; arc=none smtp.client-ip=209.85.210.171 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="ClHdnWMH" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-84f3ab8750cso1487142b3a.0 for ; Thu, 20 Aug 2026 04:13:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787224415; x=1787829215; 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=KHFmktxqrJswUeFq/LOQ5JbIOjX6aGqDfIzsCeraA7E=; b=ClHdnWMHleK5rccT+OBpCN3YnP69RW7qdA/rZiZ3GpBX9K4g56S4Knvk+Iw3ljWljA 39J2HoAfuMJIrrr3CECCIRyhTgPNCyn+AUMWrdUk+mh4HmKGbKCuHIw8l5oEJiiAn5eV 2e4dqDNNw/L0Ss1oAMHDTb+4F/KskjIdEWmCctm+fvB5tbxjclhUi+4OQ2/IWNVFr9WL 1bjcPVHVKBH16/MOUSAFUavsMqulhsrC7C+BxF7XmQQ5yhVUChXgnUl7tag+iO3uwL9O WDgAUcfCrJpBy8FmIrgmDlpoF8EHR9xdXJT4OEhZAXu6y1x3ztO376RyziFFWrrTz/g8 FMUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787224415; x=1787829215; 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=KHFmktxqrJswUeFq/LOQ5JbIOjX6aGqDfIzsCeraA7E=; b=af3gNqnV8FP/gx+6mVJYFB8r63kUpwVNLHWcQkNAM/irxTEipD9M5pNvbaU3JacLdO B+EV10rlzLIU7V/e0ZLMJdJoQqPYMDXeyNYMAdfzYVpyhhqMZxOjQi/rSxcd6PJ7C3uO 4W8IV/5icYWb52/2yHGbTkah7cDcox8NPtDoZ4AYnw+ivN5mps2husglERzCS6n4+Fmt BVfXb3BJh2Aqrwf1hEttboQCe6KF81carKUoeuYM8dR21HJwEafxbMsBRG/VSgJrhB7f fzRFOH/nYZQo5iIjam4TYS/0fVSaGYYX8yIh4V9Rf/EIwSqBEDhylweP0CZWE2YpFZ++ mjpA== X-Forwarded-Encrypted: i=1; AHgh+Rr+5InwgFxB39yM+/pbCjeVdSEG73lBjKTosxb2CtvRI6GXT3jEZwhCa/eS60YykT8SPwkXrupw7iLvOeY=@vger.kernel.org X-Gm-Message-State: AOJu0YwLRXtBa3YXNgmvt7IcyOYqmjiSIVB/aOt/ydzUuxxchkKEgdiF YRoQ9LyfEkfBMzfE1LrR+nmG91qd+zU5Nj/iKRWi/PeYgL3TSFGoUfv6 X-Gm-Gg: AR+sD10IkGqRncOMJa8HDy/Io8fM6HxmF0VQcTO55N8+VPfW3JH736xK/3jFnEoeKmU FvfugGcF40XArtVt8ZgVWtrsgf93I2aOEy8ibiOljYbMSfKRH1h8jcWrby8WmeMRtIwuQ/6hcrl XR/R6sHc2+eph1lKJLpfe8jvzDceepF3gAApLfmCn0KIQYfpdQKvYKnedhzGeHWbN70MnHy3yO5 fHLp46K6YeosLML+5ia/iKIKi6XK6YVzo3j5ybBq3phgRcrt3B3H+e66RvRx5SF+wtxVLC0sFWb M8dAP6qhNLqPM9Ki3ma0sVowtZFUKAeakJmzHGDVcJ4KicL+eeqnd1hbXnsbHJx/HW6dIRP+KXL WeHpmAx3bLR1UH/k5xi309gnrtyPIyrjutJIPADHvjl2URxm3ysPz4ftERv7xCkviuB5duTbjal d6z0M/CIDrqk75EL7FoW4hmVlXv5CVtc40gzAaF1cmEoSyE0JrY/c93kk+Syepvo2mzYYhmTgmg Lsm41obWhcyxyn3cRT2tGuewb1AoispdjR3mAa2hXEnn2xnc1bw2wKZwSpWdo1ThUBGs9r0cNM3 a5g1 X-Received: by 2002:a05:6a00:a24a:b0:84c:5b65:ef86 with SMTP id d2e1a72fcca58-851d390b52bmr20899072b3a.17.1787224415368; Thu, 20 Aug 2026 04:13:35 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851d36185c8sm1515460b3a.38.2026.08.20.04.13.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 04:13:35 -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 2/5] ASoC: mediatek: mt8186: Fix AFE clock error handling Date: Thu, 20 Aug 2026 18:12:50 +0700 Message-ID: <20260820111253.97866-3-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260820111253.97866-1-phucduc.bui@gmail.com> References: <20260820111253.97866-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. 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 15:32:25 2026 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (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 63BF641BA62 for ; Thu, 20 Aug 2026 11:13:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787224421; cv=none; b=m/yW3DW/YF/Rs3X+819lgqcqHEMsqdtq+M7SKLb9FvSVGfV9T0LMpvBlrcOaZdpZsOe6JHpNGTYH58uHnlC+OPa4D2+bCQhlF72PTtXBb+fY8Mz9saKz0K9ctfowP86oHIgPvdKUKG2Kp37+dExtUjP0FLxcqgCa4fvLybZZxoY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787224421; c=relaxed/simple; bh=GZ+W8p1ry7vldsXpMatf0H+bFkmjz0Gihshg3tLwqpw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RRXfLbvNOh7ZQFDO5aX5nFwvxHpbSTh3MC8oTR1vNlwnCgkfUN+OMFIgykK1bD/jjwjJapK5VUQjdEdcrkq2MW9AhyZbd0Rcx9S64XV/r9wahWO89LCqoN9eKAzuq1F9Kr6li7THdKfBIKQE3UYbxLBZ/4mdTCrB1xPVFWjsAbU= 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=dtH3haA0; arc=none smtp.client-ip=209.85.210.173 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="dtH3haA0" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-84e0688b7e8so1584167b3a.1 for ; Thu, 20 Aug 2026 04:13:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787224420; x=1787829220; 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=lJCRYDZE3VyQeQed1gNiTmBloNm9vN2iVU/zKNvs6Uk=; b=dtH3haA0tUTUff+CRnKhOYsxlISot5ZzpmI7UTZnRjXMlJAy0ATrZMUaHq/jnyECxj Fdl8X69kzOIJLsxs4DyawwTctCcwv5iNMiyOuGsOK7/+XCjpZaFwSYqCrGY2JXjjjyz/ iSrPKekfCXMcnDPG5bZxYJttq6r50OEPN4FoPmutN59tGvbsfUrlmZa3H1mvBW/nDh8m kc67VQYSFBiRL/nriE1+RH8UTJcvbLE0EEGwjwsoVVPHAd7zUY8KUt+T9MHC/e14qNQu 5rGMrXBtkL4zRvFY9OH/xtOuc68dhfmuDgOdvas0LgXwMmbPmkIr25W1radygXuZw5a4 Tf9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787224420; x=1787829220; 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=lJCRYDZE3VyQeQed1gNiTmBloNm9vN2iVU/zKNvs6Uk=; b=pqq6VVEE1IYD8FB1uFdSDkOuxE12qvjX/0iJeO6NYh9no0bief0cWfH4xmsLQTaiAz BIkm9NUGO4Vtah6ILrQBzurq4sjeJCHUm+QIOv4qp9JLAaI6LspwVni7Z9TMnC8AdmWJ XaobVqVfotTt53GD3TBbjJwDNgo0mMlJ8WZ/4nTa8Fz5kTmrVTpDADNmeLiCokHFpfyi MfoCliv4V5xXJYn9PXPWAxfuBg5W25DSs6pbzwHyVhqkMXg0wlO6+q9URc36ldoZaFit ZLa8AQTTVMJAV9VybBhhHEyuR71Bb/eDFxGKG3sTJ6/qsq2dn0SzfZY1JRKw4mQ3xarL d8Sg== X-Forwarded-Encrypted: i=1; AHgh+RqAtPSYbj4hJmeNIcb/2KpOggjLCrFG3X2xegcUqjUT8uRhR40xMoANytdhipJQ8QNHR9LT9acWAceEe2A=@vger.kernel.org X-Gm-Message-State: AOJu0YwynnF4yWFOQmiNk4JjalJNPncMy4L6cdd1lWg6C4zRUippXxMV p4TKH/IyuwXiTIDHoIm3dXCMsqfaadVlI7eKNbR7keHWPkumS6hzTUwy X-Gm-Gg: AR+sD10+nAUvVGcXaKJq+aftVHuIPpid3r5pk8mq5zYzwn3d9QBti/TNhtD3kkcmE/V 6HtBieknez00JB5OnkQPbK+K+YEwCZ7Siq5mCpFnkYJNHtThkR+W7qizyCh/617qsjHw36l3AQ1 ipK7pV6NOk65sSIgYLZIbGnftcwicDlk/W01FtdhDRZF/e/k8SCY1X2x1DpqNcLkE9Wsb3/dev0 ENM7jrgCkjG+R2YAVzwlzPAGxPS9QGKamnvLUtEmaUsS0r2sT9HKSqqyrjaUg6WxsfK6GqFzfbw RT+NFCYcc2om+PivABcSj/Z1ErSTWyBXOiTrfBgZnJt+IAOox4v6xKHA3GMg26mU0mQ+O0F35B6 J5ruAAnpbWA0VSol2fRSmD+SvX7sgIDg4YZfimHumDzHWtL9uW6ol0dgOWgV4MQJO3sPd6uiXVa qtwHFQj+WA1tvHrMKPW/D79civsJ8KJgSslZREAVsXvOK5XqWQ0PRVV9UcciX+utDJNGrqNt5Qk JTlYa0oKoGRqgwkPL8Q49BwWbzV+5BashA0I9VY8wtwuD1V13fbA05TqdY5GS/RoqzwRTd3uWmT VKJRqaOdcWZrlwA= X-Received: by 2002:a05:6a00:148a:b0:845:cdc1:a803 with SMTP id d2e1a72fcca58-851d3914f9bmr20061259b3a.11.1787224419796; Thu, 20 Aug 2026 04:13:39 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851d36185c8sm1515460b3a.38.2026.08.20.04.13.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 04:13:39 -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 3/5] ASoC: mediatek: mt8186: Fix APLL enable error handling Date: Thu, 20 Aug 2026 18:12:51 +0700 Message-ID: <20260820111253.97866-4-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260820111253.97866-1-phucduc.bui@gmail.com> References: <20260820111253.97866-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. 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 15:32:25 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 A662941DDE1 for ; Thu, 20 Aug 2026 11:13:44 +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=1787224425; cv=none; b=ZQB4rGBlM1aaVZITMOAgp7Q92mzUTSxIFPqFMa1YVaDi4zGc0HXYfSDVHMo/SAO6Zl3NdnEEZJIW9ypFHLZKUSoU1K3Dbyoir51N3rV/55tJRH4+Cnc/50ek7Z7ahArhADSP7IW5xPNdhLg313zxERHOblnVOCWVbHg027cf42I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787224425; c=relaxed/simple; bh=IGekffpxX+5XQIthJK09IM5/IbjcyIoKPxjpP4fEsk4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QirxByb1V3vpClx1T3AllAZufK7Eanzy4ytX+dDLhBUxRf+pA7+8iFyNuXnnjSB8lrTmt8WjlDofoJQfK2RELEDmxfx7p+Dqj83OuE0NVgO5Sv4Jalp+QP1m85kP6lN2wjISQ9+jAIsr7NeLH6LBvVtVgkzyNd8AFHzQfE/4pmM= 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=kbdl/KPY; 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="kbdl/KPY" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-8518d5ddaabso1619434b3a.2 for ; Thu, 20 Aug 2026 04:13:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787224424; x=1787829224; 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=viEEjaaD0HZpFwginbzlEKGXqOy8NFo8cx0Pc50ZQ9I=; b=kbdl/KPY0XnYgBEOe0NoomT+B3G8JgD8UrUZ6YK36BGkazX1clA2e4lN6OIY7U4I0M D11WAhnmpqJmFgBrYaYClTxL1vSrNRNgzYAjz6m4IPN2qTVCt7Rv07/R7Xg+Y18dEeRY VeTsdMVdlTeDu2SJwykU3d3OSUdoTyXQpDj8UduDMBXOzoOJqtTjULEexcvYENARub3n uEHd0Z7ovIwYMaZveanslS9afHQO5sc2cEv0TaY7sRq+9TTGIgr8km/5SXuK3pUmGzIx lQ6pvjfj4pW2jHyetCh/jeLTZ6doEiBMTcl92L3ICWQ76pm56HDUMLnfFdRKqzTU+QZ4 spig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787224424; x=1787829224; 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=viEEjaaD0HZpFwginbzlEKGXqOy8NFo8cx0Pc50ZQ9I=; b=M/hfUqyiL9WiuQy0ryeu6YA8v6aTPsfjCIynHvydUoIxA3bQu2lSAJsZUEGvJXGXGu EJHc+y9equUTneEjCb06jIt3Wp0f+3Lls1AiHoRsSdbC+v1I4jxMTDoxbEnH/6/qOORw V0LKVN/2k1ezRCtQXI0XO7pduobEr7N+DgFy3IKSUNaF8vb/YhnKkq3X9VXCco+TKy/f ibKZtPmzCCTdvfleWcmNivFuytMUwYK9dLId3M81yS5FZIL+rqCfa5ogKN/WNNgmcO0F so4PohvLx8C+i1+g9xDqWDeBqvOC12RC3TEgp3hzLrpP6TfJA+jNohe8Et9BtZD1+8y6 cQmw== X-Forwarded-Encrypted: i=1; AHgh+RrJuymrX2FR4YZDBzBvBtgHvQIYaxQsgvrbqqSXIsbk7YCWhsDW/t3ot+Umr3tDc4Nd40ul+vxtjhddeck=@vger.kernel.org X-Gm-Message-State: AOJu0YzGxurqEGFFFUgIvtQI5AlSKv4a5D89eELggLdvUM3t+Wp/wFF4 8Cyi5G4evPMBtd1alw+4z6hCAX/RaggayElqmpGn7A5lTJsxTvpkJ0qO X-Gm-Gg: AR+sD11I9dK94sOZYFA+/T+htLoVzqDVbP6uJxzh0lcC/p1a7qJ1THBtE4rn/0unaKV DZaTYHVpGqDQtx8N22RSZDGlkULWZBhBs6L/DnllHlJQaqcoCKUDEz+fS6RUiyHduXp+klK4aLe 09YkWnPtnMlaqWu2pTMaAb1z2hawdrsU2/ulpR65+ONt+acKIBdoqsZTslq9jXcnHp8rwl6t7Cw +K6/uuVfeRt0pNjQIO+9sOMh38oRgKcl5zo1zrgbwK7ejYC17Nm6z4jd+A6cNA6g+uzo8bNi3Ju s2gpBjBPwPXDecpgf2u6K59j94sYax752jRr9tJEp7kWhYuDOB3dFrsXLGLaJeq/F5DteQAxuKQ a3OXd4ygWp4BB6oNZFYwIkx2t56TDI3JZzIp/bktddDTW62TWu7tNrLnyJqFFPtPXpxpC5xpd0l E5bqh8LULvLK60ncA0Qoqsmgr30Bbl3YMfexlOIzHQ1iSH/x9cqgnztC+9oBNougMm0izafoF6x XSquZVI0N6SzoNujPFDVQ0MekYkKmdup1dBWXUTI4t1qaw1ihlTU7PqZNmOkgSnQbp+q9dkFECc zXc6cW1BVQlkrGsg68RqVZyvlPw= X-Received: by 2002:a05:6a00:9296:b0:84e:24f:2667 with SMTP id d2e1a72fcca58-851d38a4dc0mr18511585b3a.8.1787224423908; Thu, 20 Aug 2026 04:13:43 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851d36185c8sm1515460b3a.38.2026.08.20.04.13.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 04:13:43 -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 4/5] ASoC: mediatek: mt8186: Fix MCK error handling Date: Thu, 20 Aug 2026 18:12:52 +0700 Message-ID: <20260820111253.97866-5-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260820111253.97866-1-phucduc.bui@gmail.com> References: <20260820111253.97866-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. 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 From nobody Mon Sep 28 15:32:25 2026 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) (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 CFF08419FDA for ; Thu, 20 Aug 2026 11:13:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787224430; cv=none; b=TYC3pxqNQcjRP7HCgM4+oomYSyi1DsNLD+St7FkaCUQtwJ43CwHDlQQE14PF+qr4SCWZaL8N1axrm1zDbF66nnSse8kq4mlABvC9iyXo3D7BKpqu0DI2/0j+RV8ZkoV3xh/6EzzKnosgZ2v6X3G+0WoyzJDJZBsrSY4ny7ZENq0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787224430; c=relaxed/simple; bh=Ax02etNy0Gd17yLz9ovg3nfEQArEGnxo7zLc/NlrZHc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=K7LDL17Bn5nJEZHlQKcCmCjnBBEjWazi72IlJDs6QpvSYu6aYIZY9p7UmzrqwOU0EjSOBvWjjEwE3Of7LNJJsL1RmzGiL7YsV1P4DEg2TOJJSDB0blo5WcXx+F0F89qSdl6rmelX7drNH49L4PhzL/cfhyW7PIc9ZEWdM2uQtbU= 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=aye7hP3x; arc=none smtp.client-ip=209.85.210.174 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="aye7hP3x" Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-8487214ad2bso2645706b3a.1 for ; Thu, 20 Aug 2026 04:13:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787224428; x=1787829228; 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=U9ybHqnWFVYiAtnm3we5B2R9frVzEugQA8Zyjjnu3r8=; b=aye7hP3xV7PIAHY4FYtTR6xiBmMOyJL+a/IlcOapMEXD6BJ0/vMUaIjZmKKs6ZSY/O WuaKm9jnG3JklgcgoljhRhYegiHwOT0Ezngk6JAbnrmrsB7CKQis2RB+SUDXnt8PjaC5 uyhTRqcGx6oMBWBYjr3ynbvhzn56rQg9bi5DCS4UEmZW0wepSYhoAWL3gEq5ICSwCNE0 NZOFgSmV67c4OWQUC/DzN+mbW84j5XsTjQu5KNcT7iKpF36A4zBKuoOYMOPYiQE71gbX uCH1dLrpJOP2WgYVjmumzW9al4A0ggWQ/ayYm9TBrxyOfNc+XR7qVw+yq5GQnFNv5fU+ Baew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787224428; x=1787829228; 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=U9ybHqnWFVYiAtnm3we5B2R9frVzEugQA8Zyjjnu3r8=; b=Kea/emqDpLZ9VPczCmoihC/rsxGD3x0NsGaQV4Y1NyAZQiH8TZFJ6O2xi91iLMfBu2 iesHaVWpYuI4oqk8NC8YGZ1nzSkFJJ/17iJZOctYds5Hta6KpxCCCaMq7DcrqCAJPGP3 2vBhYmrbze+Fa47J7la1AGRyg+1avr9HaWaU85/9zNBWROPxlXsS8KkAzP5qWr62Gw5U INWrQ7zjZlHnR78QBT+aspOfReFoVSndyesnMZ3DXIV2xj4VpTutZXYTZ9UweuBi/MTP BXybf0hv/xHLe9Ir0nuujEyCOZkcVT7BSrPuhCPucpubGdgv9tElDQiYJFJVw2E7ARn/ Fe1w== X-Forwarded-Encrypted: i=1; AHgh+RrpZ60v7ABaDEfGHvbpgWJ4NliNn/lz1tuavUMl92lu8I6aaZ9HNym3FVVHlzjs8cm6CJsGjXconbXGqzk=@vger.kernel.org X-Gm-Message-State: AOJu0YxTuSduqHo4YOlIN7w2RcBLvxrpaw1HJX4bk/SnzPCSM2DY4rLE XceT86OuyvUfPx0yQidk1z37pQqGLOBEYKWSnhRPQq9A83+PEMId0xHq X-Gm-Gg: AR+sD10lCkVRwZ3+xQrGKoxdYHeeuFPfonNnzUrkbB7bVpOkxlKF1D1WWEYBUQkUMSZ idIuXte8I8b2/ucb53mwEVJtEcnS4Y7iNFVWBVtIv0yKule4wNgNYTR1GVt3HonRLDORIAuM/I9 EwZaLN7n6ChaXLntbQghU+DqNVhiFomRris01M4PffIfZbVMgxa9Rr8EAa2DIOMfWby20GbFb/2 SN42uPvVnyuVnSRGbnQBCscMoWGVp2/iQJBb+z9OLZYN+aC5mi93nzSDaOFyP3mBGsPi0X3B3mi EuFuUyWFElwhZNWfYdQN8htiY1D9f9DBQgDsQaB8rRFOHLMbZ3dGrw5A1Ui2hUv2LWvd6avK7I+ 6ND+lMJTSnzJVs/cgAovWauDV7LnYnaRwwS9ENr17bvWE1mhvzGVhj0QFjOFq4Um+iOhaPfnbmn fba/7QI9A44zloyArE0hcSIPkpqzYYfqddVEFyoki7htx2qo1d/7xmDbCnm0UkEeq6zLx30yq4L Ie77o1hLFIm/FR4nhaFd26CD9dYKdPSUHy3rw6PpGl0JrsXaom87KvcSiuEoYBy8E/2W5LvQmtB mG2g X-Received: by 2002:a05:6a00:9514:b0:848:6f5c:a327 with SMTP id d2e1a72fcca58-851d395a3b5mr18400958b3a.15.1787224428046; Thu, 20 Aug 2026 04:13:48 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851d36185c8sm1515460b3a.38.2026.08.20.04.13.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 04:13:47 -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 5/5] ASoC: mediatek: mt8186: Propagate clock lookup errors Date: Thu, 20 Aug 2026 18:12:53 +0700 Message-ID: <20260820111253.97866-6-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260820111253.97866-1-phucduc.bui@gmail.com> References: <20260820111253.97866-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 driver currently clears the clock pointer when devm_clk_get() fails and continues initialization. The clock operations later in the driver do not check for missing clocks before using them. Return the error from devm_clk_get() instead of continuing with an invalid clock state. Use dev_err_probe() to report the error while preserving the original error code. Signed-off-by: bui duc phuc --- sound/soc/mediatek/mt8186/mt8186-afe-clk.c | 9 +++------ 1 file changed, 3 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 8cc8eb8022b5..ddd509ca851b 100644 --- a/sound/soc/mediatek/mt8186/mt8186-afe-clk.c +++ b/sound/soc/mediatek/mt8186/mt8186-afe-clk.c @@ -592,12 +592,9 @@ int mt8186_init_clock(struct mtk_base_afe *afe) =20 for (i =3D 0; i < CLK_NUM; i++) { afe_priv->clk[i] =3D devm_clk_get(afe->dev, aud_clks[i]); - if (IS_ERR(afe_priv->clk[i])) { - dev_err(afe->dev, "%s devm_clk_get %s fail, ret %ld\n", - __func__, - aud_clks[i], PTR_ERR(afe_priv->clk[i])); - afe_priv->clk[i] =3D NULL; - } + if (IS_ERR(afe_priv->clk[i])) + return dev_err_probe(afe->dev, PTR_ERR(afe_priv->clk[i]), + "failed to get clock %s\n", aud_clks[i]); } =20 afe_priv->apmixedsys =3D syscon_regmap_lookup_by_phandle(of_node, --=20 2.43.0