From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=74.125.82.171 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1792506194; b=yXAhqFF+e1/THu9lStdhE8f+kqvuDrmf4vjH4vccz3ClK0inVRMWGWXpYlXvBVZ8KEiu 6zvMDx4BiybQDGEu9isAN+v9C/7e1cTWjyxmI+YXpu/WOdNNM1JHVc+qxXrSWs8bx+UKO VUJ7HxsE5EbahLuyWiFRe70uVrz5zAVW5B6w0+4M8If60Azv0V81txvDCefdUkf5OTQbC rgA2eE0vBJ0vnJD7fcBGfjnFfxDlLw5L40Bv1tu2JeQENe+Mt5Ef7JrkbTyYNIblHQTbb 7CbXJNZ5fUBe5DLwRZbPUXpEytzMTLshNkYGx2CoXSAAGyWoQ0FGXWs/7w2QHc30RLA== 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=A4vhFpSPVA36EE1eRZwlcSsbXX4250h1YfYPOLtMoRC4eknmXh8eQe+hYGgRBIKFeXlc rPcHm58KQCu0qvtR2wX44kj44CAMglD5+iFUHxyJYl17yWKq0UB7CZmFTlsY6XiOE7chJ RAqe+vmOSKOdlSspUm+B82r0cP7j5T/6rFrm/z2tU4nqiOEG8QHqOopuv4mEV7iCRN/ym hlLitWrwErSNGBS/R/qtWPjT+2VisqvFLAN9VWERm6WpXdpXQFJ044ASGX0qptpXMGWZN K4zFdeE7+4XbU/WyKK/LSc3zvCrqenshCZYsWZrXgAl8GaEQ0p7a1E0/6nqDTVJdMng== 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.171 Received: from mail-dy1-f171.google.com (mail-dy1-f171.google.com [74.125.82.171]) (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 0DF3060A3813 for ; Tue, 20 Oct 2026 14:23:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 0DF3060A3813 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-f171.google.com with SMTP id 5a478bee46e88-3514b90bb89so8811539eec.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=2lGnuOPIc0pge/hRI5FgI+VDNCZem9UYvuUyQ9DIRQCw/6bECx0zvCUHNcUJtmqeSt BpQK3P57wwwoztivNEWMEcqPk/QkmMt35Ju+qW1g6OeIlVDMmKTRiXEknCI4DlgnNFgu fvKBGNKP01RZyuibPZDWVJJ34HJKT6S0xKLcAPcFC4CWRN2UMJlTHsASbAyEvMmsaHmn gUCgbqw49VSB0+QuzVWBhAGc458BvuNU38uhJiVEyOrrn5forH8mM9gzEZsQGF59OVJ7 vGjFUSo6A6dGbUyscWaCNrbDdjawl1gRsB5g5/FxRKXJtJd/HBqVgh1rxw2oHJWzbQpu dv1A== X-Forwarded-Encrypted: i=1; AKwUvBz3sIqWi9+b346CYMYa4VrTFQ/sNqDmUVEju8XJVziC+NXJmsCwM4skIpU0KraogV5XO51u/nfigTmpvtgH@vger.kernel.org X-Gm-Message-State: AFq9FYJemkrdQlA1DmgfwJmiuN7k9h27HI15xs7BoZS9AFzdBT7uATgV 88p3YPRmijHe0ygV0otQIytw1m+5qjQQWVttp7v+8P3lchEIXG7VJOT+ X-Gm-Gg: AYBFou1N5dwqYa4QlcF3Ja1upmPXZZ3UbOzmbrEUcZLT5VGT89AyhGoff5/N2mDCZRj wZz2FGqdox1IPfKxSW7u3/ncqUlOHz3Z6Ak03ON7Vp1e7R4udynHYEZEhfBL0D863z5owvdxGiF /KDO1oD+ejeSWjsIEeMewGYOidM2sLLwfJtsOu/IH2+j9i5TUZ4Z3SPd63WA0DCF19wXQkfa72S h8ps4CMy/F/j8R02keKkRM55cbSWWZ7ySnGlcfOJtZzl0X2O1AV3UjDZv6D0rndd4Y0uqfAZh1O AFp+SnuVQXvNGp48nDb3TUjUtAR9Hx3cx1zTI8v9M1QxmKb/mut/d4L7wRKBt6Q8/bfx3XhbDlq QyTNR9w8w+UU9zB6d1cy5ov+Gp4qm2V9VUPbjnNFcr1EOuLmR13+Qg+YZn9Yx3G1OOGKgD9V0W1 4PPZDOBvjqtUtdagnd0vh9Z7BMTJhIg+rhlwWP3r0j/dqAcjtbUIF8fpGNKNVE24hPFdSi3vN01 nyJ0FbNROGE8DGhqY5U3Q== 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-arm-msm@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