From mboxrd@z Thu Jan 1 00:00:00 1970 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: 8bit 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/mediatek/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 = 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; } } @@ -545,16 +545,25 @@ 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[div_clk_id], ret); - return ret; + goto ERR_ENABLE_MCLK_DIV; } ret = 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; } 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 >= 0) + clk_disable_unprepare(afe_priv->clk[m_sel_id]); +ERR_ENABLE_MCLK: + return ret; } void mt8186_mck_disable(struct mtk_base_afe *afe, int mck_id) -- 2.43.0