From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=74.125.82.169 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1792426682; b=BbIt6jBLH+keVlbO/4C4GM15N7q40fpTHecCwQUe6KJJZlZLzxhK6PDnj/xI6l8UlT6z 9Cduq70y1lT7ZDqv+PnJ+iBiNHIz3Xgs9TUO01a7IToNCFON8T+AR5a8gZzCy0ef6opTz xlH5Q2S0k4sQ2TOjWAbb8BJPjWmPWQCtM2D67aZbv2sFzyTIMgi30gZJUL2e8QSF5Y7Ff SheRNsYzvbaoej150wpM8gzBTQliZV0Nw8M5dYVOsW+V+5lWBq80t0ygsSZePJbse34B2 qQ3lQe27+Wzu2NRNMi7BbVsexDbwr7HjvQlAUDdnGshacaXx1ZrcbW0PSsftIbWQ2ZQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792426682; 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=DXtMdBajp2aV+I9O1IycmvhTJ3P4GuSEtRtN8YcfKOk=; b=rS8y2Za7b2Bpu3DRoWdqD7N5IH3K8NRdkX15NmognWTO3RmO7Bm9UFOXFnT3l8floAgS QBU/+P12KTw7HHGKDi+LTBpmKh748aBTg7AkYHmgV3pyiKxbAGR2ut8g3XZn2aAHo1IDA C+BNUiDh9FkU/C++g6HzbEcrbRjzcP8+ECEwo6onXUg9+yeAInMVXTVBUYUw1y5ZNcfyB w1rlUwsQRZLucmFxbD8iXxtdhqOeFh4vRK/UBdq13ecfBn3aaeK0ySdh5N0CTJkbkE29Z /tZxcaBpeCB7T2Dqm16sIPVnxBhz86dyjPbeORSTlfHx/bk5UCOe/VYrgRlNtqXf9LA== 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=X6utE1Mi; arc=none smtp.remote-ip=74.125.82.169 Received: from mail-dy1-f169.google.com (mail-dy1-f169.google.com [74.125.82.169]) (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 3506360A263C for ; Mon, 19 Oct 2026 16:18:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 3506360A263C 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=X6utE1Mi Received: by mail-dy1-f169.google.com with SMTP id 5a478bee46e88-3645f0f3fcdso2418275eec.0 for ; Mon, 19 Oct 2026 09:18:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792426680; x=1793031480; 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=DXtMdBajp2aV+I9O1IycmvhTJ3P4GuSEtRtN8YcfKOk=; b=X6utE1MiMIBEcibYl326t/RLYXFKYrBr8JeJjXi72kPdntNkeFbGsKzNZPkJvwtVvY 72eoHC41r1x6Hwl8+seNa2qyLfdqWTtqfj0nPArZKR048dhOmVo0dJxXzqVhw/QxVKjG R5I+7PfmuObo8GTkWSn9FhfOudVRRTPKmM+zYVDdWz4mlwadjU8dHFkejd4ZB541CvTL obzT+hAn8hUmV6Bme4c3/jyv03eQcpChj0oS9IbplhuBMQH2DfWPANFjOmAX23TDKXYx nL3lZ/Mua3TfkORjou+Ep/AN24BWjv+MQo9XBdw3loAPX0j60AqvoKBpo0s4MSmdx92d 5BtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792426680; x=1793031480; 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=DXtMdBajp2aV+I9O1IycmvhTJ3P4GuSEtRtN8YcfKOk=; b=lETEKEZcn2MMI2wEvhNYukeCPx0nomvCgHwvfQoSwWPyfXgAGicsDVlPpIWMdjeIcb viQbUE5vYSae1wqcFJrHz0jcuGgW3QXRN/QtOQNZuRGiO+A/PWOLSpevgvngDYQCCcw8 P71H6xq2oA3ZUddlZOnMEzDv8msclUYctP31vVxDI6gjoEcsifvZrkbI8hdPaH47/bCn lpp1ufHiA4KKQlayfG3RLUSMtm9J+dSxFUuPgIo9R8Va6i6yxuvX1W1Q1jkE0Ispaz26 BmAnFnu0k+6uVQutOV3B2YfXl/+wN9dOWj1pWQbPPrUNZQvkvACu+IfAWjkUkl0nu4XT E3Kg== X-Forwarded-Encrypted: i=1; AKwUvBxvsCCr3RTOBn6zk8FDEfqdev3fqg0tVBsByaZrRWX57P2QL7UbKMbw/6TjkpRNMDzyChN/8pfBjWpDBM4=@vger.kernel.org X-Gm-Message-State: AFq9FYKO8XhBUyoRmyPlzgkqVxUPs4BNkoa6gYaFCeI3Bc8QwP0Uk7qH ziLUgnES46uxECY/jqrnbgRmSjYpMABFCLCuC0lf9H8oTWiTYFUKamgAnLjQsh1PKGs= X-Gm-Gg: AYBFou3HQVSzoFJI36SesYzXHNUbiFOm9Rg9Ks1+p9A92jZmojjHcPuoo5e56yiW8Ul 7+T1/44HM+W4+MnCsLrdRDcRpDNy/hbk7662zutOTDWK06cBtRzPVPGWAq6+/oyh89sUxrS4J9f DKe/vY+WV4tbiX9HmqxpMHSOIQhVqRm3UaO/GrBGfcjFCIgSbjJbnWDq/5vZGJNOvhL3+mVVUcy 6GAUiOlIvcSVw3SMfozP5rIoxIDIfQDQrmPXvIxoI4JzeJelKadk3KdMcA7o3RNsJm3gkiQju1k 32ksyWODIDXhaJ++U5atUmMJoGOuvXXPSMEgemcRHCkUtEs7KyCMGViA5s/vO2xMQF5HVuL/fUb o7WBiULh/nVddFPxhcDQBLzTqjj06gzgEEHtPSD4cCmWh0uOtzsY0nmUPHyf/fKVH1J/9uRQft6 gGbth6xlmXF1Aq6Fdi0l7uK/8ql1hnZr9ytyeTZB+vpdMwDyjdkh5rkb8Jo3DgGpxqawqOEebVo LsF9lbZmJc= X-Received: by 2002:a05:693c:88c6:20b0:35d:19d7:84c with SMTP id 5a478bee46e88-3619ea20ddemr11526918eec.3.1792426679694; Mon, 19 Oct 2026 09:17:59 -0700 (PDT) Received: from redducc.localdomain ([183.83.156.125]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-360819be413sm33410985eec.13.2026.10.19.09.17.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Oct 2026 09:17:59 -0700 (PDT) From: redducc To: Bjorn Andersson , Abel Vesa , Stephen Boyd , Brian Masney , Jerome Brunet , Vinod Koul , Vladimir Zapolskiy Cc: linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] clk: qcom: camcc-sm8450: Park the camera RCGs when they are disabled Date: Mon, 19 Oct 2026 16:17:40 +0000 Message-ID: <20261019161740.2384-4-sushmit718@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261019161740.2384-1-sushmit718@gmail.com> References: <20261019161740.2384-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: redducc --- 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