From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=74.125.82.172 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1792506194; b=Of9Ae2Oi5SAMZyfR1w3+XMGpS/hi8t/x0S+CT6WLa5v5kxSB3IUoyz1AbJfPekubEmhB 8Y8um4uJV+z7lcLd8bXuVLl3zVqbJbXV664yEVpK2C/pw7B43GlWpyjW2iB6zSIuBCuGA WMXNymq2AeUmF98Yl9T5H9+tIzOqi6iYvQ3+4OTTwnkVerPW15iKFEMDwRn/WrGVcWb7P e7c1HayaZjRpalesfzPR6QtTB/fjgK/v95L/EMj+z73KCLUh3HA51cftImaB3pnPqgLgu BVNcl1KvjpP7Fu1Db04XeVr8b/xCf85/Vi3IFe3lSBguXn60jfEdb63V8QymUsIr3mw== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792506194; h=DMARC-Filter:Received:DKIM-Signature:X-Google-DKIM-Signature: X-Forwarded-Encrypted:X-Gm-Message-State:X-Gm-Gg:X-Received:Received: From:To:Cc:Subject:Date:Message-ID:X-Mailer:In-Reply-To:References: MIME-Version:Content-Transfer-Encoding; bh=gYzXGRMxaGIQDWBnwBff6sLwaQBKmwfDNbBfvOOwBxY=; b=UVcloj6Ffg4jK0Z79RjhKqOvYh8IGaw78n4QE/gEtdpmqNXsCX7TgJFzJ5SjKtdXAXJ3 SYIbuwzNeMWzWUVihr+HJDwzlL51s1z4qvWOaBLR3RN4INB5u+WPVmn/gDP24CcvGOFM9 FYquwODRyiNSx3zDDkT7l067i0dSBDGzBklBoj6OxDBwDjFWw4O4dO0860oQ6YuFQMXZU oYEhDvC5LoJmsSssd6bFhylO9dHVt+ucNCW+m8dlEpgEH6dLoQnvFV+f6gCzASLCvQQsA UnyvRQJN7CJqoVjJTIVYDu7VGTNFNZ1q9mjbKs8VwHC/aJr3Dit0v1yD5MT0scqL2ZQ== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=OjuSNhyU; arc=none smtp.remote-ip=74.125.82.172 Received: from mail-dy1-f172.google.com (mail-dy1-f172.google.com [74.125.82.172]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C1FC60A380D for ; Tue, 20 Oct 2026 14:23:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 0C1FC60A380D 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, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=OjuSNhyU Received: by mail-dy1-f172.google.com with SMTP id 5a478bee46e88-3514b90bb89so8811542eec.1 for ; Tue, 20 Oct 2026 07:23:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792506193; x=1793110993; 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=gYzXGRMxaGIQDWBnwBff6sLwaQBKmwfDNbBfvOOwBxY=; b=OjuSNhyU77n6qmXyPE8r/uWx0E1NsGXH2d/hXFDxbBgKG5/e/eg0iqkcqa510LDch/ AGEys9lg/gB20lzReede3+jXBKLMPjck6c072yGWAEhAp1oX1tgpd7/OJ51wEZMOQ4tB jvX/YgJX29/2LggZVCM1k731HvZ6nuG6NlzgLMSbAQ9OnTkAXegpI/PsJ8prEBpkKk1X y34tU2ZKR/4CMpWU/8TCQrl2goy7SjRDjS6NdykMEQOaGYOWgNXF6ou5dmjvIcWosxsf l7fT49luASW/dtGadWPQeYtoITRhLfH0uqSV/qsvk3K4i489n8JD5yddzZc619JjyJ7g Hlqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792506193; x=1793110993; 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=gYzXGRMxaGIQDWBnwBff6sLwaQBKmwfDNbBfvOOwBxY=; b=fhXwBrleiEVD3hTD4FwFkmcbUQRJ6Fr0K39VoozeAzAiuBi39OYhLSKD74u1hCZtFb p27sJT2BqyRHKMDj0ee68p9fTgoT5i50nb3/iwfwJd4qlD/CBjBaxbk4JG/YabJ5qngp RCweD8JFY4PR1T63gD/ItQ0f9diLJgg5AsTvaXWyUOByBIKG+8uUWfsjANi/nyTEXctT UIy/TrqZPWpi5fN4+Jl1RXusbHI2AQJLzqya5iaM9Oe/BFsgAsdPlsithpiAH+BvaRG0 TQipWDzhUDip0VBvB4suA6anpF45t8OzJ5/xst+uakYet+eqBJUfH0uDDqJDDttOypgz GRzg== X-Forwarded-Encrypted: i=1; AKwUvBwU8Es2QESl47g2dpuEaFzmvKfNtbfuNVi9J0XbroO5As6FoPzJNOTBi865FqBPVDGPbrY3Yij1gfVxcMU=@vger.kernel.org X-Gm-Message-State: AFq9FYKDHgSd5MK8WRA4FeZLhUhsEptzTLWoUl5jAOh2lmdzWs1iBLww 9X4qEUp8IXlaG3mTUonKYyyUWT9RgmGXkR472OaZQw1WFJdEJLp09H4X X-Gm-Gg: AYBFou1PMIHDpn0NuftZ9UNxs4Y/tZE5J5Kg7txBhApY0aio1loWl2faJMAmU4Bmyzi yqvVzvxhHKoG7GxET3mlLF7t+oaBhGC7zcKiTMH3hfuZe7MbuOoyNFWHaHTb4710Ck+fyzHb/jc uiLZ1W1jPeWtG1KtUArBKCYWMcu/ioP2xQ3e7r4XCexVCdX9k27BOdpgs2/NTrHzsvrhmUPUo3M uJYpmf6i66sK3JmclwFyGFgqtRdWKE6QYH7CPALSCZtfAgPmhNZQc+MPadcbTZL69seD8gXi98a agxxHpYoQUJu+sA5fXFB7uSiS43EEZfrXiBgH9fjFzLp5PrmFkphWXrhYm8fg5smvk4zqVB2h2e B/GI3x1TEv1O/JR7z0G3Xt4Tw/OGGC7eLHMJa7p0t9O45YTwtpXTPpplEE9XNuiwnj8jE51gweG rcFD6mYZAUUUSkm7b0dAh3/2ntctbOrcoqFPFMMkHHibMzb/6aVR36dJEbTE0Cb1hp/BD1+sabJ 0uDzXjfMraFcT//1AOlEA== X-Received: by 2002:a05:693c:6390:10b0:35d:95e4:267d with SMTP id 5a478bee46e88-361a2645788mr15761590eec.27.1792506192581; Tue, 20 Oct 2026 07:23:12 -0700 (PDT) Received: from redducc.localdomain ([183.83.156.125]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-36081ab80f9sm66917444eec.12.2026.10.20.07.23.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2026 07:23:11 -0700 (PDT) From: Sushmit Singh Rathore To: Bjorn Andersson , Stephen Boyd Cc: Abel Vesa , Abel Vesa , Brian Masney , Jerome Brunet , Vinod Koul , Vladimir Zapolskiy , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Sushmit Singh Rathore Subject: [PATCH v2 3/3] clk: qcom: camcc-sm8450: Park the camera RCGs when they are disabled Date: Tue, 20 Oct 2026 14:21:31 +0000 Message-ID: <20261020142157.1749-4-sushmit718@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261020142157.1749-1-sushmit718@gmail.com> References: <20261020142157.1749-1-sushmit718@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The camera RCGs use clk_rcg2_ops, so a disabled RCG stays configured on whichever PLL it last ran from. When that PLL is turned off and the Titan top GDSC then collapses after a camera session, the SoC hangs. Switch them to clk_rcg2_shared_ops so they park on the XO while disabled, as camcc-sm8550 does. cam_cc_sleep_clk_src runs from the always-on sleep clock and is left alone. Tested on the Nothing Phone (2) (SM8475). Fixes: 6082037fe62e ("clk: qcom: add camera clock controller driver for SM8450 SoC") Assisted-by: LLM Signed-off-by: Sushmit Singh Rathore --- Changes in v2: - Use full name in From and Signed-off-by. drivers/clk/qcom/camcc-sm8450.c | 68 ++++++++++++++++----------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/drivers/clk/qcom/camcc-sm8450.c b/drivers/clk/qcom/camcc-sm8450.c index 9f1dd51db0d5..77b9d7efe390 100644 --- a/drivers/clk/qcom/camcc-sm8450.c +++ b/drivers/clk/qcom/camcc-sm8450.c @@ -834,7 +834,7 @@ static struct clk_rcg2 cam_cc_bps_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -856,7 +856,7 @@ static struct clk_rcg2 cam_cc_camnoc_axi_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -877,7 +877,7 @@ static struct clk_rcg2 cam_cc_cci_0_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -892,7 +892,7 @@ static struct clk_rcg2 cam_cc_cci_1_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -914,7 +914,7 @@ static struct clk_rcg2 cam_cc_cphy_rx_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -935,7 +935,7 @@ static struct clk_rcg2 cam_cc_csi0phytimer_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -950,7 +950,7 @@ static struct clk_rcg2 cam_cc_csi1phytimer_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -965,7 +965,7 @@ static struct clk_rcg2 cam_cc_csi2phytimer_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -980,7 +980,7 @@ static struct clk_rcg2 cam_cc_csi3phytimer_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -995,7 +995,7 @@ static struct clk_rcg2 cam_cc_csi4phytimer_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1010,7 +1010,7 @@ static struct clk_rcg2 cam_cc_csi5phytimer_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1031,7 +1031,7 @@ static struct clk_rcg2 cam_cc_csid_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1055,7 +1055,7 @@ static struct clk_rcg2 cam_cc_fast_ahb_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1078,7 +1078,7 @@ static struct clk_rcg2 cam_cc_icp_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1102,7 +1102,7 @@ static struct clk_rcg2 cam_cc_ife_0_clk_src = { .parent_data = cam_cc_parent_data_2, .num_parents = ARRAY_SIZE(cam_cc_parent_data_2), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1126,7 +1126,7 @@ static struct clk_rcg2 cam_cc_ife_1_clk_src = { .parent_data = cam_cc_parent_data_3, .num_parents = ARRAY_SIZE(cam_cc_parent_data_3), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1149,7 +1149,7 @@ static struct clk_rcg2 cam_cc_ife_2_clk_src = { .parent_data = cam_cc_parent_data_4, .num_parents = ARRAY_SIZE(cam_cc_parent_data_4), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1170,7 +1170,7 @@ static struct clk_rcg2 cam_cc_ife_lite_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1185,7 +1185,7 @@ static struct clk_rcg2 cam_cc_ife_lite_csid_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1208,7 +1208,7 @@ static struct clk_rcg2 cam_cc_ipe_nps_clk_src = { .parent_data = cam_cc_parent_data_5, .num_parents = ARRAY_SIZE(cam_cc_parent_data_5), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1223,7 +1223,7 @@ static struct clk_rcg2 cam_cc_jpeg_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1245,7 +1245,7 @@ static struct clk_rcg2 cam_cc_mclk0_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1260,7 +1260,7 @@ static struct clk_rcg2 cam_cc_mclk1_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1275,7 +1275,7 @@ static struct clk_rcg2 cam_cc_mclk2_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1290,7 +1290,7 @@ static struct clk_rcg2 cam_cc_mclk3_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1305,7 +1305,7 @@ static struct clk_rcg2 cam_cc_mclk4_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1320,7 +1320,7 @@ static struct clk_rcg2 cam_cc_mclk5_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1335,7 +1335,7 @@ static struct clk_rcg2 cam_cc_mclk6_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1350,7 +1350,7 @@ static struct clk_rcg2 cam_cc_mclk7_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1373,7 +1373,7 @@ static struct clk_rcg2 cam_cc_qdss_debug_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1396,7 +1396,7 @@ static struct clk_rcg2 cam_cc_sfe_0_clk_src = { .parent_data = cam_cc_parent_data_6, .num_parents = ARRAY_SIZE(cam_cc_parent_data_6), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1419,7 +1419,7 @@ static struct clk_rcg2 cam_cc_sfe_1_clk_src = { .parent_data = cam_cc_parent_data_7, .num_parents = ARRAY_SIZE(cam_cc_parent_data_7), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1460,7 +1460,7 @@ static struct clk_rcg2 cam_cc_slow_ahb_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; @@ -1480,7 +1480,7 @@ static struct clk_rcg2 cam_cc_xo_clk_src = { .parent_data = cam_cc_parent_data_9_ao, .num_parents = ARRAY_SIZE(cam_cc_parent_data_9_ao), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_shared_ops, }, }; -- 2.43.0