From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f170.google.com (mail-pg1-f170.google.com [209.85.215.170]) (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 25774175A98 for ; Sat, 11 Jul 2026 14:18:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.170 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783779490; cv=none; b=GaZkVslWmq8C8GdyiIkpxP4CmC5J3CT4uMMewvSasyXZd9FWhz2fP0i+y0j0BnXMyBsGx6t4/TUY1j2UHpBTUPs7eTuwPgByosfpYcykCGdm5N9I/z0J6/xsXQoUurAsoLYKtDiJSiSy7ZoXMCg+3i24Pugn1Qbk2o5q/RzupYE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783779490; c=relaxed/simple; bh=P8fGItMJVTkI29IuTk27ZviMnOihY03AzedJHB3s2tk=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=A0F2OFumOZniv1xEjToAG2UG3WQ2NmRq3ROZbyp+e8ed9yLzogubnrSZnO3DgPcyomXeRPtOmDfAmvyCLPg70ApBXBzXMuQPrU3ZQcNMjIKXQw2QSMQhYQJBCJMQqyBNaCNVdM/DjjEzwlsEbyKQAov/1lnXUkuBgP6cXg39qg8= 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=Dn61qurG; arc=none smtp.client-ip=209.85.215.170 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="Dn61qurG" Received: by mail-pg1-f170.google.com with SMTP id 41be03b00d2f7-c9aea40d799so811494a12.0 for ; Sat, 11 Jul 2026 07:18:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783779488; x=1784384288; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=xXyPFDoQ8rlAk10+E4qXYKOCM6mEcLGKZu2GMaaYaDc=; b=Dn61qurGK4ZRVaMJRFDBXqcbmwwNZqDvtv4zc8SCwea9U+pmGkq35PcTbsVV080o6s zn1qpMGovNp+1Dnkqp6CnkaVnKCUMLak90LOXEpJ+vF8q5E89RNU8Giu+F3HpQsuGuCl GExDCmVgZMPZgw7RwS590OnoACqv0XiyPISQO2Fdtbx8ef7VCEfmQNQxGFB5i0NkcGtU 9FZAQ4AE41OUs5vYh3fFm0hZiaIhFxw+gJzn2giYlm17HIn/q+WdSixjvNm/tRWFf1zm LuivpLn92IC3WeVoJYQjhAaWNFM6BiaVwgBmGGI64Z6HU0ytx8xZP22Uaogju4Elsojq LBQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783779488; x=1784384288; h=content-transfer-encoding:mime-version: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=xXyPFDoQ8rlAk10+E4qXYKOCM6mEcLGKZu2GMaaYaDc=; b=NvMwIHGe6hYbAINpGfLyGnE4NAFBLGaaT8e38aCd97GqqsOT9hVgn0puF3XQ60ihVS TBX4sb5FToe3CCsZbsPtgTzI93rDJliLyA+Fvp1j8FAhxWyHJIAJlqUR/uhs62JGNUrp zCdgz8l2XWCZepY9WCiy101QQWvUpz87f8C6wEGeCKo0r6RfFk34+lLpzRRXvU27ySy6 szhds6hSOWRybdQZVEA1Wgf1c1/ujecCcT7sVTK0BZDDZweJpjGAFYBRwDCnlHs07BNf BKpdtI8/80iKyZMjuAFiudRsrXXlCaSwW3xUGbr20MvaQ3DxActcerX8MqtrS373CqUH i8HA== X-Forwarded-Encrypted: i=1; AHgh+Ro+U1JERz2ntDeL32W5r6CP+KTyzuvIWEJdsBGKVAMLWs2vODRjBPKChXNvl+CNWdsJ/+FbNzOl3L8xVjA=@vger.kernel.org X-Gm-Message-State: AOJu0YxsG5Hw5LHIzH2+kdfdrdlNDTqW9KVaNg/wcP6gnQFvJc9q11RB hBaQjYW9tQ2SMlNh7mBmmN7FRAUkC7DpNHHSn/9ORV5EIU+rjuEUO/OqvTOe X-Gm-Gg: AfdE7cmBthK3DCRCngkFGRJVVwuHu/vQzMr0hIOoc1E9FVDuABQ7uTGb7F4JLh7iZG9 wdRMbcdOGWEgF40JZiMSrDyo4qRSemnUH5x8sokftIzjwEFm79ISqheEkmmSiLM8bHmIv1sNW0D Gr0kMYJpESCXZCzCWs/vauCxVJQiTf/JCJmh8ghFHITOI1lhvkFWCPMoVtPm3afpAvUN8VPNuMJ kAiLg3SGvnTLzO3rsxjcqUsSAvByLqZGdM5Gtzgn5d39FNNZKubzEX/5opwOzrpz7GTaZ2yFdYD DLjoTRlR6IzvEzTTyCrPD/TmEfPGHiL8dQzdQSdfUz5+yPFjyvRZpjIhjDqX82wio1eQHM3Opw0 9H/YNTbKgs57abjD2TjcvryacniTl9t4a36b3CUNNgj8ndE5w0Uhk1HdtqF3shNzqTNwtXXgTq/ f6V2+uZ9VEwr08zsZMk6GaQXtIYPt3fRYLws12FhnR0irafGLRMBgvw7YY+MCiiIO3QHl8xGgSp Y8w1/2/lTwNAq3m0Vsz8SwkX+Ce13aahQlIvbJFVKIrwBG7zA== X-Received: by 2002:a05:6a21:1798:b0:3c0:9c1a:8952 with SMTP id adf61e73a8af0-3c110b35019mr3048915637.74.1783779488418; Sat, 11 Jul 2026 07:18:08 -0700 (PDT) Received: from localhost.localdomain ([14.5.152.27]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-ca5b3a2e420sm6338597a12.29.2026.07.11.07.18.04 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sat, 11 Jul 2026 07:18:07 -0700 (PDT) From: Myeonghun Pak To: Michael Turquette , Stephen Boyd Cc: Brian Masney , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Myeonghun Pak , Ijae Kim Subject: [PATCH v3 1/2] clk: palmas: Manage external-control prepare with devm Date: Sat, 11 Jul 2026 23:17:42 +0900 Message-ID: <20260711141755.96842-1-mhun512@gmail.com> X-Mailer: git-send-email 2.47.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit palmas_clks_init_configure() prepares the clock when an external control pin is configured. The current driver only drops that prepare reference when external control configuration fails. If provider registration fails after that point, or if the driver is later removed, the prepare reference remains held. Register a device-managed action after clk_prepare() succeeds. This balances the prepare reference on subsequent probe failure and driver removal. Fixes: 942d1d674931 ("clk: Add driver for Palmas clk32kg and clk32kgaudio clocks") Co-developed-by: Ijae Kim Signed-off-by: Ijae Kim Signed-off-by: Myeonghun Pak --- Changes in v3: - Split external-control prepare lifetime handling from provider registration. drivers/clk/clk-palmas.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/clk/clk-palmas.c b/drivers/clk/clk-palmas.c index 39049f62db..86a51edac8 100644 --- a/drivers/clk/clk-palmas.c +++ b/drivers/clk/clk-palmas.c @@ -194,6 +194,13 @@ static void palmas_clks_get_clk_data(struct platform_device *pdev, cinfo->ext_control_pin = prop; } +static void palmas_clks_unprepare_ext_control(void *data) +{ + struct palmas_clock_info *cinfo = data; + + clk_unprepare(cinfo->hw.clk); +} + static int palmas_clks_init_configure(struct palmas_clock_info *cinfo) { int ret; @@ -214,13 +221,18 @@ static int palmas_clks_init_configure(struct palmas_clock_info *cinfo) return ret; } + ret = devm_add_action_or_reset(cinfo->dev, + palmas_clks_unprepare_ext_control, + cinfo); + if (ret) + return ret; + ret = palmas_ext_control_req_config(cinfo->palmas, cinfo->clk_desc->sleep_reqstr_id, cinfo->ext_control_pin, true); if (ret < 0) { dev_err(cinfo->dev, "Ext config for %s failed, %d\n", cinfo->clk_desc->clk_name, ret); - clk_unprepare(cinfo->hw.clk); return ret; } } -- 2.47.1