From nobody Tue Jun 16 02:38:26 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 658173B3895 for ; Wed, 15 Apr 2026 13:33:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776260015; cv=none; b=naFt792arNlVXhV6JRENdLdEuUKJouzhr8ujQrIGo5WJku98AP7iMGwxuegiytwcwnz4MM4rfC7zE73g5vmmTLXj17l8YeiCGyvlSnKbVxr0jtW2RRV4uSFTg48pYfz3dsTwzNPtYmJc7Q/mkKS5sTasEnsfQDw8MbyY8jowzVg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776260015; c=relaxed/simple; bh=3IaTrOI1CGyyipf3GBAwoUzudda5VdE6I+EEydORhkc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SF9GJwgFStsjhExlmYcAk2+6fnv2TvatyVRCI+bevDmO5Dv3ozDPJ8SAe7irVjXLcagR3BUA/G+FbrtRwWGFYFBW+BnZnBajZNCXniWKvr0mOZ4I9g9Ars96hdKnok5YYPOrEBfo45X/XcUP6cIS/ByLGtoZVoMZ6SXS/VeITs0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=IylJ3OFw; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=JpAMFqtO; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="IylJ3OFw"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="JpAMFqtO" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63F97vaq4052905 for ; Wed, 15 Apr 2026 13:33:31 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= DFTr3YCb4BFcTR2f/dxzQNU33KODHbTNeNARXugbBP8=; b=IylJ3OFw3DwOFceo cJoUsj60s3tgp3X0FrHkE/uf47cZKDjVTOBJsTdtZBhpnoGI95ldhNmh0ZgK+gVe o32nYNwUBVobp7IY74SJ86qV3iHRKu9YD0GSCOGhrGT1dzrdNXjya6393SDmjiXZ Q5akvy28j11NoRN76pd7Ww2PtfmRDgV2qbHlS4hMIJ5VnOuW7A0YWhUND4mrd3Pu hpuz9JL3ph/O70LySDg1lwOIplrrvztyNZN+UlWN++r47sbgthnWICJrh8vjDEXF t8TBWCr6szz25xqdXumlnf2j6rM9W9qh1a7ACa6/3OySxnnBwQOKLV5SFwxTU6Np K4veMw== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dj7s5rtqk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 15 Apr 2026 13:33:31 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-82f220f1dabso2505986b3a.1 for ; Wed, 15 Apr 2026 06:33:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776260011; x=1776864811; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=DFTr3YCb4BFcTR2f/dxzQNU33KODHbTNeNARXugbBP8=; b=JpAMFqtOrS64LqNEoDbVb72JilfgL4CBcMfJy3iXFcfab/a22RcS7ByTROg9Xm9JsL qNOHPQPMydKm+XrOhlut6rg3cj09ke8c8PbM4o+LtkIseSV+0PDcTF2pegjY7+TSNaSN igTIgYSS/21If0asetrOK7RfRr9az3Dt+QN7rFiUNbT+OYzxk4yIsnQm/98/h0nIF65a kecBB+k33F/XWbFXn30YHLnsH6S8FIlAN1DO705gUIEkkdZZ/egAhBs4N7HUtnq+PoLx DpAIp6Snig2XkZyHUIf/Ld6hBNm0vT3I6/nsseeBvggvKIT3HII2kG94wg/sFQfOMJEE 2G5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776260011; x=1776864811; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=DFTr3YCb4BFcTR2f/dxzQNU33KODHbTNeNARXugbBP8=; b=leQo3WdXWDczKCcGz/fyNS65Q7ItGI4UElZ+EyswVSc6MnqTg9CxHFTpSUmbpIknVG pG+1tmQrCp8VI6tgRyQS+ISdk4JSHTWFT3V6UCo3IqbXlaxW+Gam3uPjurueFb5iBOwt 2tRQx9Zfiv3uz0S2Je86mEJDXZZte8ulqKx01wUKbfIzgw9qRpZV54hfynlwrI0BpKdz TeQv/LXLSAyfoXkKyRtjjorNCWnj9F8imwWygseE1/u712ui85iBODr4sZhiPoWHhItJ Yocjgs1aZVceOM7O7aqZwTwbdkQCk8zL2N+BFkBGY9wkiD6Fee32p+pnF6Irrb8i8VaD GMtw== X-Forwarded-Encrypted: i=1; AFNElJ/JU4b/gCRcwcJGp4ylDAx92PCzpFkL80+QFG+8SBfcLflQfnS/Rjz04Mpv6cfKMJyIuTXF2J/1ePZo3iE=@vger.kernel.org X-Gm-Message-State: AOJu0YzT2p7EGTKAuBfpnzuK6vbXvfhiOB1Y+sADedeAzSbPfz9yHNJJ hHMWGHYqYDPQV5m7v7bXsbq4IeDJs3c9+hGZvfFRrA8mynGVykJjQHY4910A5N6E6cILw4mENgF CD2UAAtytmhAS/I042PZddY7/OlJvlEpaw2pSpMQdCJw6qEfhwWvngVIi/+vB3DrSPm0= X-Gm-Gg: AeBDievB6O7gWjUWJtyXhbh4vOJtrNdN1DacKJ+pm/EMckEUaDZ/pZFtL0znmVNnQqz CcEHKF1wp7a9Qf0tV5qkKR1SJnBOxeck5t3Y2lZu3gcrzbq4NLhboxft5g+gL+MTEHZmMskyoHN NNTfMQkUY6ZQadVKFNFbkqHkmGEvog2IKQZIU/pdxB1SKitUgqbHXlyjtwqBIiPAnnk95j7A3Tj HOKo7d4VXUvSySZl88kofPHjaM9fr6fCaUW9PPGjUHX8MJK8dN8GvH/nPV6UOhl33/xH9JSJHo7 u3BqPB7fkDobS/UfPXN9m7xmy22Gru96aNssLRgdlvdcgc5CVSj+jIEnr3egNgq7YHuHo5MySr/ KMQuic6w8FWcDAzyprESTuyMKqukoZp+72DHxhfeXZDg0RECEUa+GGXmoMYPt2eLw4V/UeIx2b1 3wraCMCxJDXgRzAPQUvMeZk1e9rQ81c5+x6mP3OjKlpsUZNBFFpx0ykMCC X-Received: by 2002:a05:6a00:808c:b0:829:8942:2ca4 with SMTP id d2e1a72fcca58-82f0c281379mr20701089b3a.19.1776260010715; Wed, 15 Apr 2026 06:33:30 -0700 (PDT) X-Received: by 2002:a05:6a00:808c:b0:829:8942:2ca4 with SMTP id d2e1a72fcca58-82f0c281379mr20701035b3a.19.1776260009963; Wed, 15 Apr 2026 06:33:29 -0700 (PDT) Received: from hu-kathirav-blr.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f6b95f222sm1602774b3a.29.2026.04.15.06.33.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 06:33:29 -0700 (PDT) From: Kathiravan Thirumoorthy Date: Wed, 15 Apr 2026 19:03:16 +0530 Subject: [PATCH 1/5] dt-bindings: clock: add Qualcomm IPQ9650 GCC Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260415-ipq9650_boot_to_shell-v1-1-b37eb4c3a1d1@oss.qualcomm.com> References: <20260415-ipq9650_boot_to_shell-v1-0-b37eb4c3a1d1@oss.qualcomm.com> In-Reply-To: <20260415-ipq9650_boot_to_shell-v1-0-b37eb4c3a1d1@oss.qualcomm.com> To: Bjorn Andersson , Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Kathiravan Thirumoorthy X-Mailer: b4 0.15.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776260000; l=19616; i=kathiravan.thirumoorthy@oss.qualcomm.com; s=20230906; h=from:subject:message-id; bh=3IaTrOI1CGyyipf3GBAwoUzudda5VdE6I+EEydORhkc=; b=sR7aLJViX3KLS6esj5K98Ztbx0Zix5RvmsJ9AUPKDDtGLr+B6RaGBMzSBGyio6Bt9Ulf84JUi lO+2hjB6kEaAO5hJk+EHY5MV+SemCqssuk013dUxfyPOFyP5ViMXR0W X-Developer-Key: i=kathiravan.thirumoorthy@oss.qualcomm.com; a=ed25519; pk=xWsR7pL6ch+vdZ9MoFGEaP61JUaRf0XaZYWztbQsIiM= X-Authority-Analysis: v=2.4 cv=A7Zc+aWG c=1 sm=1 tr=0 ts=69df93ab cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=gEfo2CItAAAA:8 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=WFUcH46kpRkaEDnmzbAA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 a=sptkURWiP4Gy88Gu7hUp:22 X-Proofpoint-ORIG-GUID: -hGeNJTTTXQfDgcIVf6BnM04lEyFDl4D X-Proofpoint-GUID: -hGeNJTTTXQfDgcIVf6BnM04lEyFDl4D X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDE1MDEyNiBTYWx0ZWRfXygz7vDJClwtL kDQoYqvK0WBbn1z/Hl/FHhJ7WTrU8EJ1ERLALZkCooQUYg/rBw3//XPv5DjGUHk1df1S0Zl9lg5 MQdGqv0Y0NwKC/ya9bP5rhGubsXdOVZND7ps6HsZtR4WZoiXNHRaePaNjLv2Au8jD0La+Z9pw2h 7hAveDm45OUCEc/aZWuSZwr32vU60kwIAoS/XZgMRN0vBYqOl2yxUkvR8vWSDRjxxJLvyKfXrr+ jpUpq0rIU+Q1YDUBN0ePIIkUB8YHSkPsviuR8cIpcX5phFCi7IV/ZLdpjabbHmuiah94VzEW6lC tcPjmolmC3ORDCtxHAO44xsJS93bW0H26rFZAKqyri8WDQRt7VUgh+f8oOSxNXLyAhMDTJjFZ98 biQu12mA08HjIzGZuYSGZ1gavcoCjmL+wdqsAr/uYUPAqQoP6e8WRc/80h9XDcWygRGYaPfw6Oc /OizFruyYfl13WZHjYA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-15_01,2026-04-13_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 adultscore=0 bulkscore=0 priorityscore=1501 phishscore=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604150126 Add binding for the Qualcomm IPQ9650 Global Clock Controller. Signed-off-by: Kathiravan Thirumoorthy Reviewed-by: Krzysztof Kozlowski --- .../bindings/clock/qcom,ipq9650-gcc.yaml | 68 ++++++ include/dt-bindings/clock/qcom,ipq9650-gcc.h | 190 +++++++++++++++++ include/dt-bindings/reset/qcom,ipq9650-gcc.h | 228 +++++++++++++++++= ++++ 3 files changed, 486 insertions(+) diff --git a/Documentation/devicetree/bindings/clock/qcom,ipq9650-gcc.yaml = b/Documentation/devicetree/bindings/clock/qcom,ipq9650-gcc.yaml new file mode 100644 index 000000000000..f33105217a06 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/qcom,ipq9650-gcc.yaml @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/qcom,ipq9650-gcc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm Global Clock & Reset Controller on IPQ9650 + +maintainers: + - Bjorn Andersson + - Kathiravan Thirumoorthy + +description: | + Qualcomm global clock control module provides the clocks, resets and pow= er + domains on IPQ9650 + + See also: + include/dt-bindings/clock/qcom,ipq9650-gcc.h + include/dt-bindings/reset/qcom,ipq9650-gcc.h + +properties: + compatible: + const: qcom,ipq9650-gcc + + clocks: + items: + - description: Board XO source + - description: Sleep clock source + - description: PCIE30 PHY0 pipe clock source + - description: PCIE30 PHY1 pipe clock source + - description: PCIE30 PHY2 pipe clock source + - description: PCIE30 PHY3 pipe clock source + - description: PCIE30 PHY4 pipe clock source + - description: USB PCIE wrapper pipe clock source + - description: NSS common clock source + + '#power-domain-cells': false + + '#interconnect-cells': + const: 1 + +required: + - compatible + - clocks + +allOf: + - $ref: qcom,gcc.yaml# + +unevaluatedProperties: false + +examples: + - | + clock-controller@1800000 { + compatible =3D "qcom,ipq9650-gcc"; + reg =3D <0x01800000 0x40000>; + clocks =3D <&xo_board_clk>, + <&sleep_clk>, + <&pcie30_phy0_pipe_clk>, + <&pcie30_phy1_pipe_clk>, + <&pcie30_phy2_pipe_clk>, + <&pcie30_phy3_pipe_clk>, + <&pcie30_phy4_pipe_clk>, + <&usb3phy_0_cc_pipe_clk>, + <&nss_cmn_clk>; + #clock-cells =3D <1>; + #reset-cells =3D <1>; + }; +... diff --git a/include/dt-bindings/clock/qcom,ipq9650-gcc.h b/include/dt-bind= ings/clock/qcom,ipq9650-gcc.h new file mode 100644 index 000000000000..600240227c3d --- /dev/null +++ b/include/dt-bindings/clock/qcom,ipq9650-gcc.h @@ -0,0 +1,190 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#ifndef _DT_BINDINGS_CLOCK_IPQ_GCC_IPQ9650_H +#define _DT_BINDINGS_CLOCK_IPQ_GCC_IPQ9650_H + +#define GCC_ADSS_PWM_CLK 0 +#define GCC_ADSS_PWM_CLK_SRC 1 +#define GCC_ANOC_PCIE0_1LANE_M_CLK 2 +#define GCC_ANOC_PCIE0_1LANE_S_CLK 3 +#define GCC_ANOC_PCIE1_2LANE_M_CLK 4 +#define GCC_ANOC_PCIE1_2LANE_S_CLK 5 +#define GCC_ANOC_PCIE2_2LANE_M_CLK 6 +#define GCC_ANOC_PCIE2_2LANE_S_CLK 7 +#define GCC_ANOC_PCIE3_2LANE_M_CLK 8 +#define GCC_ANOC_PCIE3_2LANE_S_CLK 9 +#define GCC_ANOC_PCIE4_1LANE_M_CLK 10 +#define GCC_ANOC_PCIE4_1LANE_S_CLK 11 +#define GCC_CMN_12GPLL_AHB_CLK 12 +#define GCC_CMN_12GPLL_APU_CLK 13 +#define GCC_CMN_12GPLL_SYS_CLK 14 +#define GCC_CMN_LDO_CLK 15 +#define GCC_MDIO_AHB_CLK 16 +#define GCC_NSSCC_CLK 17 +#define GCC_NSSCFG_CLK 18 +#define GCC_NSSNOC_ATB_CLK 19 +#define GCC_NSSNOC_MEMNOC_1_CLK 20 +#define GCC_NSSNOC_MEMNOC_BFDCD_CLK_SRC 21 +#define GCC_NSSNOC_MEMNOC_CLK 22 +#define GCC_NSSNOC_MEMNOC_DIV_CLK_SRC 23 +#define GCC_NSSNOC_NSSCC_CLK 24 +#define GCC_NSSNOC_PCNOC_1_CLK 25 +#define GCC_NSSNOC_QOSGEN_REF_CLK 26 +#define GCC_NSSNOC_SNOC_1_CLK 27 +#define GCC_NSSNOC_SNOC_CLK 28 +#define GCC_NSSNOC_TIMEOUT_REF_CLK 29 +#define GCC_NSSNOC_XO_DCD_CLK 30 +#define GCC_NSS_TS_CLK 31 +#define GCC_NSS_TS_CLK_SRC 32 +#define GCC_PCIE0_AHB_CLK 33 +#define GCC_PCIE0_AUX_CLK 34 +#define GCC_PCIE0_AXI_M_CLK 35 +#define GCC_PCIE0_AXI_M_CLK_SRC 36 +#define GCC_PCIE0_AXI_S_BRIDGE_CLK 37 +#define GCC_PCIE0_AXI_S_CLK 38 +#define GCC_PCIE0_AXI_S_CLK_SRC 39 +#define GCC_PCIE0_PIPE_CLK 40 +#define GCC_PCIE0_PIPE_CLK_SRC 41 +#define GCC_PCIE0_RCHNG_CLK 42 +#define GCC_PCIE0_RCHNG_CLK_SRC 43 +#define GCC_PCIE1_AHB_CLK 44 +#define GCC_PCIE1_AUX_CLK 45 +#define GCC_PCIE1_AXI_M_CLK 46 +#define GCC_PCIE1_AXI_M_CLK_SRC 47 +#define GCC_PCIE1_AXI_S_BRIDGE_CLK 48 +#define GCC_PCIE1_AXI_S_CLK 49 +#define GCC_PCIE1_AXI_S_CLK_SRC 50 +#define GCC_PCIE1_PIPE_CLK 51 +#define GCC_PCIE1_PIPE_CLK_SRC 52 +#define GCC_PCIE1_RCHNG_CLK 53 +#define GCC_PCIE1_RCHNG_CLK_SRC 54 +#define GCC_PCIE2_AHB_CLK 55 +#define GCC_PCIE2_AUX_CLK 56 +#define GCC_PCIE2_AXI_M_CLK 57 +#define GCC_PCIE2_AXI_M_CLK_SRC 58 +#define GCC_PCIE2_AXI_S_BRIDGE_CLK 59 +#define GCC_PCIE2_AXI_S_CLK 60 +#define GCC_PCIE2_AXI_S_CLK_SRC 61 +#define GCC_PCIE2_PIPE_CLK 62 +#define GCC_PCIE2_PIPE_CLK_SRC 63 +#define GCC_PCIE2_RCHNG_CLK 64 +#define GCC_PCIE2_RCHNG_CLK_SRC 65 +#define GCC_PCIE3_AHB_CLK 66 +#define GCC_PCIE3_AUX_CLK 67 +#define GCC_PCIE3_AXI_M_CLK 68 +#define GCC_PCIE3_AXI_M_CLK_SRC 69 +#define GCC_PCIE3_AXI_S_BRIDGE_CLK 70 +#define GCC_PCIE3_AXI_S_CLK 71 +#define GCC_PCIE3_AXI_S_CLK_SRC 72 +#define GCC_PCIE3_PIPE_CLK 73 +#define GCC_PCIE3_PIPE_CLK_SRC 74 +#define GCC_PCIE3_RCHNG_CLK 75 +#define GCC_PCIE3_RCHNG_CLK_SRC 76 +#define GCC_PCIE4_AHB_CLK 77 +#define GCC_PCIE4_AUX_CLK 78 +#define GCC_PCIE4_AXI_M_CLK 79 +#define GCC_PCIE4_AXI_M_CLK_SRC 80 +#define GCC_PCIE4_AXI_S_BRIDGE_CLK 81 +#define GCC_PCIE4_AXI_S_CLK 82 +#define GCC_PCIE4_AXI_S_CLK_SRC 83 +#define GCC_PCIE4_PIPE_CLK 84 +#define GCC_PCIE4_PIPE_CLK_SRC 85 +#define GCC_PCIE4_RCHNG_CLK 86 +#define GCC_PCIE4_RCHNG_CLK_SRC 87 +#define GCC_PCIE_AUX_CLK_SRC 88 +#define GCC_PCIE_CMN_HCLK 89 +#define GCC_PCIE_CMN_LDO_CLK 90 +#define GCC_PCNOC_BFDCD_CLK_SRC 91 +#define GCC_PRIMESS_AHBM_CLK 92 +#define GCC_PRIMESS_AHBM_CLK_SRC 93 +#define GCC_PRIMESS_AHBM_PARTIAL_CLK 94 +#define GCC_PRIMESS_AHBS_CLK 95 +#define GCC_PRIMESS_ATB_CLK 96 +#define GCC_PRIMESS_AXIM_CLK 97 +#define GCC_PRIMESS_AXIM_CLK_SRC 98 +#define GCC_PRIMESS_AXIM_PARTIAL_CLK 99 +#define GCC_PRIMESS_CLK 100 +#define GCC_PRIMESS_CLK_SRC 101 +#define GCC_PRIMESS_XO_CLK 102 +#define GCC_QDSS_AT_CLK 103 +#define GCC_QDSS_AT_CLK_SRC 104 +#define GCC_QDSS_DAP_CLK 105 +#define GCC_QDSS_TSCTR_CLK_SRC 106 +#define GCC_QPIC_AHB_CLK 107 +#define GCC_QPIC_CLK 108 +#define GCC_QPIC_CLK_SRC 109 +#define GCC_QPIC_IO_MACRO_CLK 110 +#define GCC_QPIC_IO_MACRO_CLK_SRC 111 +#define GCC_QPIC_SLEEP_CLK 112 +#define GCC_QUPV3_2X_CORE_CLK 113 +#define GCC_QUPV3_2X_CORE_CLK_SRC 114 +#define GCC_QUPV3_AHB_MST_CLK 115 +#define GCC_QUPV3_AHB_SLV_CLK 116 +#define GCC_QUPV3_CORE_CLK 117 +#define GCC_QUPV3_SLEEP_CLK 118 +#define GCC_QUPV3_WRAP_SE0_CLK 119 +#define GCC_QUPV3_WRAP_SE0_CLK_SRC 120 +#define GCC_QUPV3_WRAP_SE1_CLK 121 +#define GCC_QUPV3_WRAP_SE1_CLK_SRC 122 +#define GCC_QUPV3_WRAP_SE2_CLK 123 +#define GCC_QUPV3_WRAP_SE2_CLK_SRC 124 +#define GCC_QUPV3_WRAP_SE3_CLK 125 +#define GCC_QUPV3_WRAP_SE3_CLK_SRC 126 +#define GCC_QUPV3_WRAP_SE4_CLK 127 +#define GCC_QUPV3_WRAP_SE4_CLK_SRC 128 +#define GCC_QUPV3_WRAP_SE5_CLK 129 +#define GCC_QUPV3_WRAP_SE5_CLK_SRC 130 +#define GCC_QUPV3_WRAP_SE6_CLK 131 +#define GCC_QUPV3_WRAP_SE6_CLK_SRC 132 +#define GCC_QUPV3_WRAP_SE7_CLK 133 +#define GCC_QUPV3_WRAP_SE7_CLK_SRC 134 +#define GCC_REFGEN_CORE_CLK_SRC 135 +#define GCC_REFGEN_PCIE_CORE_CLK 136 +#define GCC_REFGEN_PCIE_HCLK 137 +#define GCC_SDCC1_AHB_CLK 138 +#define GCC_SDCC1_APPS_CLK 139 +#define GCC_SDCC1_APPS_CLK_SRC 140 +#define GCC_SDCC1_ICE_CORE_CLK 141 +#define GCC_SDCC1_ICE_CORE_CLK_SRC 142 +#define GCC_SLEEP_CLK_SRC 143 +#define GCC_SNOC_USB_CLK 144 +#define GCC_SYSTEM_NOC_BFDCD_CLK_SRC 145 +#define GCC_TLMM_AHB_CLK 146 +#define GCC_TLMM_CLK 147 +#define GCC_UNIPHY0_AHB_CLK 148 +#define GCC_UNIPHY0_SYS_CLK 149 +#define GCC_UNIPHY1_AHB_CLK 150 +#define GCC_UNIPHY1_SYS_CLK 151 +#define GCC_UNIPHY2_AHB_CLK 152 +#define GCC_UNIPHY2_SYS_CLK 153 +#define GCC_UNIPHY_SYS_CLK_SRC 154 +#define GCC_USB0_AUX_CLK 155 +#define GCC_USB0_AUX_CLK_SRC 156 +#define GCC_USB0_EUD_AT_CLK 157 +#define GCC_USB0_MASTER_CLK 158 +#define GCC_USB0_MASTER_CLK_SRC 159 +#define GCC_USB0_MOCK_UTMI_CLK 160 +#define GCC_USB0_MOCK_UTMI_CLK_SRC 161 +#define GCC_USB0_MOCK_UTMI_DIV_CLK_SRC 162 +#define GCC_USB0_PHY_CFG_AHB_CLK 163 +#define GCC_USB0_PIPE_CLK 164 +#define GCC_USB0_PIPE_CLK_SRC 165 +#define GCC_USB0_SLEEP_CLK 166 +#define GCC_USB1_MASTER_CLK 167 +#define GCC_USB1_MOCK_UTMI_CLK 168 +#define GCC_USB1_MOCK_UTMI_CLK_SRC 169 +#define GCC_USB1_MOCK_UTMI_DIV_CLK_SRC 170 +#define GCC_USB1_PHY_CFG_AHB_CLK 171 +#define GCC_USB1_SLEEP_CLK 172 +#define GCC_USB_CMN_HCLK 173 +#define GCC_USB_CMN_LDO_CLK 174 +#define GCC_XO_CLK_SRC 175 +#define GPLL0 176 +#define GPLL0_MAIN 177 +#define GPLL2 178 +#define GPLL2_OUT_MAIN 179 +#define GPLL4 180 +#endif diff --git a/include/dt-bindings/reset/qcom,ipq9650-gcc.h b/include/dt-bind= ings/reset/qcom,ipq9650-gcc.h new file mode 100644 index 000000000000..0b8dd3ff4257 --- /dev/null +++ b/include/dt-bindings/reset/qcom,ipq9650-gcc.h @@ -0,0 +1,228 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#ifndef _DT_BINDINGS_RESET_IPQ_GCC_IPQ9650_H +#define _DT_BINDINGS_RESET_IPQ_GCC_IPQ9650_H + +#define GCC_ADSS_BCR 0 +#define GCC_ADSS_PWM_CLK_ARES 1 +#define GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR 2 +#define GCC_APC0_VOLTAGE_DROOP_DETECTOR_GPLL0_CLK_ARES 3 +#define GCC_APSS_AHB_CLK_ARES 4 +#define GCC_APSS_ATB_CLK_ARES 5 +#define GCC_APSS_AXI_CLK_ARES 6 +#define GCC_APSS_TS_CLK_ARES 7 +#define GCC_BOOT_ROM_AHB_CLK_ARES 8 +#define GCC_BOOT_ROM_BCR 9 +#define GCC_CMN_12GPLL_AHB_CLK_ARES 10 +#define GCC_CMN_12GPLL_APU_CLK_ARES 11 +#define GCC_CMN_12GPLL_SYS_CLK_ARES 12 +#define GCC_CMN_BLK_BCR 13 +#define GCC_CMN_LDO_CLK_ARES 14 +#define GCC_CPUSS_TRIG_CLK_ARES 15 +#define GCC_GP1_CLK_ARES 16 +#define GCC_GP2_CLK_ARES 17 +#define GCC_GP3_CLK_ARES 18 +#define GCC_MDIO_AHB_CLK_ARES 19 +#define GCC_MDIO_BCR 20 +#define GCC_NSSCC_CLK_ARES 21 +#define GCC_NSSCFG_CLK_ARES 22 +#define GCC_NSSNOC_ATB_CLK_ARES 23 +#define GCC_NSSNOC_MEMNOC_1_CLK_ARES 24 +#define GCC_NSSNOC_MEMNOC_CLK_ARES 25 +#define GCC_NSSNOC_NSSCC_CLK_ARES 26 +#define GCC_NSSNOC_PCNOC_1_CLK_ARES 27 +#define GCC_NSSNOC_QOSGEN_REF_CLK_ARES 28 +#define GCC_NSSNOC_SNOC_1_CLK_ARES 29 +#define GCC_NSSNOC_SNOC_CLK_ARES 30 +#define GCC_NSSNOC_TIMEOUT_REF_CLK_ARES 31 +#define GCC_NSSNOC_XO_DCD_CLK_ARES 32 +#define GCC_NSS_BCR 33 +#define GCC_NSS_TS_CLK_ARES 34 +#define GCC_PCIE0PHY_PHY_BCR 35 +#define GCC_PCIE0_AHB_CLK_ARES 36 +#define GCC_PCIE0_AHB_RESET 37 +#define GCC_PCIE0_AUX_CLK_ARES 38 +#define GCC_PCIE0_AUX_RESET 39 +#define GCC_PCIE0_AXI_M_CLK_ARES 40 +#define GCC_PCIE0_AXI_M_RESET 41 +#define GCC_PCIE0_AXI_M_STICKY_RESET 42 +#define GCC_PCIE0_AXI_S_BRIDGE_CLK_ARES 43 +#define GCC_PCIE0_AXI_S_CLK_ARES 44 +#define GCC_PCIE0_AXI_S_RESET 45 +#define GCC_PCIE0_AXI_S_STICKY_RESET 46 +#define GCC_PCIE0_BCR 47 +#define GCC_PCIE0_CORE_STICKY_RESET 48 +#define GCC_PCIE0_LINK_DOWN_BCR 49 +#define GCC_PCIE0_PHY_BCR 50 +#define GCC_PCIE0_PIPE_CLK_ARES 51 +#define GCC_PCIE0_PIPE_RESET 52 +#define GCC_PCIE1PHY_PHY_BCR 53 +#define GCC_PCIE1_AHB_CLK_ARES 54 +#define GCC_PCIE1_AHB_RESET 55 +#define GCC_PCIE1_AUX_CLK_ARES 56 +#define GCC_PCIE1_AUX_RESET 57 +#define GCC_PCIE1_AXI_M_CLK_ARES 58 +#define GCC_PCIE1_AXI_M_RESET 59 +#define GCC_PCIE1_AXI_M_STICKY_RESET 60 +#define GCC_PCIE1_AXI_S_BRIDGE_CLK_ARES 61 +#define GCC_PCIE1_AXI_S_CLK_ARES 62 +#define GCC_PCIE1_AXI_S_RESET 63 +#define GCC_PCIE1_AXI_S_STICKY_RESET 64 +#define GCC_PCIE1_BCR 65 +#define GCC_PCIE1_CORE_STICKY_RESET 66 +#define GCC_PCIE1_LINK_DOWN_BCR 67 +#define GCC_PCIE1_PHY_BCR 68 +#define GCC_PCIE1_PIPE_CLK_ARES 69 +#define GCC_PCIE1_PIPE_RESET 70 +#define GCC_PCIE2PHY_PHY_BCR 71 +#define GCC_PCIE2_AHB_CLK_ARES 72 +#define GCC_PCIE2_AHB_RESET 73 +#define GCC_PCIE2_AUX_CLK_ARES 74 +#define GCC_PCIE2_AUX_RESET 75 +#define GCC_PCIE2_AXI_M_CLK_ARES 76 +#define GCC_PCIE2_AXI_M_RESET 77 +#define GCC_PCIE2_AXI_M_STICKY_RESET 78 +#define GCC_PCIE2_AXI_S_BRIDGE_CLK_ARES 79 +#define GCC_PCIE2_AXI_S_CLK_ARES 80 +#define GCC_PCIE2_AXI_S_RESET 81 +#define GCC_PCIE2_AXI_S_STICKY_RESET 82 +#define GCC_PCIE2_BCR 83 +#define GCC_PCIE2_CORE_STICKY_RESET 84 +#define GCC_PCIE2_LINK_DOWN_BCR 85 +#define GCC_PCIE2_PHY_BCR 86 +#define GCC_PCIE2_PIPE_CLK_ARES 87 +#define GCC_PCIE2_PIPE_RESET 88 +#define GCC_PCIE3PHY_PHY_BCR 89 +#define GCC_PCIE3_AHB_CLK_ARES 90 +#define GCC_PCIE3_AHB_RESET 91 +#define GCC_PCIE3_AUX_CLK_ARES 92 +#define GCC_PCIE3_AUX_RESET 93 +#define GCC_PCIE3_AXI_M_CLK_ARES 94 +#define GCC_PCIE3_AXI_M_RESET 95 +#define GCC_PCIE3_AXI_M_STICKY_RESET 96 +#define GCC_PCIE3_AXI_S_BRIDGE_CLK_ARES 97 +#define GCC_PCIE3_AXI_S_CLK_ARES 98 +#define GCC_PCIE3_AXI_S_RESET 99 +#define GCC_PCIE3_AXI_S_STICKY_RESET 100 +#define GCC_PCIE3_BCR 101 +#define GCC_PCIE3_CORE_STICKY_RESET 102 +#define GCC_PCIE3_LINK_DOWN_BCR 103 +#define GCC_PCIE3_PHY_BCR 104 +#define GCC_PCIE3_PIPE_CLK_ARES 105 +#define GCC_PCIE3_PIPE_RESET 106 +#define GCC_PCIE4PHY_PHY_BCR 107 +#define GCC_PCIE4_AHB_CLK_ARES 108 +#define GCC_PCIE4_AHB_RESET 109 +#define GCC_PCIE4_AUX_CLK_ARES 110 +#define GCC_PCIE4_AUX_RESET 111 +#define GCC_PCIE4_AXI_M_CLK_ARES 112 +#define GCC_PCIE4_AXI_M_RESET 113 +#define GCC_PCIE4_AXI_M_STICKY_RESET 114 +#define GCC_PCIE4_AXI_S_BRIDGE_CLK_ARES 115 +#define GCC_PCIE4_AXI_S_CLK_ARES 116 +#define GCC_PCIE4_AXI_S_RESET 117 +#define GCC_PCIE4_AXI_S_STICKY_RESET 118 +#define GCC_PCIE4_BCR 119 +#define GCC_PCIE4_CORE_STICKY_RESET 120 +#define GCC_PCIE4_LINK_DOWN_BCR 121 +#define GCC_PCIE4_PHY_BCR 122 +#define GCC_PCIE4_PIPE_CLK_ARES 123 +#define GCC_PCIE4_PIPE_RESET 124 +#define GCC_PCIE_CMN_LDO_BCR 125 +#define GCC_PRIMESS_AHBM_CLK_ARES 126 +#define GCC_PRIMESS_AHBM_PARTIAL_CLK_ARES 127 +#define GCC_PRIMESS_AHBS_CLK_ARES 128 +#define GCC_PRIMESS_ATB_CLK_ARES 129 +#define GCC_PRIMESS_AXIM_CLK_ARES 130 +#define GCC_PRIMESS_AXIM_PARTIAL_CLK_ARES 131 +#define GCC_PRIMESS_CLK_ARES 132 +#define GCC_PRIMESS_XO_CLK_ARES 133 +#define GCC_PRIME_SS_BCR 134 +#define GCC_QDSS_APB2JTAG_CLK_ARES 135 +#define GCC_QDSS_AT_CLK_ARES 136 +#define GCC_QDSS_BCR 137 +#define GCC_QDSS_CFG_AHB_CLK_ARES 138 +#define GCC_QDSS_DAP_AHB_CLK_ARES 139 +#define GCC_QDSS_DAP_CLK_ARES 140 +#define GCC_QDSS_ETR_USB_CLK_ARES 141 +#define GCC_QDSS_EUD_AT_CLK_ARES 142 +#define GCC_QDSS_STM_CLK_ARES 143 +#define GCC_QDSS_TRACECLKIN_CLK_ARES 144 +#define GCC_QDSS_TSCTR_DIV16_CLK_ARES 145 +#define GCC_QDSS_TSCTR_DIV2_CLK_ARES 146 +#define GCC_QDSS_TSCTR_DIV3_CLK_ARES 147 +#define GCC_QDSS_TSCTR_DIV4_CLK_ARES 148 +#define GCC_QDSS_TSCTR_DIV8_CLK_ARES 149 +#define GCC_QDSS_TS_CLK_ARES 150 +#define GCC_QPIC_AHB_CLK_ARES 151 +#define GCC_QPIC_BCR 152 +#define GCC_QPIC_CLK_ARES 153 +#define GCC_QPIC_IO_MACRO_CLK_ARES 154 +#define GCC_QPIC_SLEEP_CLK_ARES 155 +#define GCC_QUPV3_2X_CORE_CLK_ARES 156 +#define GCC_QUPV3_AHB_MST_CLK_ARES 157 +#define GCC_QUPV3_AHB_SLV_CLK_ARES 158 +#define GCC_QUPV3_BCR 159 +#define GCC_QUPV3_CORE_CLK_ARES 160 +#define GCC_QUPV3_WRAP_SE0_BCR 161 +#define GCC_QUPV3_WRAP_SE0_CLK_ARES 162 +#define GCC_QUPV3_WRAP_SE1_BCR 163 +#define GCC_QUPV3_WRAP_SE1_CLK_ARES 164 +#define GCC_QUPV3_WRAP_SE2_BCR 165 +#define GCC_QUPV3_WRAP_SE2_CLK_ARES 166 +#define GCC_QUPV3_WRAP_SE3_BCR 167 +#define GCC_QUPV3_WRAP_SE3_CLK_ARES 168 +#define GCC_QUPV3_WRAP_SE4_BCR 169 +#define GCC_QUPV3_WRAP_SE4_CLK_ARES 170 +#define GCC_QUPV3_WRAP_SE5_BCR 171 +#define GCC_QUPV3_WRAP_SE5_CLK_ARES 172 +#define GCC_QUPV3_WRAP_SE6_BCR 173 +#define GCC_QUPV3_WRAP_SE6_CLK_ARES 174 +#define GCC_QUPV3_WRAP_SE7_BCR 175 +#define GCC_QUPV3_WRAP_SE7_CLK_ARES 176 +#define GCC_QUSB2_0_PHY_BCR 177 +#define GCC_QUSB2_1_PHY_BCR 178 +#define GCC_REFGEN_PCIE_BCR 179 +#define GCC_REFGEN_PCIE_CORE_CLK_ARES 180 +#define GCC_SDCC1_APPS_CLK_ARES 181 +#define GCC_SDCC1_ICE_CORE_CLK_ARES 182 +#define GCC_SDCC_BCR 183 +#define GCC_TLMM_AHB_CLK_ARES 184 +#define GCC_TLMM_BCR 185 +#define GCC_TLMM_CLK_ARES 186 +#define GCC_UNIPHY0_AHB_CLK_ARES 187 +#define GCC_UNIPHY0_BCR 188 +#define GCC_UNIPHY0_PMA_BCR 189 +#define GCC_UNIPHY0_SYS_CLK_ARES 190 +#define GCC_UNIPHY0_XPCS_ARES 191 +#define GCC_UNIPHY1_AHB_CLK_ARES 192 +#define GCC_UNIPHY1_BCR 193 +#define GCC_UNIPHY1_PMA_BCR 194 +#define GCC_UNIPHY1_SYS_CLK_ARES 195 +#define GCC_UNIPHY1_XPCS_ARES 196 +#define GCC_UNIPHY2_AHB_CLK_ARES 197 +#define GCC_UNIPHY2_BCR 198 +#define GCC_UNIPHY2_PMA_BCR 199 +#define GCC_UNIPHY2_SYS_CLK_ARES 200 +#define GCC_UNIPHY2_XPCS_ARES 201 +#define GCC_USB0_AUX_CLK_ARES 202 +#define GCC_USB0_MASTER_CLK_ARES 203 +#define GCC_USB0_MOCK_UTMI_CLK_ARES 204 +#define GCC_USB0_PHY_BCR 205 +#define GCC_USB0_PHY_CFG_AHB_CLK_ARES 206 +#define GCC_USB0_PIPE_CLK_ARES 207 +#define GCC_USB0_SLEEP_CLK_ARES 208 +#define GCC_USB1_BCR 209 +#define GCC_USB1_MASTER_CLK_ARES 210 +#define GCC_USB1_MOCK_UTMI_CLK_ARES 211 +#define GCC_USB1_PHY_CFG_AHB_CLK_ARES 212 +#define GCC_USB1_SLEEP_CLK_ARES 213 +#define GCC_USB3PHY_0_PHY_BCR 214 +#define GCC_USB_BCR 215 +#define GCC_USB_CMN_LDO_BCR 216 +#define GCC_UNIPHY1_XLGPCS_ARES 217 +#define GCC_UNIPHY2_XLGPCS_ARES 218 +#endif --=20 2.34.1 From nobody Tue Jun 16 02:38:26 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F37713B3BFE for ; Wed, 15 Apr 2026 13:33:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776260025; cv=none; b=DmNZplm/6joGucthJbuVa3UZYe9ty57PU/AU8TkqMYgUNHOX9DVGqxx3BcwjTQLsFfCnYh58PIFH8XCk8Mc5zzYpsYBCcxgjnBBQ1i/a8XDUOazsw5fiKAvxaqs4x1LIfjyG3tV07cAVzidjzHjowJv6ZtqlWqMx9HVVRx4jjiU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776260025; c=relaxed/simple; bh=Ddk3JDuA5R/rCuM5HbVlaatI4l75memlW+oiKuJWHhY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p4YVkrE0hINkZNmbe+SMwoUfMacgPIJdRSt+dBcmb8NTSyju8UMv3+9G8+YV3zQrmRgIi4XkeGHsSr/jZ09TrOK1nw5rr0HWl22uerNKQZCC5aod/jqKYc05Qo8mjb2Fwmplyv53rfw7JN7ud/DNeT7SDflVzeLhn1Wp6aDq5GE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=H8kv4spp; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=LU/dUpWX; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="H8kv4spp"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="LU/dUpWX" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63FCgoKB2772654 for ; Wed, 15 Apr 2026 13:33:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= xL5Z/lUeEnjjuS7/g2EfnEQuihjP8TuzEo5IZkTU/sA=; b=H8kv4sppnVMUSqZd 4H5sDZqejADxcXm1mhZxWPNm9UzEedHlMxP2VDpf7QY+sBuXEKAEkOkmMX+vrFVm /WMqdIGdIvts6CmPJCe1w/PswdS5u+CdJ3yK2m4EoWkPBQyFa9KepToTWW0BmTLO As1fM6JU/vAOlEKWBurM11slO3PwlmyQU5mZ/tWgpLXrBuWcpiks6rNxdeD5lgif dJEO2r+Q5l6m/DqBhmxnvdSHsBaqJBFC6Min0JL34GksWzXG09y2az6AQJXyK4h0 IfQ4E44bO3q8Qpg3VhMsIa1u/WYJSDSzBkoZ2mk4wsykiPMSvC1yQiFCLB4cmhyP Ns1Fcg== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dj50v1jyj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 15 Apr 2026 13:33:39 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-82f5baa5418so1169152b3a.0 for ; Wed, 15 Apr 2026 06:33:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776260018; x=1776864818; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=xL5Z/lUeEnjjuS7/g2EfnEQuihjP8TuzEo5IZkTU/sA=; b=LU/dUpWXL2WzKVnCo6nobz5WtJYjkiL9PR6VMFLe+1dlbyN6ugbkKLQVHt0j9KlGyP 9iXm/opmaVx5DpP/1nvk34PPB6qbePkOOJTLoaRT94o4B2n8YIrlhtlSUN7Oshuabj8G PgNtEo/sllUfAcv70GdO6Histz1jC7xiFZYwhzfPLeLtHZmDyyLNYlcNqnmWfFY+Puq6 WhiRqgCusFx4of1AN2gbw4n/J3zo2rbeDc7w7BPN8RoI/j8zE+JyICG7lasPcTMkJfet Sxj1OfJcFKzU2hUsIxv3FTQVlI+lumkobx4f644XGV7u0jDqwBYdsbaH6GZmX3EaQtoP 930A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776260018; x=1776864818; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=xL5Z/lUeEnjjuS7/g2EfnEQuihjP8TuzEo5IZkTU/sA=; b=FEKEATyZiRz8JSrRlUhLscc3kaPVsX16ivx1R7fYylfD4eltGO8XZEkgVry3iDkDUp Wa/zp50HcMYIBBY6E2ujyMi0b4wnPZAcLJTJqTniDqR0/WhGJARqPW+0HBn8skM6IQnB QHZpsCRQOnLPTTZqbhWj+LnK1qOeU4zDQYvUL/ZdlkDSZDpah5DxrWKIbiWi7wyCyjQw DVffYiSjnedfHoFg44Fu8vOnF+oB9Vt/ITxkgCjML7v9+8vBAn5Nc3eGEOL8FbfSMY/w ppHhO0Or5SG2SIe3D+vlpKPZUcJ6JDA1/UC68ickuAm20zFwSh3VVSbm7KJAbFmFLmL3 X6tg== X-Forwarded-Encrypted: i=1; AFNElJ934MlF3VE0UZZZfPq7HqwoTXPbWGJtj64QYxV3BWcM5SGx9AnQMzbs7rRDGSyPn7Q67lCMkOcSXVYl4lY=@vger.kernel.org X-Gm-Message-State: AOJu0YyG4Zv3O41zEojCSoxNzNQz4rL0FPSCWQTSQcZvw6FeQW9YhF7r 18t3zKBrv26y0Hwpw8V1Xq9EbVPjfX2NBiK0zFObqilvklCs57CWttij2HRggwImM44z4+p4nNL FJfiUVMqKxEQS0UJR3ylirtPFnYYABwgFbmXDlx52EQnv5t60q8UMPccLXrYJMuswy+A= X-Gm-Gg: AeBDievHCUMLL3FK6OlVPm9AXb7FxdAaGyH2uZI6vZ1Xe+kbEIDuZ6NWpv6gk5ZBF9n 64nTAoV0c8RZu55HDYVIGSSDLiZM1Q/7e2CDFnywYkok33CxvIM4dwA3ar47vlITH1/FDR7qP6/ UIScjnaO90w3tC8YmjmjsQvfRd6ZuvMF/tOd/iagnJ1OFnkTWlnShblPn7q/SgoFJAF1eZphNZF ZsKT1AsWuqcY2s0g/wuhvPJcGvJgI+bRX2xWAB4EhheSMqqDzneXZ0D//kRKP1C1uwtDVpTAhiM YhY0c2fZmZzK/bN6y6utExowuIk2IPrRxl7vnAM9EoLOfxAWNE63D4VO10aEVQzJXuanBJaJkvb hmriWTukgcWEo4F+5fYP8MUEbo+HmN4PczB9eKp+VBKlAAQ21wYUARwykvrQFG2pClVy+bwwSd+ J9QvJ7eRAjLG41JkUctPh8PZ2oHL9KKXkLWSgCT1rEcO+aelSWgUXxUs0t X-Received: by 2002:a05:6a00:4fcf:b0:82c:9c4e:66ca with SMTP id d2e1a72fcca58-82f0d0d190dmr16866660b3a.2.1776260016619; Wed, 15 Apr 2026 06:33:36 -0700 (PDT) X-Received: by 2002:a05:6a00:4fcf:b0:82c:9c4e:66ca with SMTP id d2e1a72fcca58-82f0d0d190dmr16866590b3a.2.1776260015229; Wed, 15 Apr 2026 06:33:35 -0700 (PDT) Received: from hu-kathirav-blr.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f6b95f222sm1602774b3a.29.2026.04.15.06.33.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 06:33:34 -0700 (PDT) From: Kathiravan Thirumoorthy Date: Wed, 15 Apr 2026 19:03:17 +0530 Subject: [PATCH 2/5] clk: qcom: add Global Clock controller (GCC) driver for IPQ9650 SoC Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260415-ipq9650_boot_to_shell-v1-2-b37eb4c3a1d1@oss.qualcomm.com> References: <20260415-ipq9650_boot_to_shell-v1-0-b37eb4c3a1d1@oss.qualcomm.com> In-Reply-To: <20260415-ipq9650_boot_to_shell-v1-0-b37eb4c3a1d1@oss.qualcomm.com> To: Bjorn Andersson , Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Kathiravan Thirumoorthy X-Mailer: b4 0.15.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776260000; l=113429; i=kathiravan.thirumoorthy@oss.qualcomm.com; s=20230906; h=from:subject:message-id; bh=Ddk3JDuA5R/rCuM5HbVlaatI4l75memlW+oiKuJWHhY=; b=k25S5wZe0GPH7QN8DDPDBRHMegvGg3eV1b3E2U8o+n1Gcz6MjD8aZ//rz26Uyq/06/ornVEyW 0gdxps0XswHB8mg2SKcNMAEB0l8IYEKmNZhpOnNA8UBkrOGc+lATHwy X-Developer-Key: i=kathiravan.thirumoorthy@oss.qualcomm.com; a=ed25519; pk=xWsR7pL6ch+vdZ9MoFGEaP61JUaRf0XaZYWztbQsIiM= X-Proofpoint-GUID: TgdNjG_fyBJuDlS87J861VGPe5dif2Up X-Authority-Analysis: v=2.4 cv=eLMjSnp1 c=1 sm=1 tr=0 ts=69df93b3 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=oHrhzBd6vu-Q_AiB_RQA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDE1MDEyNiBTYWx0ZWRfXxYeGcszqd7Uk qiSsQUIyOQ4ruBB0kP7wDlW4yN9SOGMJ18cADjWcX8x7d6J4jJ7MDbPUMzbDI/0M/RRYjL8tPJd dBu4EGU4AYm3gRAdVN8RsugPUkHx5QDRb3j/TubAaFfBlIjLtTVB7akOlu1zoJAS3WsKqhOEbAi 5KveJmwNhfpdx6Ms7Y/8lhCINfP8XPNa/DO0Xfm0hzhb/zLcE4O1cCQ30HjP/kJUwoPT3jrUvRm MswwqE8fdULRO4c2A6ZCw8X9xHbeUiic7qkHj3r1SDo0M8obt19MR5D/EOTr7CCco0D9VE2bb9q VHrSWX+TvJwk6Ci1BD3R09c9ONTofkYGvYTQmkofcaJxD9+/L8f91zVVa3/3hRGJVX1gEkKvm5H T0RvaFARVVb/ED/EN6J1Urbg/7p70xUKzxKMEsGZE2QB3lmF6ov4M/iaXNPm+hOHUXmRPiy+yjH 9+efNRTJwVHxCgAISIw== X-Proofpoint-ORIG-GUID: TgdNjG_fyBJuDlS87J861VGPe5dif2Up X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-15_01,2026-04-13_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604150126 Add support for the global clock controller found on IPQ9650 SoC. Signed-off-by: Kathiravan Thirumoorthy --- drivers/clk/qcom/Kconfig | 8 + drivers/clk/qcom/Makefile | 1 + drivers/clk/qcom/gcc-ipq9650.c | 3794 ++++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 3803 insertions(+) diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig index df21ef5ffd68..ed4c5765557b 100644 --- a/drivers/clk/qcom/Kconfig +++ b/drivers/clk/qcom/Kconfig @@ -434,6 +434,14 @@ config IPQ_GCC_9574 i2c, USB, SD/eMMC, etc. Select this for the root clock of ipq9574. =20 +config IPQ_GCC_9650 + tristate "IPQ9650 Global Clock Controller" + help + Support for global clock controller on ipq9650 devices. + Say Y if you want to use peripheral devices such as UART, SPI, + i2c, USB, SD/eMMC, etc. Select this for the root clock + of ipq9650. + config IPQ_NSSCC_5424 tristate "IPQ5424 NSS Clock Controller" depends on ARM64 || COMPILE_TEST diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile index 89d07c35e4d9..ca04117371cf 100644 --- a/drivers/clk/qcom/Makefile +++ b/drivers/clk/qcom/Makefile @@ -57,6 +57,7 @@ obj-$(CONFIG_IPQ_GCC_6018) +=3D gcc-ipq6018.o obj-$(CONFIG_IPQ_GCC_806X) +=3D gcc-ipq806x.o obj-$(CONFIG_IPQ_GCC_8074) +=3D gcc-ipq8074.o obj-$(CONFIG_IPQ_GCC_9574) +=3D gcc-ipq9574.o +obj-$(CONFIG_IPQ_GCC_9650) +=3D gcc-ipq9650.o obj-$(CONFIG_IPQ_NSSCC_5424) +=3D nsscc-ipq5424.o obj-$(CONFIG_IPQ_NSSCC_9574) +=3D nsscc-ipq9574.o obj-$(CONFIG_IPQ_LCC_806X) +=3D lcc-ipq806x.o diff --git a/drivers/clk/qcom/gcc-ipq9650.c b/drivers/clk/qcom/gcc-ipq9650.c new file mode 100644 index 000000000000..8f5d368be0c5 --- /dev/null +++ b/drivers/clk/qcom/gcc-ipq9650.c @@ -0,0 +1,3794 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include +#include +#include +#include + +#include +#include + +#include "clk-alpha-pll.h" +#include "clk-branch.h" +#include "clk-rcg.h" +#include "clk-regmap.h" +#include "clk-regmap-divider.h" +#include "clk-regmap-mux.h" +#include "clk-regmap-phy-mux.h" +#include "reset.h" + +enum { + DT_XO, + DT_SLEEP_CLK, + DT_PCIE30_PHY0_PIPE_CLK, + DT_PCIE30_PHY1_PIPE_CLK, + DT_PCIE30_PHY2_PIPE_CLK, + DT_PCIE30_PHY3_PIPE_CLK, + DT_PCIE30_PHY4_PIPE_CLK, + DT_USB3_PHY0_CC_PIPE_CLK, + DT_NSS_CMN_CLK, +}; + +enum { + P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, + P_GPLL0_OUT_MAIN, + P_GPLL0_OUT_ODD, + P_GPLL2_OUT_AUX, + P_GPLL2_OUT_MAIN, + P_GPLL4_OUT_MAIN, + P_GPLL4_OUT_ODD, + P_NSS_CMN_CLK, + P_SLEEP_CLK, + P_XO, +}; + +static const struct clk_parent_data gcc_parent_data_xo =3D { .index =3D DT= _XO }; + +static struct clk_alpha_pll gpll0_main =3D { + .offset =3D 0x20000, + .regs =3D clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], + .clkr =3D { + .enable_reg =3D 0xb000, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gpll0_main", + .parent_data =3D &gcc_parent_data_xo, + .num_parents =3D 1, + .ops =3D &clk_alpha_pll_fixed_lucid_ops, + }, + }, +}; + +static struct clk_fixed_factor gpll0_div2 =3D { + .mult =3D 1, + .div =3D 2, + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gpll0_div2", + .parent_hws =3D (const struct clk_hw *[]) { + &gpll0_main.clkr.hw + }, + .num_parents =3D 1, + .ops =3D &clk_fixed_factor_ops, + }, +}; + +static struct clk_alpha_pll_postdiv gpll0 =3D { + .offset =3D 0x20000, + .regs =3D clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], + .width =3D 4, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gpll0", + .parent_hws =3D (const struct clk_hw *[]) { + &gpll0_main.clkr.hw }, + .num_parents =3D 1, + .ops =3D &clk_alpha_pll_postdiv_ro_ops, + }, +}; + +static struct clk_alpha_pll gpll2 =3D { + .offset =3D 0x21000, + .regs =3D clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_ZONDA], + .clkr =3D { + .enable_reg =3D 0xb000, + .enable_mask =3D BIT(1), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gpll2", + .parent_data =3D &gcc_parent_data_xo, + .num_parents =3D 1, + .ops =3D &clk_alpha_pll_zonda_ops, + }, + }, +}; + +static const struct clk_div_table post_div_table_gpll2_out_main[] =3D { + { 0x1, 2 }, + { } +}; + +static struct clk_alpha_pll_postdiv gpll2_out_main =3D { + .offset =3D 0x21000, + .post_div_table =3D post_div_table_gpll2_out_main, + .num_post_div =3D ARRAY_SIZE(post_div_table_gpll2_out_main), + .width =3D 2, + .regs =3D clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_ZONDA], + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gpll2_out_main", + .parent_hws =3D (const struct clk_hw*[]) { + &gpll2.clkr.hw, + }, + .num_parents =3D 1, + .ops =3D &clk_alpha_pll_postdiv_zonda_ops, + }, +}; + +static struct clk_alpha_pll gpll4 =3D { + .offset =3D 0x22000, + .regs =3D clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], + .clkr =3D { + .enable_reg =3D 0xb000, + .enable_mask =3D BIT(2), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gpll4", + .parent_data =3D &gcc_parent_data_xo, + .num_parents =3D 1, + /* + * There are no consumers for this GPLL in kernel yet, + * (will be added soon), so the clock framework + * disables this source. But some of the clocks + * initialized by boot loaders uses this source. So we + * need to keep this clock ON. Add the + * CLK_IGNORE_UNUSED flag so the clock will not be + * disabled. Once the consumer in kernel is added, we + * can get rid of this flag. + */ + .flags =3D CLK_IS_CRITICAL, + .ops =3D &clk_alpha_pll_fixed_lucid_ops, + }, + }, +}; + +static const struct parent_map gcc_parent_map_xo[] =3D { + { P_XO, 0 }, +}; + +static const struct parent_map gcc_parent_map_0[] =3D { + { P_XO, 0 }, + { P_GPLL0_OUT_MAIN, 1 }, + { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 }, +}; + +static const struct clk_parent_data gcc_parent_data_0[] =3D { + { .index =3D DT_XO }, + { .hw =3D &gpll0.clkr.hw }, + { .hw =3D &gpll0_div2.hw }, +}; + +static const struct parent_map gcc_parent_map_1[] =3D { + { P_XO, 0 }, + { P_GPLL0_OUT_MAIN, 1 }, + { P_GPLL4_OUT_MAIN, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_1[] =3D { + { .index =3D DT_XO }, + { .hw =3D &gpll0.clkr.hw }, + { .hw =3D &gpll4.clkr.hw }, +}; + +static const struct parent_map gcc_parent_map_2[] =3D { + { P_XO, 0 }, + { P_GPLL0_OUT_MAIN, 1 }, +}; + +static const struct clk_parent_data gcc_parent_data_2[] =3D { + { .index =3D DT_XO }, + { .hw =3D &gpll0.clkr.hw }, +}; + +static const struct parent_map gcc_parent_map_3[] =3D { + { P_XO, 0 }, +}; + +static const struct clk_parent_data gcc_parent_data_3[] =3D { + { .index =3D DT_XO }, +}; + +static const struct parent_map gcc_parent_map_4[] =3D { + { P_XO, 0 }, + { P_GPLL0_OUT_MAIN, 1 }, + { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 }, + { P_GPLL0_OUT_ODD, 5 }, +}; + +static const struct clk_parent_data gcc_parent_data_4[] =3D { + { .index =3D DT_XO }, + { .hw =3D &gpll0.clkr.hw }, + { .hw =3D &gpll0_div2.hw }, + { .hw =3D &gpll0.clkr.hw }, +}; + +static const struct parent_map gcc_parent_map_5[] =3D { + { P_XO, 0 }, + { P_GPLL4_OUT_MAIN, 1 }, + { P_GPLL0_OUT_ODD, 2 }, + { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 }, +}; + +static const struct clk_parent_data gcc_parent_data_5[] =3D { + { .index =3D DT_XO }, + { .hw =3D &gpll4.clkr.hw }, + { .hw =3D &gpll0.clkr.hw }, + { .hw =3D &gpll0_div2.hw }, +}; + +static const struct parent_map gcc_parent_map_6[] =3D { + { P_XO, 0 }, + { P_GPLL0_OUT_MAIN, 1 }, + { P_GPLL2_OUT_AUX, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_6[] =3D { + { .index =3D DT_XO }, + { .hw =3D &gpll0.clkr.hw }, + { .hw =3D &gpll2.clkr.hw }, +}; + +static const struct parent_map gcc_parent_map_7[] =3D { + { P_XO, 0 }, + { P_GPLL4_OUT_ODD, 1 }, + { P_GPLL0_OUT_MAIN, 3 }, + { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 }, +}; + +static const struct clk_parent_data gcc_parent_data_7[] =3D { + { .index =3D DT_XO }, + { .hw =3D &gpll4.clkr.hw }, + { .hw =3D &gpll0.clkr.hw }, + { .hw =3D &gpll0_div2.hw }, +}; + +static const struct parent_map gcc_parent_map_8[] =3D { + { P_XO, 0 }, + { P_NSS_CMN_CLK, 1 }, + { P_GPLL0_OUT_ODD, 2 }, + { P_GPLL2_OUT_AUX, 3 }, +}; + +static const struct clk_parent_data gcc_parent_data_8[] =3D { + { .index =3D DT_XO }, + { .index =3D DT_NSS_CMN_CLK }, + { .hw =3D &gpll0.clkr.hw }, + { .hw =3D &gpll2.clkr.hw }, +}; + +static const struct parent_map gcc_parent_map_9[] =3D { + { P_XO, 0 }, + { P_GPLL0_OUT_MAIN, 1 }, + { P_GPLL0_OUT_ODD, 2 }, + { P_SLEEP_CLK, 6 }, +}; + +static const struct clk_parent_data gcc_parent_data_9[] =3D { + { .index =3D DT_XO }, + { .hw =3D &gpll0.clkr.hw }, + { .hw =3D &gpll0.clkr.hw }, + { .index =3D DT_SLEEP_CLK }, +}; + +static const struct parent_map gcc_parent_map_10[] =3D { + { P_XO, 0 }, + { P_GPLL0_OUT_MAIN, 1 }, + { P_GPLL2_OUT_MAIN, 2 }, + { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 }, +}; + +static const struct clk_parent_data gcc_parent_data_10[] =3D { + { .index =3D DT_XO }, + { .hw =3D &gpll0.clkr.hw }, + { .hw =3D &gpll2_out_main.clkr.hw }, + { .hw =3D &gpll0_div2.hw }, +}; + +static const struct parent_map gcc_parent_map_11[] =3D { + { P_XO, 0 }, + { P_GPLL0_OUT_MAIN, 1 }, + { P_GPLL4_OUT_MAIN, 2 }, + { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 }, +}; + +static const struct clk_parent_data gcc_parent_data_11[] =3D { + { .index =3D DT_XO }, + { .hw =3D &gpll0.clkr.hw }, + { .hw =3D &gpll4.clkr.hw }, + { .hw =3D &gpll0_div2.hw }, +}; + +static const struct parent_map gcc_parent_map_12[] =3D { + { P_XO, 0 }, + { P_GPLL0_OUT_ODD, 2 }, + { P_SLEEP_CLK, 6 }, +}; + +static const struct clk_parent_data gcc_parent_data_12[] =3D { + { .index =3D DT_XO }, + { .hw =3D &gpll0.clkr.hw }, + { .index =3D DT_SLEEP_CLK }, +}; + +static const struct parent_map gcc_parent_map_13[] =3D { + { P_SLEEP_CLK, 6 }, +}; + +static const struct clk_parent_data gcc_parent_data_13[] =3D { + { .index =3D DT_SLEEP_CLK }, +}; + +static const struct parent_map gcc_parent_map_14[] =3D { + { P_XO, 0 }, + { P_GPLL0_OUT_MAIN, 1 }, + { P_GPLL4_OUT_MAIN, 2 }, + { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 3 }, +}; + +static const struct clk_parent_data gcc_parent_data_14[] =3D { + { .index =3D DT_XO }, + { .hw =3D &gpll0.clkr.hw }, + { .hw =3D &gpll4.clkr.hw }, + { .hw =3D &gpll0_div2.hw }, +}; + +static const struct freq_tbl ftbl_gcc_adss_pwm_clk_src[] =3D { + F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_adss_pwm_clk_src =3D { + .cmd_rcgr =3D 0x1c004, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_2, + .freq_tbl =3D ftbl_gcc_adss_pwm_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_adss_pwm_clk_src", + .parent_data =3D gcc_parent_data_2, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_2), + .ops =3D &clk_rcg2_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_apss_axi_clk_src[] =3D { + F(800000000, P_GPLL0_OUT_MAIN, 1, 0, 0), + { } +}; + +static const struct freq_tbl ftbl_gcc_gemnoc_anoc_pcie_clk_src[] =3D { + F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0), + { } +}; + +static const struct freq_tbl ftbl_gcc_nss_ts_clk_src[] =3D { + F(24000000, P_XO, 1, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_xo_clk_src =3D { + .cmd_rcgr =3D 0x34004, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_xo, + .freq_tbl =3D ftbl_gcc_nss_ts_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_xo_clk_src", + .parent_data =3D &gcc_parent_data_xo, + .num_parents =3D 1, + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_fixed_factor gcc_xo_div4_clk_src =3D { + .mult =3D 1, + .div =3D 4, + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_xo_div4_clk_src", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_xo_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_fixed_factor_ops, + }, +}; + +static struct clk_rcg2 gcc_nss_ts_clk_src =3D { + .cmd_rcgr =3D 0x17088, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_3, + .freq_tbl =3D ftbl_gcc_nss_ts_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nss_ts_clk_src", + .parent_data =3D gcc_parent_data_3, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_3), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_refgen_core_clk_src =3D { + .cmd_rcgr =3D 0x23004, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_3, + .freq_tbl =3D ftbl_gcc_nss_ts_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_refgen_core_clk_src", + .parent_data =3D gcc_parent_data_3, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_3), + .ops =3D &clk_rcg2_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_nssnoc_memnoc_bfdcd_clk_src[] =3D { + F(462000000, P_NSS_CMN_CLK, 1, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_nssnoc_memnoc_bfdcd_clk_src =3D { + .cmd_rcgr =3D 0x17004, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_8, + .freq_tbl =3D ftbl_gcc_nssnoc_memnoc_bfdcd_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nssnoc_memnoc_bfdcd_clk_src", + .parent_data =3D gcc_parent_data_8, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_8), + .ops =3D &clk_rcg2_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_system_noc_bfdcd_clk_src[] =3D { + F(24000000, P_XO, 1, 0, 0), + F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0), + F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0), + F(266666667, P_GPLL4_OUT_MAIN, 4.5, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_system_noc_bfdcd_clk_src =3D { + .cmd_rcgr =3D 0x2e004, + .freq_tbl =3D ftbl_gcc_system_noc_bfdcd_clk_src, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_14, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_system_noc_bfdcd_clk_src", + .parent_data =3D gcc_parent_data_14, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_14), + .ops =3D &clk_rcg2_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_pcnoc_bfdcd_clk_src[] =3D { + F(24000000, P_XO, 1, 0, 0), + F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0), + F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_pcnoc_bfdcd_clk_src =3D { + .cmd_rcgr =3D 0x31004, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_0, + .freq_tbl =3D ftbl_gcc_pcnoc_bfdcd_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcnoc_bfdcd_clk_src", + .parent_data =3D gcc_parent_data_0, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_0), + /* + * There are no consumers for this source in kernel yet, + * (will be added soon), so the clock framework + * disables this source. But some of the clocks + * initialized by boot loaders uses this source. So we + * need to keep this clock ON. Add the + * CLK_IGNORE_UNUSED flag so the clock will not be + * disabled. Once the consumer in kernel is added, we + * can get rid of this flag. + */ + .flags =3D CLK_IS_CRITICAL, + .ops =3D &clk_rcg2_ops, + }, +}; +static const struct freq_tbl ftbl_gcc_pcie0_axi_m_clk_src[] =3D { + F(200000000, P_GPLL4_OUT_MAIN, 6, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_pcie0_axi_m_clk_src =3D { + .cmd_rcgr =3D 0x28018, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_1, + .freq_tbl =3D ftbl_gcc_pcie0_axi_m_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie0_axi_m_clk_src", + .parent_data =3D gcc_parent_data_1, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_1), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie0_axi_s_clk_src =3D { + .cmd_rcgr =3D 0x28020, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_1, + .freq_tbl =3D ftbl_gcc_pcie0_axi_m_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie0_axi_s_clk_src", + .parent_data =3D gcc_parent_data_1, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_1), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie0_rchng_clk_src =3D { + .cmd_rcgr =3D 0x28028, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_2, + .freq_tbl =3D ftbl_gcc_adss_pwm_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie0_rchng_clk_src", + .parent_data =3D gcc_parent_data_2, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_2), + .ops =3D &clk_rcg2_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_pcie1_axi_m_clk_src[] =3D { + F(266666667, P_GPLL4_OUT_MAIN, 4.5, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_pcie1_axi_m_clk_src =3D { + .cmd_rcgr =3D 0x29018, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_1, + .freq_tbl =3D ftbl_gcc_pcie1_axi_m_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie1_axi_m_clk_src", + .parent_data =3D gcc_parent_data_1, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_1), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie1_axi_s_clk_src =3D { + .cmd_rcgr =3D 0x29020, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_1, + .freq_tbl =3D ftbl_gcc_pcie0_axi_m_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie1_axi_s_clk_src", + .parent_data =3D gcc_parent_data_1, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_1), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie1_rchng_clk_src =3D { + .cmd_rcgr =3D 0x29028, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_2, + .freq_tbl =3D ftbl_gcc_adss_pwm_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie1_rchng_clk_src", + .parent_data =3D gcc_parent_data_2, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_2), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie2_axi_m_clk_src =3D { + .cmd_rcgr =3D 0x2a018, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_1, + .freq_tbl =3D ftbl_gcc_pcie1_axi_m_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie2_axi_m_clk_src", + .parent_data =3D gcc_parent_data_1, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_1), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie2_axi_s_clk_src =3D { + .cmd_rcgr =3D 0x2a020, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_1, + .freq_tbl =3D ftbl_gcc_pcie0_axi_m_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie2_axi_s_clk_src", + .parent_data =3D gcc_parent_data_1, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_1), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie2_rchng_clk_src =3D { + .cmd_rcgr =3D 0x2a028, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_2, + .freq_tbl =3D ftbl_gcc_adss_pwm_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie2_rchng_clk_src", + .parent_data =3D gcc_parent_data_2, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_2), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie3_axi_m_clk_src =3D { + .cmd_rcgr =3D 0x2b018, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_1, + .freq_tbl =3D ftbl_gcc_pcie1_axi_m_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie3_axi_m_clk_src", + .parent_data =3D gcc_parent_data_1, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_1), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie3_axi_s_clk_src =3D { + .cmd_rcgr =3D 0x2b020, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_1, + .freq_tbl =3D ftbl_gcc_pcie0_axi_m_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie3_axi_s_clk_src", + .parent_data =3D gcc_parent_data_1, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_1), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie3_rchng_clk_src =3D { + .cmd_rcgr =3D 0x2b028, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_2, + .freq_tbl =3D ftbl_gcc_adss_pwm_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie3_rchng_clk_src", + .parent_data =3D gcc_parent_data_2, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_2), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie4_axi_m_clk_src =3D { + .cmd_rcgr =3D 0x25004, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_1, + .freq_tbl =3D ftbl_gcc_pcie0_axi_m_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie4_axi_m_clk_src", + .parent_data =3D gcc_parent_data_1, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_1), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie4_axi_s_clk_src =3D { + .cmd_rcgr =3D 0x2500c, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_1, + .freq_tbl =3D ftbl_gcc_pcie0_axi_m_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie4_axi_s_clk_src", + .parent_data =3D gcc_parent_data_1, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_1), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_pcie4_rchng_clk_src =3D { + .cmd_rcgr =3D 0x25014, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_2, + .freq_tbl =3D ftbl_gcc_adss_pwm_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie4_rchng_clk_src", + .parent_data =3D gcc_parent_data_2, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_2), + .ops =3D &clk_rcg2_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_pcie_aux_clk_src[] =3D { + F(20000000, P_GPLL0_OUT_MAIN, 10, 1, 4), + { } +}; + +static struct clk_rcg2 gcc_pcie_aux_clk_src =3D { + .cmd_rcgr =3D 0x28004, + .mnd_width =3D 16, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_9, + .freq_tbl =3D ftbl_gcc_pcie_aux_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie_aux_clk_src", + .parent_data =3D gcc_parent_data_9, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_9), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_primess_ahbm_clk_src =3D { + .cmd_rcgr =3D 0x2601c, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_2, + .freq_tbl =3D ftbl_gcc_adss_pwm_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_primess_ahbm_clk_src", + .parent_data =3D gcc_parent_data_2, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_2), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_primess_axim_clk_src =3D { + .cmd_rcgr =3D 0x26014, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_0, + .freq_tbl =3D ftbl_gcc_gemnoc_anoc_pcie_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_primess_axim_clk_src", + .parent_data =3D gcc_parent_data_0, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_0), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_primess_clk_src =3D { + .cmd_rcgr =3D 0x2600c, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_4, + .freq_tbl =3D ftbl_gcc_apss_axi_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_primess_clk_src", + .parent_data =3D gcc_parent_data_4, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_4), + .ops =3D &clk_rcg2_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_qdss_at_clk_src[] =3D { + F(240000000, P_GPLL4_OUT_MAIN, 5, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_qdss_at_clk_src =3D { + .cmd_rcgr =3D 0x2d004, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_5, + .freq_tbl =3D ftbl_gcc_qdss_at_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qdss_at_clk_src", + .parent_data =3D gcc_parent_data_5, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_5), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_fixed_factor gcc_eud_at_div_clk_src =3D { + .mult =3D 1, + .div =3D 6, + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_eud_at_div_clk_src", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_qdss_at_clk_src.clkr.hw }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_fixed_factor_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_qdss_tsctr_clk_src[] =3D { + F(600000000, P_GPLL4_OUT_MAIN, 2, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_qdss_tsctr_clk_src =3D { + .cmd_rcgr =3D 0x2d01c, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_5, + .freq_tbl =3D ftbl_gcc_qdss_tsctr_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qdss_tsctr_clk_src", + .parent_data =3D gcc_parent_data_5, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_5), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_fixed_factor gcc_qdss_dap_sync_clk_src =3D { + .mult =3D 1, + .div =3D 4, + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qdss_dap_sync_clk_src", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_qdss_tsctr_clk_src.clkr.hw + }, + .num_parents =3D 1, + .ops =3D &clk_fixed_factor_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_sleep_clk_src[] =3D { + F(32000, P_SLEEP_CLK, 1, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_sleep_clk_src =3D { + .cmd_rcgr =3D 0x3400c, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_13, + .freq_tbl =3D ftbl_gcc_sleep_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_sleep_clk_src", + .parent_data =3D gcc_parent_data_13, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_13), + .ops =3D &clk_rcg2_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_qpic_io_macro_clk_src[] =3D { + F(24000000, P_XO, 1, 0, 0), + F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0), + F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0), + F(320000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0), + F(400000000, P_GPLL0_OUT_MAIN, 2, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_qpic_clk_src =3D { + .cmd_rcgr =3D 0x32020, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_6, + .freq_tbl =3D ftbl_gcc_qpic_io_macro_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qpic_clk_src", + .parent_data =3D gcc_parent_data_6, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_6), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_qpic_io_macro_clk_src =3D { + .cmd_rcgr =3D 0x32004, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_6, + .freq_tbl =3D ftbl_gcc_qpic_io_macro_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qpic_io_macro_clk_src", + .parent_data =3D gcc_parent_data_6, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_6), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_qupv3_2x_core_clk_src =3D { + .cmd_rcgr =3D 0x100c, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_0, + .freq_tbl =3D ftbl_gcc_gemnoc_anoc_pcie_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_2x_core_clk_src", + .parent_data =3D gcc_parent_data_0, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_0), + .ops =3D &clk_rcg2_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_qupv3_wrap_se0_clk_src[] =3D { + F(960000, P_XO, 10, 2, 5), + F(3686636, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 2, 217), + F(4800000, P_XO, 5, 0, 0), + F(7373272, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 4, 217), + F(9600000, P_XO, 2.5, 0, 0), + F(14746544, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 8, 217), + F(16000000, P_GPLL0_OUT_MAIN, 10, 1, 5), + F(24000000, P_XO, 1, 0, 0), + F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2), + F(32000000, P_GPLL0_OUT_MAIN, 1, 1, 25), + F(40000000, P_GPLL0_OUT_MAIN, 1, 1, 20), + F(46400000, P_GPLL0_OUT_MAIN, 2, 29, 250), + F(48000000, P_GPLL0_OUT_MAIN, 1, 3, 50), + F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0), + F(51200000, P_GPLL0_OUT_MAIN, 1, 8, 125), + F(56000000, P_GPLL0_OUT_MAIN, 1, 7, 100), + F(58986175, P_GPLL0_OUT_MAIN, 1, 16, 217), + F(60000000, P_GPLL0_OUT_MAIN, 1, 3, 40), + F(64000000, P_GPLL0_OUT_MAIN, 12.5, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_qupv3_wrap_se0_clk_src =3D { + .cmd_rcgr =3D 0x2018, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_0, + .freq_tbl =3D ftbl_gcc_qupv3_wrap_se0_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se0_clk_src", + .parent_data =3D gcc_parent_data_0, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_0), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_qupv3_wrap_se1_clk_src =3D { + .cmd_rcgr =3D 0x3018, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_0, + .freq_tbl =3D ftbl_gcc_qupv3_wrap_se0_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se1_clk_src", + .parent_data =3D gcc_parent_data_0, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_0), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_qupv3_wrap_se2_clk_src =3D { + .cmd_rcgr =3D 0x3034, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_0, + .freq_tbl =3D ftbl_gcc_qupv3_wrap_se0_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se2_clk_src", + .parent_data =3D gcc_parent_data_0, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_0), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_qupv3_wrap_se3_clk_src =3D { + .cmd_rcgr =3D 0x3050, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_0, + .freq_tbl =3D ftbl_gcc_qupv3_wrap_se0_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se3_clk_src", + .parent_data =3D gcc_parent_data_0, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_0), + .ops =3D &clk_rcg2_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_qupv3_wrap_se4_clk_src[] =3D { + F(960000, P_XO, 10, 2, 5), + F(3686636, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 2, 217), + F(4800000, P_XO, 5, 0, 0), + F(7373272, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 4, 217), + F(9600000, P_XO, 2.5, 0, 0), + F(14746544, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 8, 217), + F(16000000, P_GPLL0_OUT_MAIN, 10, 1, 5), + F(24000000, P_XO, 1, 0, 0), + F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2), + F(32000000, P_GPLL0_OUT_MAIN, 1, 1, 25), + F(40000000, P_GPLL0_OUT_MAIN, 1, 1, 20), + F(46400000, P_GPLL0_OUT_MAIN, 2, 29, 250), + F(48000000, P_GPLL0_OUT_MAIN, 1, 3, 50), + F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0), + F(51200000, P_GPLL0_OUT_MAIN, 1, 8, 125), + F(56000000, P_GPLL0_OUT_MAIN, 1, 7, 100), + F(58986175, P_GPLL0_OUT_MAIN, 1, 16, 217), + F(60000000, P_GPLL0_OUT_MAIN, 1, 3, 40), + F(64000000, P_GPLL0_OUT_MAIN, 12.5, 0, 0), + F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_qupv3_wrap_se4_clk_src =3D { + .cmd_rcgr =3D 0x306c, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_0, + .freq_tbl =3D ftbl_gcc_qupv3_wrap_se4_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se4_clk_src", + .parent_data =3D gcc_parent_data_0, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_0), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_qupv3_wrap_se5_clk_src =3D { + .cmd_rcgr =3D 0x3090, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_0, + .freq_tbl =3D ftbl_gcc_qupv3_wrap_se4_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se5_clk_src", + .parent_data =3D gcc_parent_data_0, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_0), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_qupv3_wrap_se6_clk_src =3D { + .cmd_rcgr =3D 0x4004, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_0, + .freq_tbl =3D ftbl_gcc_qupv3_wrap_se0_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se6_clk_src", + .parent_data =3D gcc_parent_data_0, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_0), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_qupv3_wrap_se7_clk_src =3D { + .cmd_rcgr =3D 0x4020, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_0, + .freq_tbl =3D ftbl_gcc_qupv3_wrap_se0_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se7_clk_src", + .parent_data =3D gcc_parent_data_0, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_0), + .ops =3D &clk_rcg2_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] =3D { + F(144000, P_XO, 16, 12, 125), + F(400000, P_XO, 12, 1, 5), + F(24000000, P_GPLL2_OUT_MAIN, 12, 1, 2), + F(48000000, P_GPLL2_OUT_MAIN, 12, 0, 0), + F(96000000, P_GPLL2_OUT_MAIN, 6, 0, 0), + F(177777778, P_GPLL0_OUT_MAIN, 4.5, 0, 0), + F(192000000, P_GPLL2_OUT_MAIN, 3, 0, 0), + F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_sdcc1_apps_clk_src =3D { + .cmd_rcgr =3D 0x33004, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_10, + .freq_tbl =3D ftbl_gcc_sdcc1_apps_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_sdcc1_apps_clk_src", + .parent_data =3D gcc_parent_data_10, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_10), + .ops =3D &clk_rcg2_floor_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] =3D { + F(300000000, P_GPLL4_OUT_MAIN, 4, 0, 0), + { } +}; + +static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src =3D { + .cmd_rcgr =3D 0x33018, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_11, + .freq_tbl =3D ftbl_gcc_sdcc1_ice_core_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_sdcc1_ice_core_clk_src", + .parent_data =3D gcc_parent_data_11, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_11), + .ops =3D &clk_rcg2_floor_ops, + }, +}; + +static struct clk_rcg2 gcc_uniphy_sys_clk_src =3D { + .cmd_rcgr =3D 0x17090, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_3, + .freq_tbl =3D ftbl_gcc_nss_ts_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_uniphy_sys_clk_src", + .parent_data =3D gcc_parent_data_3, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_3), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_usb0_aux_clk_src =3D { + .cmd_rcgr =3D 0x2c018, + .mnd_width =3D 16, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_12, + .freq_tbl =3D ftbl_gcc_nss_ts_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb0_aux_clk_src", + .parent_data =3D gcc_parent_data_12, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_12), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_usb0_master_clk_src =3D { + .cmd_rcgr =3D 0x2c004, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_0, + .freq_tbl =3D ftbl_gcc_gemnoc_anoc_pcie_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb0_master_clk_src", + .parent_data =3D gcc_parent_data_0, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_0), + .ops =3D &clk_rcg2_ops, + }, +}; + +static const struct freq_tbl ftbl_gcc_usb0_mock_utmi_clk_src[] =3D { + F(24000000, P_XO, 1, 0, 0), + F(60000000, P_GPLL4_OUT_ODD, 10, 1, 2), + { } +}; + +static struct clk_rcg2 gcc_usb0_mock_utmi_clk_src =3D { + .cmd_rcgr =3D 0x2c02c, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_7, + .freq_tbl =3D ftbl_gcc_usb0_mock_utmi_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb0_mock_utmi_clk_src", + .parent_data =3D gcc_parent_data_7, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_7), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_rcg2 gcc_usb1_mock_utmi_clk_src =3D { + .cmd_rcgr =3D 0x3c004, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D gcc_parent_map_7, + .freq_tbl =3D ftbl_gcc_usb0_mock_utmi_clk_src, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb1_mock_utmi_clk_src", + .parent_data =3D gcc_parent_data_7, + .num_parents =3D ARRAY_SIZE(gcc_parent_data_7), + .ops =3D &clk_rcg2_ops, + }, +}; + +static struct clk_regmap_div gcc_nssnoc_memnoc_div_clk_src =3D { + .reg =3D 0x1700c, + .shift =3D 0, + .width =3D 4, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nssnoc_memnoc_div_clk_src", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_nssnoc_memnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_regmap_div_ro_ops, + }, +}; + +static struct clk_regmap_div gcc_usb0_mock_utmi_div_clk_src =3D { + .reg =3D 0x2c040, + .shift =3D 0, + .width =3D 2, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb0_mock_utmi_div_clk_src", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_usb0_mock_utmi_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_regmap_div_ro_ops, + }, +}; + +static struct clk_regmap_div gcc_usb1_mock_utmi_div_clk_src =3D { + .reg =3D 0x3c018, + .shift =3D 0, + .width =3D 2, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb1_mock_utmi_div_clk_src", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_usb1_mock_utmi_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_regmap_div_ro_ops, + }, +}; + +static struct clk_branch gcc_adss_pwm_clk =3D { + .halt_reg =3D 0x1c00c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1c00c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_adss_pwm_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_adss_pwm_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_anoc_pcie0_1lane_m_clk =3D { + .halt_reg =3D 0x2e07c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2e07c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_anoc_pcie0_1lane_m_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie0_axi_m_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_anoc_pcie0_1lane_s_clk =3D { + .halt_reg =3D 0x2e0cc, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2e0cc, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_anoc_pcie0_1lane_s_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie0_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_anoc_pcie1_2lane_m_clk =3D { + .halt_reg =3D 0x2e084, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2e084, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_anoc_pcie1_2lane_m_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie1_axi_m_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_anoc_pcie1_2lane_s_clk =3D { + .halt_reg =3D 0x2e0d0, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2e0d0, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_anoc_pcie1_2lane_s_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie1_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_anoc_pcie2_2lane_m_clk =3D { + .halt_reg =3D 0x2e080, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2e080, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_anoc_pcie2_2lane_m_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie2_axi_m_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_anoc_pcie2_2lane_s_clk =3D { + .halt_reg =3D 0x2e0d4, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2e0d4, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_anoc_pcie2_2lane_s_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie2_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_anoc_pcie3_2lane_m_clk =3D { + .halt_reg =3D 0x2e0bc, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2e0bc, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_anoc_pcie3_2lane_m_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie3_axi_m_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_anoc_pcie3_2lane_s_clk =3D { + .halt_reg =3D 0x2e0d8, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2e0d8, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_anoc_pcie3_2lane_s_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie3_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_anoc_pcie4_1lane_m_clk =3D { + .halt_reg =3D 0x2e0c0, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2e0c0, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_anoc_pcie4_1lane_m_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie4_axi_m_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_anoc_pcie4_1lane_s_clk =3D { + .halt_reg =3D 0x2e0dc, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2e0dc, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_anoc_pcie4_1lane_s_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie4_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_cmn_12gpll_ahb_clk =3D { + .halt_reg =3D 0x3a004, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x3a004, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_cmn_12gpll_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_cmn_12gpll_sys_clk =3D { + .halt_reg =3D 0x3a008, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x3a008, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_cmn_12gpll_sys_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_uniphy_sys_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_mdio_ahb_clk =3D { + .halt_reg =3D 0x17040, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x17040, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_mdio_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nss_ts_clk =3D { + .halt_reg =3D 0x17018, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x17018, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nss_ts_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_nss_ts_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nsscc_clk =3D { + .halt_reg =3D 0x17034, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x17034, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nsscc_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nsscfg_clk =3D { + .halt_reg =3D 0x1702c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1702c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nsscfg_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nssnoc_atb_clk =3D { + .halt_reg =3D 0x17014, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x17014, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nssnoc_atb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qdss_at_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nssnoc_memnoc_1_clk =3D { + .halt_reg =3D 0x17084, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x17084, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nssnoc_memnoc_1_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_nssnoc_memnoc_div_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nssnoc_memnoc_clk =3D { + .halt_reg =3D 0x17024, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x17024, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nssnoc_memnoc_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_nssnoc_memnoc_div_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nssnoc_nsscc_clk =3D { + .halt_reg =3D 0x17030, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x17030, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nssnoc_nsscc_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nssnoc_pcnoc_1_clk =3D { + .halt_reg =3D 0x17080, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x17080, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nssnoc_pcnoc_1_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nssnoc_qosgen_ref_clk =3D { + .halt_reg =3D 0x1701c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1701c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nssnoc_qosgen_ref_clk", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_xo_div4_clk_src.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nssnoc_snoc_1_clk =3D { + .halt_reg =3D 0x1707c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1707c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nssnoc_snoc_1_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_system_noc_bfdcd_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nssnoc_snoc_clk =3D { + .halt_reg =3D 0x17028, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x17028, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nssnoc_snoc_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_system_noc_bfdcd_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nssnoc_timeout_ref_clk =3D { + .halt_reg =3D 0x17020, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x17020, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nssnoc_timeout_ref_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_xo_div4_clk_src.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_nssnoc_xo_dcd_clk =3D { + .halt_reg =3D 0x17074, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x17074, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_nssnoc_xo_dcd_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_xo_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie0_ahb_clk =3D { + .halt_reg =3D 0x28030, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x28030, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie0_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie0_aux_clk =3D { + .halt_reg =3D 0x28070, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x28070, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie0_aux_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie_aux_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie0_axi_m_clk =3D { + .halt_reg =3D 0x28038, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x28038, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie0_axi_m_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie0_axi_m_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie0_axi_s_bridge_clk =3D { + .halt_reg =3D 0x28048, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x28048, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie0_axi_s_bridge_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie0_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie0_axi_s_clk =3D { + .halt_reg =3D 0x28040, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x28040, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie0_axi_s_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie0_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_pcie0_pipe_clk_src =3D { + .reg =3D 0x28064, + .clkr =3D { + .hw.init =3D &(const struct clk_init_data) { + .name =3D "pcie0_pipe_clk_src", + .parent_data =3D &(const struct clk_parent_data) { + .index =3D DT_PCIE30_PHY0_PIPE_CLK, + }, + .num_parents =3D 1, + .ops =3D &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie0_pipe_clk =3D { + .halt_reg =3D 0x28068, + .halt_check =3D BRANCH_HALT_DELAY, + .clkr =3D { + .enable_reg =3D 0x28068, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie0_pipe_clk", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_pcie0_pipe_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie1_ahb_clk =3D { + .halt_reg =3D 0x29030, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x29030, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie1_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie1_aux_clk =3D { + .halt_reg =3D 0x29074, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x29074, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie1_aux_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie_aux_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie1_axi_m_clk =3D { + .halt_reg =3D 0x29038, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x29038, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie1_axi_m_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie1_axi_m_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie1_axi_s_bridge_clk =3D { + .halt_reg =3D 0x29048, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x29048, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie1_axi_s_bridge_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie1_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie1_axi_s_clk =3D { + .halt_reg =3D 0x29040, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x29040, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie1_axi_s_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie1_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_pcie1_pipe_clk_src =3D { + .reg =3D 0x29064, + .clkr =3D { + .hw.init =3D &(const struct clk_init_data) { + .name =3D "pcie1_pipe_clk_src", + .parent_data =3D &(const struct clk_parent_data) { + .index =3D DT_PCIE30_PHY1_PIPE_CLK, + }, + .num_parents =3D 1, + .ops =3D &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie1_pipe_clk =3D { + .halt_reg =3D 0x29068, + .halt_check =3D BRANCH_HALT_DELAY, + .clkr =3D { + .enable_reg =3D 0x29068, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie1_pipe_clk", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_pcie1_pipe_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie2_ahb_clk =3D { + .halt_reg =3D 0x2a030, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2a030, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie2_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie2_aux_clk =3D { + .halt_reg =3D 0x2a078, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2a078, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie2_aux_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie_aux_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie2_axi_m_clk =3D { + .halt_reg =3D 0x2a038, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2a038, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie2_axi_m_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie2_axi_m_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie2_axi_s_bridge_clk =3D { + .halt_reg =3D 0x2a048, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2a048, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie2_axi_s_bridge_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie2_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie2_axi_s_clk =3D { + .halt_reg =3D 0x2a040, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2a040, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie2_axi_s_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie2_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_pcie2_pipe_clk_src =3D { + .reg =3D 0x2a064, + .clkr =3D { + .hw.init =3D &(const struct clk_init_data) { + .name =3D "pcie2_pipe_clk_src", + .parent_data =3D &(const struct clk_parent_data) { + .index =3D DT_PCIE30_PHY2_PIPE_CLK, + }, + .num_parents =3D 1, + .ops =3D &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie2_pipe_clk =3D { + .halt_reg =3D 0x2a068, + .halt_check =3D BRANCH_HALT_DELAY, + .clkr =3D { + .enable_reg =3D 0x2a068, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie2_pipe_clk", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_pcie2_pipe_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie3_ahb_clk =3D { + .halt_reg =3D 0x2b030, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2b030, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie3_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie3_aux_clk =3D { + .halt_reg =3D 0x2b07c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2b07c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie3_aux_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie_aux_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie3_axi_m_clk =3D { + .halt_reg =3D 0x2b038, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2b038, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie3_axi_m_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie3_axi_m_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie3_axi_s_bridge_clk =3D { + .halt_reg =3D 0x2b048, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2b048, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie3_axi_s_bridge_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie3_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie3_axi_s_clk =3D { + .halt_reg =3D 0x2b040, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2b040, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie3_axi_s_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie3_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_pcie3_pipe_clk_src =3D { + .reg =3D 0x2b064, + .clkr =3D { + .hw.init =3D &(const struct clk_init_data) { + .name =3D "pcie3_pipe_clk_src", + .parent_data =3D &(const struct clk_parent_data) { + .index =3D DT_PCIE30_PHY3_PIPE_CLK, + }, + .num_parents =3D 1, + .ops =3D &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie3_pipe_clk =3D { + .halt_reg =3D 0x2b068, + .halt_check =3D BRANCH_HALT_DELAY, + .clkr =3D { + .enable_reg =3D 0x2b068, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie3_pipe_clk", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_pcie3_pipe_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie4_ahb_clk =3D { + .halt_reg =3D 0x2501c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2501c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie4_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie4_aux_clk =3D { + .halt_reg =3D 0x25020, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x25020, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie4_aux_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie_aux_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie4_axi_m_clk =3D { + .halt_reg =3D 0x25028, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x25028, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie4_axi_m_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie4_axi_m_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie4_axi_s_bridge_clk =3D { + .halt_reg =3D 0x25038, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x25038, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie4_axi_s_bridge_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie4_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie4_axi_s_clk =3D { + .halt_reg =3D 0x25030, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x25030, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie4_axi_s_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcie4_axi_s_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_pcie4_pipe_clk_src =3D { + .reg =3D 0x25058, + .clkr =3D { + .hw.init =3D &(const struct clk_init_data) { + .name =3D "pcie4_pipe_clk_src", + .parent_data =3D &(const struct clk_parent_data) { + .index =3D DT_PCIE30_PHY4_PIPE_CLK, + }, + .num_parents =3D 1, + .ops =3D &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie4_pipe_clk =3D { + .halt_reg =3D 0x2503c, + .halt_check =3D BRANCH_HALT_DELAY, + .clkr =3D { + .enable_reg =3D 0x2503c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie4_pipe_clk", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_pcie4_pipe_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie0_rchng_clk =3D { + .halt_reg =3D 0x28028, + .clkr =3D { + .enable_reg =3D 0x28028, + .enable_mask =3D BIT(1), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie0_rchng_clk", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_pcie0_rchng_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie1_rchng_clk =3D { + .halt_reg =3D 0x29028, + .clkr =3D { + .enable_reg =3D 0x29028, + .enable_mask =3D BIT(1), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie1_rchng_clk", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_pcie1_rchng_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie2_rchng_clk =3D { + .halt_reg =3D 0x2a028, + .clkr =3D { + .enable_reg =3D 0x2a028, + .enable_mask =3D BIT(1), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie2_rchng_clk", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_pcie2_rchng_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie3_rchng_clk =3D { + .halt_reg =3D 0x2b028, + .clkr =3D { + .enable_reg =3D 0x2b028, + .enable_mask =3D BIT(1), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie3_rchng_clk", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_pcie3_rchng_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie4_rchng_clk =3D { + .halt_reg =3D 0x25014, + .clkr =3D { + .enable_reg =3D 0x25014, + .enable_mask =3D BIT(1), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie4_rchng_clk", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_pcie4_rchng_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie_cmn_hclk =3D { + .halt_reg =3D 0x23030, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x23030, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie_cmn_hclk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_pcie_cmn_ldo_clk =3D { + .halt_reg =3D 0x2302c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2302c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_pcie_cmn_ldo_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_refgen_core_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_primess_ahbm_clk =3D { + .halt_reg =3D 0x26038, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x26038, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_primess_ahbm_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_primess_ahbm_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_primess_ahbm_partial_clk =3D { + .halt_reg =3D 0x26040, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x26040, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_primess_ahbm_partial_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_primess_ahbm_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_primess_ahbs_clk =3D { + .halt_reg =3D 0x26034, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x26034, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_primess_ahbs_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_primess_atb_clk =3D { + .halt_reg =3D 0x26030, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x26030, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_primess_atb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qdss_at_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_primess_axim_clk =3D { + .halt_reg =3D 0x2602c, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x2602c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_primess_axim_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_primess_axim_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_primess_axim_partial_clk =3D { + .halt_reg =3D 0x2603c, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x2603c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_primess_axim_partial_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_primess_axim_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_primess_clk =3D { + .halt_reg =3D 0x26028, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x26028, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_primess_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_primess_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_primess_xo_clk =3D { + .halt_reg =3D 0x26024, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x26024, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_primess_xo_clk", + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qdss_at_clk =3D { + .halt_reg =3D 0x2d034, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x2d034, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qdss_at_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qdss_at_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qdss_dap_clk =3D { + .halt_reg =3D 0x2d058, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0xb004, + .enable_mask =3D BIT(2), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qdss_dap_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qdss_dap_sync_clk_src.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qpic_ahb_clk =3D { + .halt_reg =3D 0x32010, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x32010, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qpic_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qpic_clk =3D { + .halt_reg =3D 0x32028, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x32028, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qpic_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qpic_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qpic_io_macro_clk =3D { + .halt_reg =3D 0x3200c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x3200c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qpic_io_macro_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qpic_io_macro_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qpic_sleep_clk =3D { + .halt_reg =3D 0x32018, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x32018, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qpic_sleep_clk", + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qupv3_ahb_mst_clk =3D { + .halt_reg =3D 0x1014, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0xb004, + .enable_mask =3D BIT(14), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_ahb_mst_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qupv3_ahb_slv_clk =3D { + .halt_reg =3D 0x102c, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0xb004, + .enable_mask =3D BIT(4), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_ahb_slv_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qupv3_wrap_se0_clk =3D { + .halt_reg =3D 0x202c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x202c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se0_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qupv3_wrap_se0_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qupv3_wrap_se1_clk =3D { + .halt_reg =3D 0x302c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x302c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se1_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qupv3_wrap_se1_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qupv3_wrap_se2_clk =3D { + .halt_reg =3D 0x3048, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x3048, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se2_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qupv3_wrap_se2_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qupv3_wrap_se3_clk =3D { + .halt_reg =3D 0x3064, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x3064, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se3_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qupv3_wrap_se3_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qupv3_wrap_se4_clk =3D { + .halt_reg =3D 0x3080, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x3080, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se4_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qupv3_wrap_se4_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qupv3_wrap_se5_clk =3D { + .halt_reg =3D 0x30a4, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x30a4, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se5_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qupv3_wrap_se5_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qupv3_wrap_se6_clk =3D { + .halt_reg =3D 0x4018, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x4018, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se6_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qupv3_wrap_se6_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_qupv3_wrap_se7_clk =3D { + .halt_reg =3D 0x4034, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x4034, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_qupv3_wrap_se7_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_qupv3_wrap_se7_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_refgen_pcie_core_clk =3D { + .halt_reg =3D 0x23020, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x23020, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_refgen_pcie_core_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_refgen_core_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_refgen_pcie_hclk =3D { + .halt_reg =3D 0x23024, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x23024, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_refgen_pcie_hclk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_sdcc1_ahb_clk =3D { + .halt_reg =3D 0x3303c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x3303c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_sdcc1_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_sdcc1_apps_clk =3D { + .halt_reg =3D 0x3302c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x3302c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_sdcc1_apps_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_sdcc1_apps_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_sdcc1_ice_core_clk =3D { + .halt_reg =3D 0x33034, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x33034, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_sdcc1_ice_core_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_sdcc1_ice_core_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_snoc_usb_clk =3D { + .halt_reg =3D 0x2e0c4, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2e0c4, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_snoc_usb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_usb0_master_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_uniphy0_ahb_clk =3D { + .halt_reg =3D 0x1704c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1704c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_uniphy0_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_uniphy0_sys_clk =3D { + .halt_reg =3D 0x17048, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x17048, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_uniphy0_sys_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_uniphy_sys_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_uniphy1_ahb_clk =3D { + .halt_reg =3D 0x1705c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1705c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_uniphy1_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_uniphy1_sys_clk =3D { + .halt_reg =3D 0x17058, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x17058, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_uniphy1_sys_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_uniphy_sys_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_uniphy2_ahb_clk =3D { + .halt_reg =3D 0x1706c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1706c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_uniphy2_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_uniphy2_sys_clk =3D { + .halt_reg =3D 0x17068, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x17068, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_uniphy2_sys_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_uniphy_sys_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_usb0_aux_clk =3D { + .halt_reg =3D 0x2c04c, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x2c04c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb0_aux_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_usb0_aux_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_usb0_eud_at_clk =3D { + .halt_reg =3D 0x30004, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x30004, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb0_eud_at_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_eud_at_div_clk_src.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_usb0_master_clk =3D { + .halt_reg =3D 0x2c044, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x2c044, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb0_master_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_usb0_master_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_usb0_mock_utmi_clk =3D { + .halt_reg =3D 0x2c050, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x2c050, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb0_mock_utmi_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_usb0_mock_utmi_div_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_usb0_phy_cfg_ahb_clk =3D { + .halt_reg =3D 0x2c05c, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x2c05c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb0_phy_cfg_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb0_pipe_clk_src =3D { + .reg =3D 0x2c074, + .clkr =3D { + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb0_pipe_clk_src", + .parent_data =3D &(const struct clk_parent_data) { + .index =3D DT_USB3_PHY0_CC_PIPE_CLK, + }, + .num_parents =3D 1, + .ops =3D &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_branch gcc_usb0_pipe_clk =3D { + .halt_reg =3D 0x2c054, + .halt_check =3D BRANCH_HALT_DELAY, + .clkr =3D { + .enable_reg =3D 0x2c054, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb0_pipe_clk", + .parent_hws =3D (const struct clk_hw *[]) { + &gcc_usb0_pipe_clk_src.clkr.hw + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_usb0_sleep_clk =3D { + .halt_reg =3D 0x2c058, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x2c058, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb0_sleep_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_sleep_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_usb1_master_clk =3D { + .halt_reg =3D 0x3c028, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x3c028, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb1_master_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_usb1_mock_utmi_clk =3D { + .halt_reg =3D 0x3c024, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x3c024, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb1_mock_utmi_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_usb1_mock_utmi_div_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_usb1_phy_cfg_ahb_clk =3D { + .halt_reg =3D 0x3c01c, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x3c01c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb1_phy_cfg_ahb_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_usb1_sleep_clk =3D { + .halt_reg =3D 0x3c020, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x3c020, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb1_sleep_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_sleep_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_usb_cmn_hclk =3D { + .halt_reg =3D 0x2303c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x2303c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb_cmn_hclk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_pcnoc_bfdcd_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch gcc_usb_cmn_ldo_clk =3D { + .halt_reg =3D 0x23038, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x23038, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "gcc_usb_cmn_ldo_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &gcc_refgen_core_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_regmap *gcc_ipq9650_clocks[] =3D { + [GCC_ADSS_PWM_CLK] =3D &gcc_adss_pwm_clk.clkr, + [GCC_ADSS_PWM_CLK_SRC] =3D &gcc_adss_pwm_clk_src.clkr, + [GCC_ANOC_PCIE0_1LANE_M_CLK] =3D &gcc_anoc_pcie0_1lane_m_clk.clkr, + [GCC_ANOC_PCIE0_1LANE_S_CLK] =3D &gcc_anoc_pcie0_1lane_s_clk.clkr, + [GCC_ANOC_PCIE1_2LANE_M_CLK] =3D &gcc_anoc_pcie1_2lane_m_clk.clkr, + [GCC_ANOC_PCIE1_2LANE_S_CLK] =3D &gcc_anoc_pcie1_2lane_s_clk.clkr, + [GCC_ANOC_PCIE2_2LANE_M_CLK] =3D &gcc_anoc_pcie2_2lane_m_clk.clkr, + [GCC_ANOC_PCIE2_2LANE_S_CLK] =3D &gcc_anoc_pcie2_2lane_s_clk.clkr, + [GCC_ANOC_PCIE3_2LANE_M_CLK] =3D &gcc_anoc_pcie3_2lane_m_clk.clkr, + [GCC_ANOC_PCIE3_2LANE_S_CLK] =3D &gcc_anoc_pcie3_2lane_s_clk.clkr, + [GCC_ANOC_PCIE4_1LANE_M_CLK] =3D &gcc_anoc_pcie4_1lane_m_clk.clkr, + [GCC_ANOC_PCIE4_1LANE_S_CLK] =3D &gcc_anoc_pcie4_1lane_s_clk.clkr, + [GCC_CMN_12GPLL_AHB_CLK] =3D &gcc_cmn_12gpll_ahb_clk.clkr, + [GCC_CMN_12GPLL_SYS_CLK] =3D &gcc_cmn_12gpll_sys_clk.clkr, + [GCC_MDIO_AHB_CLK] =3D &gcc_mdio_ahb_clk.clkr, + [GCC_NSS_TS_CLK] =3D &gcc_nss_ts_clk.clkr, + [GCC_NSS_TS_CLK_SRC] =3D &gcc_nss_ts_clk_src.clkr, + [GCC_NSSCC_CLK] =3D &gcc_nsscc_clk.clkr, + [GCC_NSSCFG_CLK] =3D &gcc_nsscfg_clk.clkr, + [GCC_NSSNOC_ATB_CLK] =3D &gcc_nssnoc_atb_clk.clkr, + [GCC_NSSNOC_MEMNOC_1_CLK] =3D &gcc_nssnoc_memnoc_1_clk.clkr, + [GCC_NSSNOC_MEMNOC_BFDCD_CLK_SRC] =3D &gcc_nssnoc_memnoc_bfdcd_clk_src.cl= kr, + [GCC_NSSNOC_MEMNOC_CLK] =3D &gcc_nssnoc_memnoc_clk.clkr, + [GCC_NSSNOC_MEMNOC_DIV_CLK_SRC] =3D &gcc_nssnoc_memnoc_div_clk_src.clkr, + [GCC_NSSNOC_NSSCC_CLK] =3D &gcc_nssnoc_nsscc_clk.clkr, + [GCC_NSSNOC_PCNOC_1_CLK] =3D &gcc_nssnoc_pcnoc_1_clk.clkr, + [GCC_NSSNOC_QOSGEN_REF_CLK] =3D &gcc_nssnoc_qosgen_ref_clk.clkr, + [GCC_NSSNOC_SNOC_1_CLK] =3D &gcc_nssnoc_snoc_1_clk.clkr, + [GCC_NSSNOC_SNOC_CLK] =3D &gcc_nssnoc_snoc_clk.clkr, + [GCC_NSSNOC_TIMEOUT_REF_CLK] =3D &gcc_nssnoc_timeout_ref_clk.clkr, + [GCC_NSSNOC_XO_DCD_CLK] =3D &gcc_nssnoc_xo_dcd_clk.clkr, + [GCC_PCIE0_AHB_CLK] =3D &gcc_pcie0_ahb_clk.clkr, + [GCC_PCIE0_AUX_CLK] =3D &gcc_pcie0_aux_clk.clkr, + [GCC_PCIE0_AXI_M_CLK] =3D &gcc_pcie0_axi_m_clk.clkr, + [GCC_PCIE0_AXI_M_CLK_SRC] =3D &gcc_pcie0_axi_m_clk_src.clkr, + [GCC_PCIE0_AXI_S_BRIDGE_CLK] =3D &gcc_pcie0_axi_s_bridge_clk.clkr, + [GCC_PCIE0_AXI_S_CLK] =3D &gcc_pcie0_axi_s_clk.clkr, + [GCC_PCIE0_AXI_S_CLK_SRC] =3D &gcc_pcie0_axi_s_clk_src.clkr, + [GCC_PCIE0_PIPE_CLK] =3D &gcc_pcie0_pipe_clk.clkr, + [GCC_PCIE0_PIPE_CLK_SRC] =3D &gcc_pcie0_pipe_clk_src.clkr, + [GCC_PCIE0_RCHNG_CLK_SRC] =3D &gcc_pcie0_rchng_clk_src.clkr, + [GCC_PCIE0_RCHNG_CLK] =3D &gcc_pcie0_rchng_clk.clkr, + [GCC_PCIE1_AHB_CLK] =3D &gcc_pcie1_ahb_clk.clkr, + [GCC_PCIE1_AUX_CLK] =3D &gcc_pcie1_aux_clk.clkr, + [GCC_PCIE1_AXI_M_CLK] =3D &gcc_pcie1_axi_m_clk.clkr, + [GCC_PCIE1_AXI_M_CLK_SRC] =3D &gcc_pcie1_axi_m_clk_src.clkr, + [GCC_PCIE1_AXI_S_BRIDGE_CLK] =3D &gcc_pcie1_axi_s_bridge_clk.clkr, + [GCC_PCIE1_AXI_S_CLK] =3D &gcc_pcie1_axi_s_clk.clkr, + [GCC_PCIE1_AXI_S_CLK_SRC] =3D &gcc_pcie1_axi_s_clk_src.clkr, + [GCC_PCIE1_PIPE_CLK] =3D &gcc_pcie1_pipe_clk.clkr, + [GCC_PCIE1_PIPE_CLK_SRC] =3D &gcc_pcie1_pipe_clk_src.clkr, + [GCC_PCIE1_RCHNG_CLK_SRC] =3D &gcc_pcie1_rchng_clk_src.clkr, + [GCC_PCIE1_RCHNG_CLK] =3D &gcc_pcie1_rchng_clk.clkr, + [GCC_PCIE2_AHB_CLK] =3D &gcc_pcie2_ahb_clk.clkr, + [GCC_PCIE2_AUX_CLK] =3D &gcc_pcie2_aux_clk.clkr, + [GCC_PCIE2_AXI_M_CLK] =3D &gcc_pcie2_axi_m_clk.clkr, + [GCC_PCIE2_AXI_M_CLK_SRC] =3D &gcc_pcie2_axi_m_clk_src.clkr, + [GCC_PCIE2_AXI_S_BRIDGE_CLK] =3D &gcc_pcie2_axi_s_bridge_clk.clkr, + [GCC_PCIE2_AXI_S_CLK] =3D &gcc_pcie2_axi_s_clk.clkr, + [GCC_PCIE2_AXI_S_CLK_SRC] =3D &gcc_pcie2_axi_s_clk_src.clkr, + [GCC_PCIE2_PIPE_CLK] =3D &gcc_pcie2_pipe_clk.clkr, + [GCC_PCIE2_PIPE_CLK_SRC] =3D &gcc_pcie2_pipe_clk_src.clkr, + [GCC_PCIE2_RCHNG_CLK_SRC] =3D &gcc_pcie2_rchng_clk_src.clkr, + [GCC_PCIE2_RCHNG_CLK] =3D &gcc_pcie2_rchng_clk.clkr, + [GCC_PCIE3_AHB_CLK] =3D &gcc_pcie3_ahb_clk.clkr, + [GCC_PCIE3_AUX_CLK] =3D &gcc_pcie3_aux_clk.clkr, + [GCC_PCIE3_AXI_M_CLK] =3D &gcc_pcie3_axi_m_clk.clkr, + [GCC_PCIE3_AXI_M_CLK_SRC] =3D &gcc_pcie3_axi_m_clk_src.clkr, + [GCC_PCIE3_AXI_S_BRIDGE_CLK] =3D &gcc_pcie3_axi_s_bridge_clk.clkr, + [GCC_PCIE3_AXI_S_CLK] =3D &gcc_pcie3_axi_s_clk.clkr, + [GCC_PCIE3_AXI_S_CLK_SRC] =3D &gcc_pcie3_axi_s_clk_src.clkr, + [GCC_PCIE3_PIPE_CLK] =3D &gcc_pcie3_pipe_clk.clkr, + [GCC_PCIE3_PIPE_CLK_SRC] =3D &gcc_pcie3_pipe_clk_src.clkr, + [GCC_PCIE3_RCHNG_CLK_SRC] =3D &gcc_pcie3_rchng_clk_src.clkr, + [GCC_PCIE3_RCHNG_CLK] =3D &gcc_pcie3_rchng_clk.clkr, + [GCC_PCIE4_AHB_CLK] =3D &gcc_pcie4_ahb_clk.clkr, + [GCC_PCIE4_AUX_CLK] =3D &gcc_pcie4_aux_clk.clkr, + [GCC_PCIE4_AXI_M_CLK] =3D &gcc_pcie4_axi_m_clk.clkr, + [GCC_PCIE4_AXI_M_CLK_SRC] =3D &gcc_pcie4_axi_m_clk_src.clkr, + [GCC_PCIE4_AXI_S_BRIDGE_CLK] =3D &gcc_pcie4_axi_s_bridge_clk.clkr, + [GCC_PCIE4_AXI_S_CLK] =3D &gcc_pcie4_axi_s_clk.clkr, + [GCC_PCIE4_AXI_S_CLK_SRC] =3D &gcc_pcie4_axi_s_clk_src.clkr, + [GCC_PCIE4_PIPE_CLK] =3D &gcc_pcie4_pipe_clk.clkr, + [GCC_PCIE4_PIPE_CLK_SRC] =3D &gcc_pcie4_pipe_clk_src.clkr, + [GCC_PCIE4_RCHNG_CLK_SRC] =3D &gcc_pcie4_rchng_clk_src.clkr, + [GCC_PCIE4_RCHNG_CLK] =3D &gcc_pcie4_rchng_clk.clkr, + [GCC_PCIE_AUX_CLK_SRC] =3D &gcc_pcie_aux_clk_src.clkr, + [GCC_PCIE_CMN_HCLK] =3D &gcc_pcie_cmn_hclk.clkr, + [GCC_PCIE_CMN_LDO_CLK] =3D &gcc_pcie_cmn_ldo_clk.clkr, + [GCC_PCNOC_BFDCD_CLK_SRC] =3D &gcc_pcnoc_bfdcd_clk_src.clkr, + [GCC_PRIMESS_AHBM_CLK] =3D &gcc_primess_ahbm_clk.clkr, + [GCC_PRIMESS_AHBM_CLK_SRC] =3D &gcc_primess_ahbm_clk_src.clkr, + [GCC_PRIMESS_AHBM_PARTIAL_CLK] =3D &gcc_primess_ahbm_partial_clk.clkr, + [GCC_PRIMESS_AHBS_CLK] =3D &gcc_primess_ahbs_clk.clkr, + [GCC_PRIMESS_ATB_CLK] =3D &gcc_primess_atb_clk.clkr, + [GCC_PRIMESS_AXIM_CLK] =3D &gcc_primess_axim_clk.clkr, + [GCC_PRIMESS_AXIM_CLK_SRC] =3D &gcc_primess_axim_clk_src.clkr, + [GCC_PRIMESS_AXIM_PARTIAL_CLK] =3D &gcc_primess_axim_partial_clk.clkr, + [GCC_PRIMESS_CLK] =3D &gcc_primess_clk.clkr, + [GCC_PRIMESS_CLK_SRC] =3D &gcc_primess_clk_src.clkr, + [GCC_PRIMESS_XO_CLK] =3D &gcc_primess_xo_clk.clkr, + [GCC_QDSS_AT_CLK] =3D &gcc_qdss_at_clk.clkr, + [GCC_QDSS_AT_CLK_SRC] =3D &gcc_qdss_at_clk_src.clkr, + [GCC_QDSS_DAP_CLK] =3D &gcc_qdss_dap_clk.clkr, + [GCC_QDSS_TSCTR_CLK_SRC] =3D &gcc_qdss_tsctr_clk_src.clkr, + [GCC_QPIC_AHB_CLK] =3D &gcc_qpic_ahb_clk.clkr, + [GCC_QPIC_CLK] =3D &gcc_qpic_clk.clkr, + [GCC_QPIC_CLK_SRC] =3D &gcc_qpic_clk_src.clkr, + [GCC_QPIC_IO_MACRO_CLK] =3D &gcc_qpic_io_macro_clk.clkr, + [GCC_QPIC_IO_MACRO_CLK_SRC] =3D &gcc_qpic_io_macro_clk_src.clkr, + [GCC_QPIC_SLEEP_CLK] =3D &gcc_qpic_sleep_clk.clkr, + [GCC_QUPV3_2X_CORE_CLK_SRC] =3D &gcc_qupv3_2x_core_clk_src.clkr, + [GCC_QUPV3_AHB_MST_CLK] =3D &gcc_qupv3_ahb_mst_clk.clkr, + [GCC_QUPV3_AHB_SLV_CLK] =3D &gcc_qupv3_ahb_slv_clk.clkr, + [GCC_QUPV3_WRAP_SE0_CLK] =3D &gcc_qupv3_wrap_se0_clk.clkr, + [GCC_QUPV3_WRAP_SE0_CLK_SRC] =3D &gcc_qupv3_wrap_se0_clk_src.clkr, + [GCC_QUPV3_WRAP_SE1_CLK] =3D &gcc_qupv3_wrap_se1_clk.clkr, + [GCC_QUPV3_WRAP_SE1_CLK_SRC] =3D &gcc_qupv3_wrap_se1_clk_src.clkr, + [GCC_QUPV3_WRAP_SE2_CLK] =3D &gcc_qupv3_wrap_se2_clk.clkr, + [GCC_QUPV3_WRAP_SE2_CLK_SRC] =3D &gcc_qupv3_wrap_se2_clk_src.clkr, + [GCC_QUPV3_WRAP_SE3_CLK] =3D &gcc_qupv3_wrap_se3_clk.clkr, + [GCC_QUPV3_WRAP_SE3_CLK_SRC] =3D &gcc_qupv3_wrap_se3_clk_src.clkr, + [GCC_QUPV3_WRAP_SE4_CLK] =3D &gcc_qupv3_wrap_se4_clk.clkr, + [GCC_QUPV3_WRAP_SE4_CLK_SRC] =3D &gcc_qupv3_wrap_se4_clk_src.clkr, + [GCC_QUPV3_WRAP_SE5_CLK] =3D &gcc_qupv3_wrap_se5_clk.clkr, + [GCC_QUPV3_WRAP_SE5_CLK_SRC] =3D &gcc_qupv3_wrap_se5_clk_src.clkr, + [GCC_QUPV3_WRAP_SE6_CLK] =3D &gcc_qupv3_wrap_se6_clk.clkr, + [GCC_QUPV3_WRAP_SE6_CLK_SRC] =3D &gcc_qupv3_wrap_se6_clk_src.clkr, + [GCC_QUPV3_WRAP_SE7_CLK] =3D &gcc_qupv3_wrap_se7_clk.clkr, + [GCC_QUPV3_WRAP_SE7_CLK_SRC] =3D &gcc_qupv3_wrap_se7_clk_src.clkr, + [GCC_REFGEN_CORE_CLK_SRC] =3D &gcc_refgen_core_clk_src.clkr, + [GCC_REFGEN_PCIE_CORE_CLK] =3D &gcc_refgen_pcie_core_clk.clkr, + [GCC_REFGEN_PCIE_HCLK] =3D &gcc_refgen_pcie_hclk.clkr, + [GCC_SDCC1_AHB_CLK] =3D &gcc_sdcc1_ahb_clk.clkr, + [GCC_SDCC1_APPS_CLK] =3D &gcc_sdcc1_apps_clk.clkr, + [GCC_SDCC1_APPS_CLK_SRC] =3D &gcc_sdcc1_apps_clk_src.clkr, + [GCC_SDCC1_ICE_CORE_CLK] =3D &gcc_sdcc1_ice_core_clk.clkr, + [GCC_SDCC1_ICE_CORE_CLK_SRC] =3D &gcc_sdcc1_ice_core_clk_src.clkr, + [GCC_SLEEP_CLK_SRC] =3D &gcc_sleep_clk_src.clkr, + [GCC_SNOC_USB_CLK] =3D &gcc_snoc_usb_clk.clkr, + [GCC_SYSTEM_NOC_BFDCD_CLK_SRC] =3D &gcc_system_noc_bfdcd_clk_src.clkr, + [GCC_UNIPHY0_AHB_CLK] =3D &gcc_uniphy0_ahb_clk.clkr, + [GCC_UNIPHY0_SYS_CLK] =3D &gcc_uniphy0_sys_clk.clkr, + [GCC_UNIPHY1_AHB_CLK] =3D &gcc_uniphy1_ahb_clk.clkr, + [GCC_UNIPHY1_SYS_CLK] =3D &gcc_uniphy1_sys_clk.clkr, + [GCC_UNIPHY2_AHB_CLK] =3D &gcc_uniphy2_ahb_clk.clkr, + [GCC_UNIPHY2_SYS_CLK] =3D &gcc_uniphy2_sys_clk.clkr, + [GCC_UNIPHY_SYS_CLK_SRC] =3D &gcc_uniphy_sys_clk_src.clkr, + [GCC_USB0_AUX_CLK] =3D &gcc_usb0_aux_clk.clkr, + [GCC_USB0_AUX_CLK_SRC] =3D &gcc_usb0_aux_clk_src.clkr, + [GCC_USB0_EUD_AT_CLK] =3D &gcc_usb0_eud_at_clk.clkr, + [GCC_USB0_MASTER_CLK] =3D &gcc_usb0_master_clk.clkr, + [GCC_USB0_MASTER_CLK_SRC] =3D &gcc_usb0_master_clk_src.clkr, + [GCC_USB0_MOCK_UTMI_CLK] =3D &gcc_usb0_mock_utmi_clk.clkr, + [GCC_USB0_MOCK_UTMI_CLK_SRC] =3D &gcc_usb0_mock_utmi_clk_src.clkr, + [GCC_USB0_MOCK_UTMI_DIV_CLK_SRC] =3D &gcc_usb0_mock_utmi_div_clk_src.clkr, + [GCC_USB0_PHY_CFG_AHB_CLK] =3D &gcc_usb0_phy_cfg_ahb_clk.clkr, + [GCC_USB0_PIPE_CLK] =3D &gcc_usb0_pipe_clk.clkr, + [GCC_USB0_PIPE_CLK_SRC] =3D &gcc_usb0_pipe_clk_src.clkr, + [GCC_USB0_SLEEP_CLK] =3D &gcc_usb0_sleep_clk.clkr, + [GCC_USB1_MASTER_CLK] =3D &gcc_usb1_master_clk.clkr, + [GCC_USB1_MOCK_UTMI_CLK] =3D &gcc_usb1_mock_utmi_clk.clkr, + [GCC_USB1_MOCK_UTMI_CLK_SRC] =3D &gcc_usb1_mock_utmi_clk_src.clkr, + [GCC_USB1_MOCK_UTMI_DIV_CLK_SRC] =3D &gcc_usb1_mock_utmi_div_clk_src.clkr, + [GCC_USB1_PHY_CFG_AHB_CLK] =3D &gcc_usb1_phy_cfg_ahb_clk.clkr, + [GCC_USB1_SLEEP_CLK] =3D &gcc_usb1_sleep_clk.clkr, + [GCC_USB_CMN_HCLK] =3D &gcc_usb_cmn_hclk.clkr, + [GCC_USB_CMN_LDO_CLK] =3D &gcc_usb_cmn_ldo_clk.clkr, + [GCC_XO_CLK_SRC] =3D &gcc_xo_clk_src.clkr, + [GPLL0_MAIN] =3D &gpll0_main.clkr, + [GPLL0] =3D &gpll0.clkr, + [GPLL2] =3D &gpll2.clkr, + [GPLL2_OUT_MAIN] =3D &gpll2_out_main.clkr, + [GPLL4] =3D &gpll4.clkr, +}; + +static const struct qcom_reset_map gcc_ipq9650_resets[] =3D { + [GCC_ADSS_BCR] =3D { 0x1c000 }, + [GCC_ADSS_PWM_CLK_ARES] =3D { 0x1c00c, 2 }, + [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] =3D { 0x38000 }, + [GCC_APC0_VOLTAGE_DROOP_DETECTOR_GPLL0_CLK_ARES] =3D { 0x3800c, 2 }, + [GCC_APSS_AHB_CLK_ARES] =3D { 0x24014, 2 }, + [GCC_APSS_ATB_CLK_ARES] =3D { 0x24034, 2 }, + [GCC_APSS_AXI_CLK_ARES] =3D { 0x24018, 2 }, + [GCC_APSS_TS_CLK_ARES] =3D { 0x24030, 2 }, + [GCC_BOOT_ROM_AHB_CLK_ARES] =3D { 0x1302c, 2 }, + [GCC_BOOT_ROM_BCR] =3D { 0x13028 }, + [GCC_CPUSS_TRIG_CLK_ARES] =3D { 0x2401c, 2 }, + [GCC_GP1_CLK_ARES] =3D { 0x8018, 2 }, + [GCC_GP2_CLK_ARES] =3D { 0x8030, 2 }, + [GCC_GP3_CLK_ARES] =3D { 0x8048, 2 }, + [GCC_MDIO_AHB_CLK_ARES] =3D { 0x17040, 2 }, + [GCC_MDIO_BCR] =3D { 0x1703c }, + [GCC_NSS_BCR] =3D { 0x17000 }, + [GCC_NSS_TS_CLK_ARES] =3D { 0x17018, 2 }, + [GCC_NSSCC_CLK_ARES] =3D { 0x17034, 2 }, + [GCC_NSSCFG_CLK_ARES] =3D { 0x1702c, 2 }, + [GCC_NSSNOC_ATB_CLK_ARES] =3D { 0x17014, 2 }, + [GCC_NSSNOC_MEMNOC_1_CLK_ARES] =3D { 0x17084, 2 }, + [GCC_NSSNOC_MEMNOC_CLK_ARES] =3D { 0x17024, 2 }, + [GCC_NSSNOC_NSSCC_CLK_ARES] =3D { 0x17030, 2 }, + [GCC_NSSNOC_PCNOC_1_CLK_ARES] =3D { 0x17080, 2 }, + [GCC_NSSNOC_QOSGEN_REF_CLK_ARES] =3D { 0x1701c, 2 }, + [GCC_NSSNOC_SNOC_1_CLK_ARES] =3D { 0x1707c, 2 }, + [GCC_NSSNOC_SNOC_CLK_ARES] =3D { 0x17028, 2 }, + [GCC_NSSNOC_TIMEOUT_REF_CLK_ARES] =3D { 0x17020, 2 }, + [GCC_NSSNOC_XO_DCD_CLK_ARES] =3D { 0x17074, 2 }, + [GCC_PCIE0_AHB_CLK_ARES] =3D { 0x28030, 2 }, + [GCC_PCIE0_AUX_CLK_ARES] =3D { 0x28070, 2 }, + [GCC_PCIE0_AXI_M_CLK_ARES] =3D { 0x28038, 2 }, + [GCC_PCIE0_AXI_S_BRIDGE_CLK_ARES] =3D { 0x28048, 2 }, + [GCC_PCIE0_AXI_S_CLK_ARES] =3D { 0x28040, 2 }, + [GCC_PCIE0_BCR] =3D { 0x28000 }, + [GCC_PCIE0_LINK_DOWN_BCR] =3D { 0x28054 }, + [GCC_PCIE0_PHY_BCR] =3D { 0x28060 }, + [GCC_PCIE0_PIPE_CLK_ARES] =3D { 0x28068, 2 }, + [GCC_PCIE0PHY_PHY_BCR] =3D { 0x2805c }, + [GCC_PCIE0_PIPE_RESET] =3D { 0x28058, 0 }, + [GCC_PCIE0_CORE_STICKY_RESET] =3D { 0x28058, 1 }, + [GCC_PCIE0_AXI_S_STICKY_RESET] =3D { 0x28058, 2 }, + [GCC_PCIE0_AXI_S_RESET] =3D { 0x28058, 3 }, + [GCC_PCIE0_AXI_M_STICKY_RESET] =3D { 0x28058, 4 }, + [GCC_PCIE0_AXI_M_RESET] =3D { 0x28058, 5 }, + [GCC_PCIE0_AUX_RESET] =3D { 0x28058, 6 }, + [GCC_PCIE0_AHB_RESET] =3D { 0x28058, 7 }, + [GCC_PCIE1_AHB_CLK_ARES] =3D { 0x29030, 2 }, + [GCC_PCIE1_AUX_CLK_ARES] =3D { 0x29074, 2 }, + [GCC_PCIE1_AXI_M_CLK_ARES] =3D { 0x29038, 2 }, + [GCC_PCIE1_AXI_S_BRIDGE_CLK_ARES] =3D { 0x29048, 2 }, + [GCC_PCIE1_AXI_S_CLK_ARES] =3D { 0x29040, 2 }, + [GCC_PCIE1_BCR] =3D { 0x29000 }, + [GCC_PCIE1_LINK_DOWN_BCR] =3D { 0x29054 }, + [GCC_PCIE1_PHY_BCR] =3D { 0x29060 }, + [GCC_PCIE1_PIPE_CLK_ARES] =3D { 0x29068, 2 }, + [GCC_PCIE1PHY_PHY_BCR] =3D { 0x2905c }, + [GCC_PCIE1_PIPE_RESET] =3D { 0x29058, 0 }, + [GCC_PCIE1_CORE_STICKY_RESET] =3D { 0x29058, 1 }, + [GCC_PCIE1_AXI_S_STICKY_RESET] =3D { 0x29058, 2 }, + [GCC_PCIE1_AXI_S_RESET] =3D { 0x29058, 3 }, + [GCC_PCIE1_AXI_M_STICKY_RESET] =3D { 0x29058, 4 }, + [GCC_PCIE1_AXI_M_RESET] =3D { 0x29058, 5 }, + [GCC_PCIE1_AUX_RESET] =3D { 0x29058, 6 }, + [GCC_PCIE1_AHB_RESET] =3D { 0x29058, 7 }, + [GCC_PCIE2_AHB_CLK_ARES] =3D { 0x2a030, 2 }, + [GCC_PCIE2_AUX_CLK_ARES] =3D { 0x2a078, 2 }, + [GCC_PCIE2_AXI_M_CLK_ARES] =3D { 0x2a038, 2 }, + [GCC_PCIE2_AXI_S_BRIDGE_CLK_ARES] =3D { 0x2a048, 2 }, + [GCC_PCIE2_AXI_S_CLK_ARES] =3D { 0x2a040, 2 }, + [GCC_PCIE2_BCR] =3D { 0x2a000 }, + [GCC_PCIE2_LINK_DOWN_BCR] =3D { 0x2a054 }, + [GCC_PCIE2_PHY_BCR] =3D { 0x2a060 }, + [GCC_PCIE2_PIPE_CLK_ARES] =3D { 0x2a068, 2 }, + [GCC_PCIE2PHY_PHY_BCR] =3D { 0x2a05c }, + [GCC_PCIE2_PIPE_RESET] =3D { 0x2a058, 0 }, + [GCC_PCIE2_CORE_STICKY_RESET] =3D { 0x2a058, 1 }, + [GCC_PCIE2_AXI_S_STICKY_RESET] =3D { 0x2a058, 2 }, + [GCC_PCIE2_AXI_S_RESET] =3D { 0x2a058, 3 }, + [GCC_PCIE2_AXI_M_STICKY_RESET] =3D { 0x2a058, 4 }, + [GCC_PCIE2_AXI_M_RESET] =3D { 0x2a058, 5 }, + [GCC_PCIE2_AUX_RESET] =3D { 0x2a058, 6 }, + [GCC_PCIE2_AHB_RESET] =3D { 0x2a058, 7 }, + [GCC_PCIE3_AHB_CLK_ARES] =3D { 0x2b030, 2 }, + [GCC_PCIE3_AUX_CLK_ARES] =3D { 0x2b07c, 2 }, + [GCC_PCIE3_AXI_M_CLK_ARES] =3D { 0x2b038, 2 }, + [GCC_PCIE3_AXI_S_BRIDGE_CLK_ARES] =3D { 0x2b048, 2 }, + [GCC_PCIE3_AXI_S_CLK_ARES] =3D { 0x2b040, 2 }, + [GCC_PCIE3_BCR] =3D { 0x2b000 }, + [GCC_PCIE3_LINK_DOWN_BCR] =3D { 0x2b054 }, + [GCC_PCIE3_PHY_BCR] =3D { 0x2b060 }, + [GCC_PCIE3_PIPE_CLK_ARES] =3D { 0x2b068, 2 }, + [GCC_PCIE3PHY_PHY_BCR] =3D { 0x2b05c }, + [GCC_PCIE3_PIPE_RESET] =3D { 0x2b058, 0 }, + [GCC_PCIE3_CORE_STICKY_RESET] =3D { 0x2b058, 1 }, + [GCC_PCIE3_AXI_S_STICKY_RESET] =3D { 0x2b058, 2 }, + [GCC_PCIE3_AXI_S_RESET] =3D { 0x2b058, 3 }, + [GCC_PCIE3_AXI_M_STICKY_RESET] =3D { 0x2b058, 4 }, + [GCC_PCIE3_AXI_M_RESET] =3D { 0x2b058, 5 }, + [GCC_PCIE3_AUX_RESET] =3D { 0x2b058, 6 }, + [GCC_PCIE3_AHB_RESET] =3D { 0x2b058, 7 }, + [GCC_PCIE4_AHB_CLK_ARES] =3D { 0x2501c, 2 }, + [GCC_PCIE4_AUX_CLK_ARES] =3D { 0x25020, 2 }, + [GCC_PCIE4_AXI_M_CLK_ARES] =3D { 0x25028, 2 }, + [GCC_PCIE4_AXI_S_BRIDGE_CLK_ARES] =3D { 0x25038, 2 }, + [GCC_PCIE4_AXI_S_CLK_ARES] =3D { 0x25030, 2 }, + [GCC_PCIE4_BCR] =3D { 0x25000 }, + [GCC_PCIE4_LINK_DOWN_BCR] =3D { 0x25044 }, + [GCC_PCIE4_PHY_BCR] =3D { 0x2504c }, + [GCC_PCIE4_PIPE_CLK_ARES] =3D { 0x2503c, 2 }, + [GCC_PCIE4_PIPE_RESET] =3D { 0x25054, 0 }, + [GCC_PCIE4_CORE_STICKY_RESET] =3D { 0x25054, 1 }, + [GCC_PCIE4_AXI_S_STICKY_RESET] =3D { 0x25054, 2 }, + [GCC_PCIE4_AXI_S_RESET] =3D { 0x25054, 3 }, + [GCC_PCIE4_AXI_M_STICKY_RESET] =3D { 0x25054, 4 }, + [GCC_PCIE4_AXI_M_RESET] =3D { 0x25054, 5 }, + [GCC_PCIE4_AUX_RESET] =3D { 0x25054, 6 }, + [GCC_PCIE4_AHB_RESET] =3D { 0x25054, 7 }, + [GCC_PCIE4PHY_PHY_BCR] =3D { 0x25048 }, + [GCC_PCIE_CMN_LDO_BCR] =3D { 0x23028 }, + [GCC_PRIME_SS_BCR] =3D { 0x26004 }, + [GCC_PRIMESS_AHBM_CLK_ARES] =3D { 0x26038, 2 }, + [GCC_PRIMESS_AHBM_PARTIAL_CLK_ARES] =3D { 0x26040, 2 }, + [GCC_PRIMESS_AHBS_CLK_ARES] =3D { 0x26034, 2 }, + [GCC_PRIMESS_ATB_CLK_ARES] =3D { 0x26030, 2 }, + [GCC_PRIMESS_AXIM_CLK_ARES] =3D { 0x2602c, 2 }, + [GCC_PRIMESS_AXIM_PARTIAL_CLK_ARES] =3D { 0x2603c, 2 }, + [GCC_PRIMESS_CLK_ARES] =3D { 0x26028, 2 }, + [GCC_PRIMESS_XO_CLK_ARES] =3D { 0x26024, 2 }, + [GCC_QDSS_APB2JTAG_CLK_ARES] =3D { 0x2d05c, 2 }, + [GCC_QDSS_AT_CLK_ARES] =3D { 0x2d034, 2 }, + [GCC_QDSS_BCR] =3D { 0x2d000 }, + [GCC_QDSS_CFG_AHB_CLK_ARES] =3D { 0x2d068, 2 }, + [GCC_QDSS_DAP_AHB_CLK_ARES] =3D { 0x2d064, 2 }, + [GCC_QDSS_DAP_CLK_ARES] =3D { 0x2d058, 2 }, + [GCC_QDSS_ETR_USB_CLK_ARES] =3D { 0x2d060, 2 }, + [GCC_QDSS_EUD_AT_CLK_ARES] =3D { 0x2d06c, 2 }, + [GCC_QDSS_STM_CLK_ARES] =3D { 0x2d03c, 2 }, + [GCC_QDSS_TRACECLKIN_CLK_ARES] =3D { 0x2d040, 2 }, + [GCC_QDSS_TS_CLK_ARES] =3D { 0x2d078, 2 }, + [GCC_QDSS_TSCTR_DIV16_CLK_ARES] =3D { 0x2d054, 2 }, + [GCC_QDSS_TSCTR_DIV2_CLK_ARES] =3D { 0x2d044, 2 }, + [GCC_QDSS_TSCTR_DIV3_CLK_ARES] =3D { 0x2d048, 2 }, + [GCC_QDSS_TSCTR_DIV4_CLK_ARES] =3D { 0x2d04c, 2 }, + [GCC_QDSS_TSCTR_DIV8_CLK_ARES] =3D { 0x2d050, 2 }, + [GCC_QPIC_AHB_CLK_ARES] =3D { 0x32010, 2 }, + [GCC_QPIC_CLK_ARES] =3D { 0x32028, 2 }, + [GCC_QPIC_BCR] =3D { 0x32000 }, + [GCC_QPIC_IO_MACRO_CLK_ARES] =3D { 0x3200c, 2 }, + [GCC_QPIC_SLEEP_CLK_ARES] =3D { 0x32018, 2 }, + [GCC_QUPV3_2X_CORE_CLK_ARES] =3D { 0x1020, 2 }, + [GCC_QUPV3_AHB_MST_CLK_ARES] =3D { 0x1014, 2 }, + [GCC_QUPV3_AHB_SLV_CLK_ARES] =3D { 0x102c, 2 }, + [GCC_QUPV3_BCR] =3D { 0x1000 }, + [GCC_QUPV3_CORE_CLK_ARES] =3D { 0x1018, 2 }, + [GCC_QUPV3_WRAP_SE0_CLK_ARES] =3D { 0x202c, 2 }, + [GCC_QUPV3_WRAP_SE0_BCR] =3D { 0x2000 }, + [GCC_QUPV3_WRAP_SE1_CLK_ARES] =3D { 0x302c, 2 }, + [GCC_QUPV3_WRAP_SE1_BCR] =3D { 0x3000 }, + [GCC_QUPV3_WRAP_SE2_CLK_ARES] =3D { 0x3048, 2 }, + [GCC_QUPV3_WRAP_SE2_BCR] =3D { 0x3030 }, + [GCC_QUPV3_WRAP_SE3_CLK_ARES] =3D { 0x3064, 2 }, + [GCC_QUPV3_WRAP_SE3_BCR] =3D { 0x304c }, + [GCC_QUPV3_WRAP_SE4_CLK_ARES] =3D { 0x3080, 2 }, + [GCC_QUPV3_WRAP_SE4_BCR] =3D { 0x3068 }, + [GCC_QUPV3_WRAP_SE5_CLK_ARES] =3D { 0x30a4, 2 }, + [GCC_QUPV3_WRAP_SE5_BCR] =3D { 0x308c }, + [GCC_QUPV3_WRAP_SE6_CLK_ARES] =3D { 0x4018, 2 }, + [GCC_QUPV3_WRAP_SE6_BCR] =3D { 0x4000 }, + [GCC_QUPV3_WRAP_SE7_CLK_ARES] =3D { 0x4034, 2 }, + [GCC_QUPV3_WRAP_SE7_BCR] =3D { 0x401c }, + [GCC_QUSB2_0_PHY_BCR] =3D { 0x2c068 }, + [GCC_QUSB2_1_PHY_BCR] =3D { 0x3c030 }, + [GCC_REFGEN_PCIE_BCR] =3D { 0x2301c }, + [GCC_REFGEN_PCIE_CORE_CLK_ARES] =3D { 0x23020, 2 }, + [GCC_SDCC1_APPS_CLK_ARES] =3D { 0x3302c, 2 }, + [GCC_SDCC1_ICE_CORE_CLK_ARES] =3D { 0x33034, 2 }, + [GCC_SDCC_BCR] =3D { 0x33000 }, + [GCC_TLMM_AHB_CLK_ARES] =3D { 0x3e004, 2 }, + [GCC_TLMM_CLK_ARES] =3D { 0x3e008, 2 }, + [GCC_TLMM_BCR] =3D { 0x3e000 }, + [GCC_UNIPHY0_AHB_CLK_ARES] =3D { 0x1704c, 2 }, + [GCC_UNIPHY0_BCR] =3D { 0x17044 }, + [GCC_UNIPHY0_PMA_BCR] =3D { 0x17098 }, + [GCC_UNIPHY0_SYS_CLK_ARES] =3D { 0x17048, 2 }, + [GCC_UNIPHY1_AHB_CLK_ARES] =3D { 0x1705c, 2 }, + [GCC_UNIPHY1_BCR] =3D { 0x17054 }, + [GCC_UNIPHY1_PMA_BCR] =3D { 0x1709c }, + [GCC_UNIPHY1_SYS_CLK_ARES] =3D { 0x17058, 2 }, + [GCC_UNIPHY2_AHB_CLK_ARES] =3D { 0x1706c, 2 }, + [GCC_UNIPHY2_BCR] =3D { 0x17064 }, + [GCC_UNIPHY2_PMA_BCR] =3D { 0x170a0 }, + [GCC_UNIPHY2_SYS_CLK_ARES] =3D { 0x17068, 2 }, + [GCC_UNIPHY0_XPCS_ARES] =3D { 0x17050, 2 }, + [GCC_UNIPHY1_XLGPCS_ARES] =3D { 0x17060, 1 }, + [GCC_UNIPHY1_XPCS_ARES] =3D { 0x17060, 2 }, + [GCC_UNIPHY2_XLGPCS_ARES] =3D { 0x17070, 1 }, + [GCC_UNIPHY2_XPCS_ARES] =3D { 0x17070, 2 }, + [GCC_USB0_AUX_CLK_ARES] =3D { 0x2c04c, 2 }, + [GCC_USB0_MASTER_CLK_ARES] =3D { 0x2c044, 2 }, + [GCC_USB0_MOCK_UTMI_CLK_ARES] =3D { 0x2c050, 2 }, + [GCC_USB0_PHY_BCR] =3D { 0x2c06c }, + [GCC_USB0_PHY_CFG_AHB_CLK_ARES] =3D { 0x2c05c, 2 }, + [GCC_USB0_PIPE_CLK_ARES] =3D { 0x2c054, 2 }, + [GCC_USB0_SLEEP_CLK_ARES] =3D { 0x2c058, 2 }, + [GCC_USB1_BCR] =3D { 0x3c000 }, + [GCC_USB1_MASTER_CLK_ARES] =3D { 0x3c028, 2 }, + [GCC_USB1_MOCK_UTMI_CLK_ARES] =3D { 0x3c024, 2 }, + [GCC_USB1_PHY_CFG_AHB_CLK_ARES] =3D { 0x3c01c, 2 }, + [GCC_USB1_SLEEP_CLK_ARES] =3D { 0x3c020, 2 }, + [GCC_USB3PHY_0_PHY_BCR] =3D { 0x2c070 }, + [GCC_USB_BCR] =3D { 0x2c000 }, + [GCC_USB_CMN_LDO_BCR] =3D { 0x23034 }, +}; + +static const struct of_device_id gcc_ipq9650_match_table[] =3D { + { .compatible =3D "qcom,ipq9650-gcc" }, + { } +}; +MODULE_DEVICE_TABLE(of, gcc_ipq9650_match_table); + +static const struct regmap_config gcc_ipq9650_regmap_config =3D { + .reg_bits =3D 32, + .reg_stride =3D 4, + .val_bits =3D 32, + .max_register =3D 0x3f024, + .fast_io =3D true, +}; + +static struct clk_hw *gcc_ipq9650_hws[] =3D { + &gpll0_div2.hw, + &gcc_xo_div4_clk_src.hw, + &gcc_qdss_dap_sync_clk_src.hw, + &gcc_eud_at_div_clk_src.hw, +}; + +static const struct qcom_cc_desc gcc_ipq9650_desc =3D { + .config =3D &gcc_ipq9650_regmap_config, + .clks =3D gcc_ipq9650_clocks, + .num_clks =3D ARRAY_SIZE(gcc_ipq9650_clocks), + .resets =3D gcc_ipq9650_resets, + .num_resets =3D ARRAY_SIZE(gcc_ipq9650_resets), + .clk_hws =3D gcc_ipq9650_hws, + .num_clk_hws =3D ARRAY_SIZE(gcc_ipq9650_hws), +}; + +static int gcc_ipq9650_probe(struct platform_device *pdev) +{ + return qcom_cc_probe(pdev, &gcc_ipq9650_desc); +} + +static struct platform_driver gcc_ipq9650_driver =3D { + .probe =3D gcc_ipq9650_probe, + .driver =3D { + .name =3D "qcom,gcc-ipq9650", + .of_match_table =3D gcc_ipq9650_match_table, + }, +}; + +static int __init gcc_ipq9650_init(void) +{ + return platform_driver_register(&gcc_ipq9650_driver); +} +core_initcall(gcc_ipq9650_init); + +static void __exit gcc_ipq9650_exit(void) +{ + platform_driver_unregister(&gcc_ipq9650_driver); +} +module_exit(gcc_ipq9650_exit); + +MODULE_DESCRIPTION("QTI GCC IPQ9650 Driver"); +MODULE_LICENSE("GPL"); --=20 2.34.1 From nobody Tue Jun 16 02:38:26 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E3A643B2FF3 for ; Wed, 15 Apr 2026 13:33:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776260023; cv=none; b=ZEcIpiaeIZbjxJ57E0dswPbHdv+uHn0voOebdn5AIt0btK8cq7/v/KgXhUlv2+sH1fIUW11YzbZ+0wIBWlNbvTEQshuwlMQaWte7HRFiQ8YRdfWqvyQV0O5NP91R6seOCGfrzbwDqu1s8QG/kD15VAP07HVJTJR0dlSRL54Ceb0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776260023; c=relaxed/simple; bh=I4o6YNZQCCaDb7FwnvdTnwLu74HAplwTsh6AV5Ejy14=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WBjeOsSOsTIBvWe10XK+d3kgnMElVp/+7GVgyxJ4qPLprPWcB8SWXEsgT4c2O1Bzu53t8I5rUdh3Gb3xROOA6FNFqv+CJmMwI+k/sDpyFZrcCy+jtEKSvOkpWVl7EMzAccKKm6tCVZFav5/Puh4MNhNktMUIYz+EmIsHT8zd6UU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=SDsKW/Kp; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=fFiMD0eC; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="SDsKW/Kp"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="fFiMD0eC" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63FC4i1g2772631 for ; Wed, 15 Apr 2026 13:33:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 7F5UOICTtsxmRIry0+s2iVrQ8PV0muAPY97dOkWpf1M=; b=SDsKW/KpPp2Hiu6c gcdlLl9u8QMmW5CFpeGhhyz5jpTJy2XWToMecq5zeaaQjU0/f0eEMR0XvpxisL77 zuOADmDSZKf59Dg9e6SL9qSr1z0y6UzEaO8IETn0jukdpIg/5Ek4RQs4ByH5JE26 WgNZ/hlGS+qvPt04MhTgYT2Zi1J9FOSUqh4nvTtA4+W7rBt/1zSpGfyu6TcdvSns agkbxLJK+R+1IKQJP+PgWouGNswUmnydnKaLEL3Uu8MjGJ6Nd2cobciFY2sczZZI wxJUg8FpSdn+xP8yQQ2vWiS0mw8uXjunjxUW/OpMVbZk5t1Lgo8XB9/bG+52kU4B jrwBTA== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dj50v1jyv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 15 Apr 2026 13:33:41 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-82f07078eaaso3689555b3a.0 for ; Wed, 15 Apr 2026 06:33:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776260021; x=1776864821; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=7F5UOICTtsxmRIry0+s2iVrQ8PV0muAPY97dOkWpf1M=; b=fFiMD0eCPMi7PGifkpFjCPOIzf64YzZmmrEgWHb2Rd0cgrngJXr/dbzeykaLliUen0 jh6YDj+jChX8rXi10sxeB/UaAfOUd16x7ysO0/0seNWuG66KPWpqwZw/aJKUIjS6CJ6W IpXVlVNykg3Geh20yXLGGhIKlywStItJZ6EOoHm7fUGWDDi3gQrqzGoJn16h07rQjSLv hqc7QX535isjwBGVwkS5g1RYJZ5BbAQEiIUXr6oCPdULbxTTSjRFs6PjGZflkbebRf4X cGL6d2hfRy/o4DY/ubYNGDKx8BTJLu5VT6eqSPvQM9vlc09IP4JRlagkBwmfhlP4vxrB wjHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776260021; x=1776864821; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=7F5UOICTtsxmRIry0+s2iVrQ8PV0muAPY97dOkWpf1M=; b=j//M20kYyRzawJAxHavDUY3TazSNqknpsK21XDAWOBBF1z/DvieAP84nDbtfd/0TZd 6c6BqS8k9MaeUb4rjffPO2BE5NkKl49MrgcnxADaH7AvhxTeC/EDeerpzKv/AU7OKzg2 2JBpNkO28CyPo6gaZbz18EbdrrGhB6bT3WCY1wRaeDnGGUrcm1PlnxHdFbl3BnJ/DAE3 Nex2E1HRbFAxqnjslZg7WbI8tMDdR6yoaEPR7S40UHVvfAXBKH5WB1Cz9yAvyLH75vdQ BjYBXvdc3NEndOwVe/VjczKrr0TA3g61htzkrpK81LebjM+EUrbw4NirlC5eTbZZmPpz PqbA== X-Forwarded-Encrypted: i=1; AFNElJ8ffnfumBhr+RdZBCOBjeNi2kAn+K288ILdvjz0lAqZVvSWzToea9iQbfSwjnb5Oax73vj0NX+WnxZDZH0=@vger.kernel.org X-Gm-Message-State: AOJu0Yzh7/hC3mcMU/M/dwRHPbuMFpDxxpFLJmvoj2MoJTmytGIU1Ceo rLez/Qn6PswjG5pkIwf46rjgBF6OZAj9/vMKvB5+1x/3faMJTLjlZt6vzy3B2chWPM0aeQJL+MK szq7dsXMu7mXL2J09wisBbB74WiHAWL3OkIx/y6Zdzpz8nBCS7N/3QXTTELscBF656BA= X-Gm-Gg: AeBDiesituQmQ0jxYdP2cJJHG+VKJviC+IRleOZiQAK73ttN4V7BlEFWieiu9FTJDfL C9OcTnbCqUt4R0RBM1RZUijTTzLVw2QBF4SvKfn/QAV0pTbUDqlKkqM4C/D8jSNpTAM8WZ67tqd bfvOcKEXLc+IAaWa/xmhyqzi/MjIKSGv7RkdvoyN/VIjfmKF6hdNOXVpaoCmBG2wBoEHxymvc2J d+V8vfgsU7GOE2dt0pbiRipyEEiAm0miztNWcVmN4NTFLdFq3jEeBuZPBFkDTkGtNRITTDl6mvp 3oN6ptSQ71ffLvqwYy/kKpc06jpDjUKPWxH4hiJ109eBNkFMrkXMRUmramkBjgUOWumPFZBKy7I zqBAT5kvLfWZD2kEumHivWEe1MrGNEdTeYY93Ds2HWLqWxpWYfSO7xxmHwqgHwjonUa788m/hIT K1u6XbTLdXbriJ1nuq7exx1Yy7XwvbLKtXQSOoX+fojH8r+0E0hQz0lvWh X-Received: by 2002:a05:6a00:12ca:b0:82f:5a4:aa46 with SMTP id d2e1a72fcca58-82f0c2b510cmr20023788b3a.44.1776260020557; Wed, 15 Apr 2026 06:33:40 -0700 (PDT) X-Received: by 2002:a05:6a00:12ca:b0:82f:5a4:aa46 with SMTP id d2e1a72fcca58-82f0c2b510cmr20023750b3a.44.1776260020056; Wed, 15 Apr 2026 06:33:40 -0700 (PDT) Received: from hu-kathirav-blr.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f6b95f222sm1602774b3a.29.2026.04.15.06.33.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 06:33:39 -0700 (PDT) From: Kathiravan Thirumoorthy Date: Wed, 15 Apr 2026 19:03:18 +0530 Subject: [PATCH 3/5] dt-bindings: qcom: add IPQ9650 boards Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260415-ipq9650_boot_to_shell-v1-3-b37eb4c3a1d1@oss.qualcomm.com> References: <20260415-ipq9650_boot_to_shell-v1-0-b37eb4c3a1d1@oss.qualcomm.com> In-Reply-To: <20260415-ipq9650_boot_to_shell-v1-0-b37eb4c3a1d1@oss.qualcomm.com> To: Bjorn Andersson , Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Kathiravan Thirumoorthy X-Mailer: b4 0.15.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776260000; l=821; i=kathiravan.thirumoorthy@oss.qualcomm.com; s=20230906; h=from:subject:message-id; bh=I4o6YNZQCCaDb7FwnvdTnwLu74HAplwTsh6AV5Ejy14=; b=MbkKPCyBgmhldJHygpwYuks7foIDBOHg1RVVxuqEr8gDG7kUTI/LJsPukFs0Mu8/nD3ap2blg O0rJ6nvQJZ/D1R5etryASFhnBuwgb2K+ZJoTjKLQeGDyME7vAoKE7Yc X-Developer-Key: i=kathiravan.thirumoorthy@oss.qualcomm.com; a=ed25519; pk=xWsR7pL6ch+vdZ9MoFGEaP61JUaRf0XaZYWztbQsIiM= X-Proofpoint-GUID: iyb2BRqT5bLFhGgKwTH1WI58USjLr960 X-Authority-Analysis: v=2.4 cv=eLMjSnp1 c=1 sm=1 tr=0 ts=69df93b5 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=w0Gmm53Jqs2pEdcyGHcA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDE1MDEyNiBTYWx0ZWRfX3Fv/B7Ei/IGW xlYeESRBIyAT8BP0+dI9hWQVfC2dmp5HvLe5u6fxtDrPx4wtUzU9lEklbgGcE9rO4y7NQq/CkcY 2/1wJCBnn/LiEr/SpzXMlTRJKEbBnbDY0+AZ1lSY9txRnsvezA72ugL30ANAltmKhhBYwUXvfs1 RzTC819kq/JnQItQDjkqLxNB7hfxZmGT5+WQ7hsDbDyXhEecf0oXIofAcw2Di5ms1Redyk0VgFA W9simo4PzRnIgBC2lbanzwMdQ3+IADRizaJRz3haeNzxtteATYv2k/STPdbA66Ctay26huig2+O OUe/yPT6p9Go/BxdKn6/Gd/Hsi0f1d1Y6gJLV7l56Dt7fCWUmUlNHkeQbSVkJ47+adZ94VbweqD 6nlGDI8tz1zuR0YdyEq/1ws0HrMXM5LoFT02ZtWxTa4olfiYero9hmvH8DGGyV2SWUlHtICzGt4 m2BTPTIYjS23Rqh843g== X-Proofpoint-ORIG-GUID: iyb2BRqT5bLFhGgKwTH1WI58USjLr960 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-15_01,2026-04-13_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604150126 Document the new IPQ9650 SoC/board device tree bindings. Signed-off-by: Kathiravan Thirumoorthy Reviewed-by: Krzysztof Kozlowski --- Documentation/devicetree/bindings/arm/qcom.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentatio= n/devicetree/bindings/arm/qcom.yaml index b4943123d2e4..5d0855765fdb 100644 --- a/Documentation/devicetree/bindings/arm/qcom.yaml +++ b/Documentation/devicetree/bindings/arm/qcom.yaml @@ -365,6 +365,11 @@ properties: - qcom,ipq9574-ap-al02-c9 - const: qcom,ipq9574 =20 + - items: + - enum: + - qcom,ipq9650-rdp488 + - const: qcom,ipq9650 + - items: - enum: - qcom,kaanapali-mtp --=20 2.34.1 From nobody Tue Jun 16 02:38:26 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D86763A63FE for ; Wed, 15 Apr 2026 13:33:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776260028; cv=none; b=Lrl5RjZJplYZ4QbFOQLrgf2myLsMRo2sGyQjpvriVuFXbWvWz6UBJCXYBB4/9H9dt1RTBzbC1dyYUjLLTbGasms7tiHANym16aP+Up/jtF//G5erMvUD3b+QcoS97K8MiwaFUPfrnvavJAzzyvZuwVvi//6k2PJuU0O1aWQ3AIw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776260028; c=relaxed/simple; bh=MDqwhecTW4EJwoRIzi2Jxw4U12W0N6LMGHAHov4gvCQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mhLXdrWgbJgbMzJts/K+ZfroB87FxW08B6P/eNQ4cqf5ikUtQaI29mWzxGbVXTGKZnKIL8Fg/urHo7OKedvaNSd9r0rgkX271cIMFwjrPcuXf37PSbQu1vU/2pgrsTrvSUWi3aR9dbGMQiJjVMnaD31iygXYMPuWQUgL15jPV7s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ah30PV9U; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=e+V1zT9d; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ah30PV9U"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="e+V1zT9d" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63FCjUM02772603 for ; Wed, 15 Apr 2026 13:33:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= CD0hcrZPmTX3WuZwU95ZTPb83xTzxMybISm7lO6K16o=; b=ah30PV9U4tqA4nH5 Ezuddp5IKc+PFTEOlgvZk2VAB7lxVhMgVrRBXZz1Mhgv3RBb0pbHXg3mUg3chk45 e6YIqgm/r32DGIFBnsyWry7/yQEg7iidgO9eiBoX20Tw5q1DdeMq6JICwLVrbjpb T6xz2JybLUpxxbOhmDP1Vr7Gh8KpPymbFdE+AwxcgT1kjOGeCHcmOZZfJjLhAUo1 ibe1yfRM4C8fTTgcxdMdXsHH2n7LElIdBFo5jr49lqT9ypEQFyiKwspgLyFWf9Xt d0TaM2HaHLmd663erW/ng4TmebObkoD+ie1L6QSDcw8MWtgXukXTnODt0j9k+WY2 cReY0g== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dj50v1k08-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 15 Apr 2026 13:33:46 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-82f6e6a3a76so351890b3a.0 for ; Wed, 15 Apr 2026 06:33:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776260026; x=1776864826; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=CD0hcrZPmTX3WuZwU95ZTPb83xTzxMybISm7lO6K16o=; b=e+V1zT9dYUYn0sEAtqA45MjXHGVwibCkm5Psf9xByKcxvn4VbeP//lzS6UQdbx9RmB 5cywjhVuRAl1huo1hw9iJlviJ2I6Bh6PWYh/xYv+GTEBmleAurfNMum8KUWHUsXqiYHd YlUeBDfF1p7FuOPB8D8+k+QgdDhE80QipAyyO7CNMX5x/nJRZNGuEeXUx8oTgx45EIWa FKDd7HtrnOrvEq6TGXG6skE2sH3g8NLTrEf01lbsYdUY1k/1Kh6QC7t6Ifj/smak+D/4 5UbXPXZw5zast1dpEpZmNnDptbnNkM0Oo+Qi1U1U/DMYKBLYXxTQcRPR1LeuoWoab/c8 mjuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776260026; x=1776864826; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=CD0hcrZPmTX3WuZwU95ZTPb83xTzxMybISm7lO6K16o=; b=OQeRB/9gF6h9PP6Cd/6vCv3fyYyxqd8IZbOFvXy+ObienaKH97k+tONY3Aq1ssi65G kPElNTdndcwJ/7bkdPUO132+UBvg1S9H+0JbY41Z5iVRrzWHaiTWtMYX/hK55WfwQ8OV tYhfwEVY7pA4jKAfgSGu23gQdwK1OTImI9S1nOqR63psZzITikb8F/o2u4Sd1S/K2aWq wyjitRiK26CnRG+IH/xliyAXhUp5t8mJW83cCd2Lqw/LVpQSX+SO4SE3tas9DVhDges/ Aiw0wWwa43YFd8YsmrZEcpBPo1WXGZZ3nBNhHmvaLSTpY0o1G7zPszY8YNTUOY49FIHR XQQg== X-Forwarded-Encrypted: i=1; AFNElJ9iVMkfB7nrjq60/nHpbq78F/Q4hMBPJHs8IKXUB0EcQQDllOd0SSkeGd5cxMTJp9y0XRW9iDtdahkZL04=@vger.kernel.org X-Gm-Message-State: AOJu0YyxqoAg0+O9jPRCBL19E58Ddd0VEy+fr52MGuBX3zgbA+ASA/0u Cw3jW3e89pL5fortQi6CFGZ3Bg3aZKGNgbXdN53GVzK4v+b8wEbpux1ZpkhCKFhl8lsLD4+Jnzv bnuF0dtEzoZccktG2aYk6VJtxnsfnQs4yg0N5hfwT9jq262KgmdHT/hXqH3Z8K5qz32Q= X-Gm-Gg: AeBDiet0WMM+uJecT5ZjOCaBNfNtxQovVrm73S0NhdUO7SpnQK34iY8tLgS+vgFHisa D+58mfWgSEmNpp/u0LBru5tfeShfSOjJkfURNDwwX59i7T5c4CEiekGRyYdcpvb69GXsKF3mcKj m6O+xSFa0D2azmdXh7JP+FW/nJ6caQbbrfr2AywWSLIg0ldFHnYtOdz2X4fYJdkP9knQsfvGwMp 1sddPXFRYUS8Z72Dr9tIiewyiv9fl2TdFPhtkKD8bcYc5CUQB93lM+AfgwLNyKB2EGf6vh3ekAN TUvdAG3lHzA2sDLrFMhgZjH/d5CJsniTU0fz2Ou1D5b5QDCHpPPUiB3D0u3eb7YWd8FnEXuD9AK KWySoQZHUUSbCFqqqE+tCmV1y+VwLyecSjBfBAX0G51p42jdk4YSYA6wbHpy0i82cJWeYnVwju2 7hFiSnKEvM7hrJLpjRQinuO6mO5Fk+ENgcV+Y83SOrqRbBaNN1NgoH7tU1 X-Received: by 2002:a05:6a00:951b:b0:82f:5a8b:7f90 with SMTP id d2e1a72fcca58-82f5a8b8304mr5825879b3a.14.1776260025319; Wed, 15 Apr 2026 06:33:45 -0700 (PDT) X-Received: by 2002:a05:6a00:951b:b0:82f:5a8b:7f90 with SMTP id d2e1a72fcca58-82f5a8b8304mr5825827b3a.14.1776260024662; Wed, 15 Apr 2026 06:33:44 -0700 (PDT) Received: from hu-kathirav-blr.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f6b95f222sm1602774b3a.29.2026.04.15.06.33.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 06:33:44 -0700 (PDT) From: Kathiravan Thirumoorthy Date: Wed, 15 Apr 2026 19:03:19 +0530 Subject: [PATCH 4/5] arm64: dts: qcom: add IPQ9650 SoC and rdp488 board support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260415-ipq9650_boot_to_shell-v1-4-b37eb4c3a1d1@oss.qualcomm.com> References: <20260415-ipq9650_boot_to_shell-v1-0-b37eb4c3a1d1@oss.qualcomm.com> In-Reply-To: <20260415-ipq9650_boot_to_shell-v1-0-b37eb4c3a1d1@oss.qualcomm.com> To: Bjorn Andersson , Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Kathiravan Thirumoorthy X-Mailer: b4 0.15.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776260000; l=10885; i=kathiravan.thirumoorthy@oss.qualcomm.com; s=20230906; h=from:subject:message-id; bh=MDqwhecTW4EJwoRIzi2Jxw4U12W0N6LMGHAHov4gvCQ=; b=DN7mKuc4eTiuvVay9JTjko0Ogye8Zjv0widV3dOttDLa9ipHfX+OlW3omwWlJDzty1J1+sZnw Ya8L7JaYkC3DOdy+xWAGSG6zXADdGqYF3ks6Cb3IGJLU0A9Z7Yce27X X-Developer-Key: i=kathiravan.thirumoorthy@oss.qualcomm.com; a=ed25519; pk=xWsR7pL6ch+vdZ9MoFGEaP61JUaRf0XaZYWztbQsIiM= X-Proofpoint-GUID: Cboge7vEJTHM83d9ErePRNAdzzsUTnBd X-Authority-Analysis: v=2.4 cv=eLMjSnp1 c=1 sm=1 tr=0 ts=69df93ba cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=fBkTXTPqfNaV2XDYC8MA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDE1MDEyNiBTYWx0ZWRfX/PAUOB338LQc /HIMVDu15DnQivCqobt8KaT/yAGUNn4tzOXgVk8MiA2Fc59Ej4h7TsS50SFSxDVOkcHSN3KXAlF sHXsCLbM+xsF3k5zteMxZD30D2Somjm6ZmokJWK2oDyWcR9vZtpmH6aEvTHFHU58v+ZBR419dAn tJyxD9Us70GymnO1n2uj8Nc01+gaz7+rifqvqO9kdiT6pbrfP4RdCc5y3qipbHdEMWkDNl2OVkH LlJrtVk4xpKBPZis5d+gOTl6bM2pZNnYMM3UL4yfKBFmO8ECVgcPyjMkLlyGAGdq6wdjoolvRtr NFe+h6dKWTu5Nmxi7bNx1pdI5Uax0gM6rGoaVGABaQ9kKYHfidTZOM05FgEiTYhmXy393rBHcpu 9qDpOWNQ2YhlVpcCt6ZtKe518qDBNLfCRLmVK7ry5Zdp0ZHjazYNzj+0A02+tT0law3gDYQHuXa 19v8AnctKolJUpFWScA== X-Proofpoint-ORIG-GUID: Cboge7vEJTHM83d9ErePRNAdzzsUTnBd X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-15_01,2026-04-13_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604150126 Add initial device tree support for the Qualcomm IPQ9650 SoC and rdp488 board. Signed-off-by: Kathiravan Thirumoorthy --- arch/arm64/boot/dts/qcom/Makefile | 1 + arch/arm64/boot/dts/qcom/ipq9650-rdp488.dts | 79 ++++++ arch/arm64/boot/dts/qcom/ipq9650.dtsi | 366 ++++++++++++++++++++++++= ++++ 3 files changed, 446 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/M= akefile index 4ba8e7306419..dba16311ca2b 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -39,6 +39,7 @@ dtb-$(CONFIG_ARCH_QCOM) +=3D ipq9574-rdp433.dtb ipq9574-r= dp433-emmc.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D ipq9574-rdp449.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D ipq9574-rdp453.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D ipq9574-rdp454.dtb +dtb-$(CONFIG_ARCH_QCOM) +=3D ipq9650-rdp488.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D kaanapali-mtp.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D kaanapali-qrd.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D lemans-evk.dtb diff --git a/arch/arm64/boot/dts/qcom/ipq9650-rdp488.dts b/arch/arm64/boot/= dts/qcom/ipq9650-rdp488.dts new file mode 100644 index 000000000000..6871f3dc4eaf --- /dev/null +++ b/arch/arm64/boot/dts/qcom/ipq9650-rdp488.dts @@ -0,0 +1,79 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +/dts-v1/; + +#include "ipq9650.dtsi" + +/ { + model =3D "Qualcomm Technologies, Inc. IPQ9650 RDP488"; + compatible =3D "qcom,ipq9650-rdp488", "qcom,ipq9650"; + + aliases { + serial0 =3D &uart1; + }; + + chosen { + stdout-path =3D "serial0"; + }; +}; + +&sdhc { + max-frequency =3D <192000000>; + bus-width =3D <4>; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + pinctrl-0 =3D <&sdhc_default_state>; + pinctrl-names =3D "default"; + + status =3D "okay"; +}; + +&sleep_clk { + clock-frequency =3D <32000>; +}; + +&tlmm { + qup_uart1_default_state: qup-uart1-default-state { + pins =3D "gpio43", "gpio44"; + function =3D "qup_se6"; + drive-strength =3D <8>; + bias-pull-down; + }; + + sdhc_default_state: sdhc-default-state { + clk-pins { + pins =3D "gpio5"; + function =3D "sdc_clk"; + drive-strength =3D <8>; + bias-disable; + }; + + cmd-pins { + pins =3D "gpio4"; + function =3D "sdc_cmd"; + drive-strength =3D <8>; + bias-pull-up; + }; + + data-pins { + pins =3D "gpio0", "gpio1", "gpio2", "gpio3"; + function =3D "sdc_data"; + drive-strength =3D <8>; + bias-pull-up; + }; + }; +}; + +&uart1 { + pinctrl-0 =3D <&qup_uart1_default_state>; + pinctrl-names =3D "default"; + + status =3D "okay"; +}; + +&xo_board { + clock-frequency =3D <24000000>; +}; diff --git a/arch/arm64/boot/dts/qcom/ipq9650.dtsi b/arch/arm64/boot/dts/qc= om/ipq9650.dtsi new file mode 100644 index 000000000000..f3dfd595ccaf --- /dev/null +++ b/arch/arm64/boot/dts/qcom/ipq9650.dtsi @@ -0,0 +1,366 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include +#include +#include + +/ { + #address-cells =3D <2>; + #size-cells =3D <2>; + interrupt-parent =3D <&intc>; + + clocks { + sleep_clk: sleep-clk { + compatible =3D "fixed-clock"; + #clock-cells =3D <0>; + }; + + xo_board: xo-board-clk { + compatible =3D "fixed-clock"; + #clock-cells =3D <0>; + }; + }; + + cpus { + #address-cells =3D <1>; + #size-cells =3D <0>; + + CPU0: cpu@0 { + device_type =3D "cpu"; + compatible =3D "arm,cortex-a55"; + reg =3D <0x0>; + enable-method =3D "psci"; + next-level-cache =3D <&l2_0>; + + l2_0: l2-cache { + compatible =3D "cache"; + cache-level =3D <2>; + cache-unified; + next-level-cache =3D <&l3_0>; + + l3_0: l3-cache { + compatible =3D "cache"; + cache-level =3D <3>; + cache-unified; + }; + }; + }; + + CPU1: cpu@100 { + device_type =3D "cpu"; + compatible =3D "arm,cortex-a55"; + reg =3D <0x100>; + enable-method =3D "psci"; + next-level-cache =3D <&l2_100>; + + l2_100: l2-cache { + compatible =3D "cache"; + cache-level =3D <2>; + cache-unified; + next-level-cache =3D <&l3_0>; + }; + }; + + CPU2: cpu@200 { + device_type =3D "cpu"; + compatible =3D "arm,cortex-a55"; + reg =3D <0x200>; + enable-method =3D "psci"; + + l2_200: l2-cache { + compatible =3D "cache"; + cache-level =3D <2>; + cache-unified; + next-level-cache =3D <&l3_0>; + }; + }; + + CPU3: cpu@300 { + device_type =3D "cpu"; + compatible =3D "arm,cortex-a55"; + reg =3D <0x300>; + enable-method =3D "psci"; + + l2_300: l2-cache { + compatible =3D "cache"; + cache-level =3D <2>; + cache-unified; + next-level-cache =3D <&l3_0>; + }; + }; + + CPU4: cpu@400 { + device_type =3D "cpu"; + compatible =3D "arm,cortex-a78"; + reg =3D <0x400>; + enable-method =3D "psci"; + next-level-cache =3D <&l2_400>; + + l2_400: l2-cache { + compatible =3D "cache"; + cache-level =3D <2>; + cache-unified; + next-level-cache =3D <&l3_0>; + }; + }; + + cpu-map { + cluster0 { + core0 { + cpu =3D <&CPU0>; + }; + + core1 { + cpu =3D <&CPU1>; + }; + + core2 { + cpu =3D <&CPU2>; + }; + + core3 { + cpu =3D <&CPU3>; + }; + + core4 { + cpu =3D <&CPU4>; + }; + }; + }; + }; + + firmware { + optee { + compatible =3D "linaro,optee-tz"; + method =3D "smc"; + }; + + scm { + compatible =3D "qcom,scm-ipq9650", "qcom,scm"; + }; + }; + + memory@80000000 { + device_type =3D "memory"; + /* We expect the bootloader to fill in the size */ + reg =3D <0x0 0x80000000 0x0 0x0>; + }; + + pmu-a55 { + compatible =3D "arm,cortex-a55-pmu"; + interrupts =3D ; + }; + + pmu-a78 { + compatible =3D "arm,cortex-a78-pmu"; + interrupts =3D ; + }; + + psci { + compatible =3D "arm,psci-1.0"; + method =3D "smc"; + }; + + reserved-memory { + #address-cells =3D <2>; + #size-cells =3D <2>; + ranges; + + bootloader@8a100000 { + reg =3D <0x0 0x8a100000 0x0 0x400000>; + no-map; + }; + + smem@8a500000 { + compatible =3D "qcom,smem"; + reg =3D <0x0 0x8a500000 0x0 0x40000>; + no-map; + + hwlocks =3D <&tcsr_mutex 3>; + }; + + tfa@8a600000 { + reg =3D <0x0 0x8a600000 0x0 0x80000>; + no-map; + }; + + optee@8a680000 { + reg =3D <0x0 0x8a680000 0x0 0x280000>; + no-map; + }; + }; + + soc@0 { + compatible =3D "simple-bus"; + #address-cells =3D <2>; + #size-cells =3D <2>; + dma-ranges =3D <0 0 0 0 0x10 0>; + ranges =3D <0 0 0 0 0x10 0>; + + tlmm: pinctrl@1000000 { + compatible =3D "qcom,ipq9650-tlmm"; + reg =3D <0x0 0x01000000 0x0 0x300000>; + interrupts =3D ; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&tlmm 0 0 54>; + interrupt-controller; + #interrupt-cells =3D <2>; + }; + + gcc: clock-controller@1800000 { + compatible =3D "qcom,ipq9650-gcc"; + reg =3D <0x0 0x01800000 0x0 0x40000>; + clocks =3D <&xo_board>, + <&sleep_clk>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>; + #clock-cells =3D <1>; + #reset-cells =3D <1>; + }; + + tcsr_mutex: hwlock@1917000 { + compatible =3D "qcom,tcsr-mutex"; + reg =3D <0x0 0x01917000 0x0 0x57000>; + #hwlock-cells =3D <1>; + }; + + qupv3: geniqup@1ac0000 { + compatible =3D "qcom,geni-se-qup"; + reg =3D <0x0 0x01ac0000 0x0 0x2000>; + clocks =3D <&gcc GCC_QUPV3_AHB_MST_CLK>, + <&gcc GCC_QUPV3_AHB_SLV_CLK>; + clock-names =3D "m-ahb", "s-ahb"; + #address-cells =3D <2>; + #size-cells =3D <2>; + ranges; + + uart1: serial@1a98000 { + compatible =3D "qcom,geni-debug-uart"; + reg =3D <0x0 0x01a98000 0x0 0x4000>; + clocks =3D <&gcc GCC_QUPV3_WRAP_SE6_CLK>; + clock-names =3D "se"; + interrupts =3D ; + status =3D "disabled"; + }; + }; + + sdhc: mmc@7804000 { + compatible =3D "qcom,ipq9650-sdhci", "qcom,sdhci-msm-v5"; + reg =3D <0x0 0x07804000 0x0 0x1000>, + <0x0 0x07805000 0x0 0x1000>; + reg-names =3D "hc", + "cqhci"; + + interrupts =3D , + ; + interrupt-names =3D "hc_irq", + "pwr_irq"; + + clocks =3D <&gcc GCC_SDCC1_AHB_CLK>, + <&gcc GCC_SDCC1_APPS_CLK>, + <&xo_board>; + clock-names =3D "iface", + "core", + "xo"; + non-removable; + + status =3D "disabled"; + }; + + intc: interrupt-controller@f200000 { + compatible =3D "arm,gic-v3"; + reg =3D <0x0 0x0f200000 0x0 0x10000>, + <0x0 0x0f240000 0x0 0xa0000>; + #interrupt-cells =3D <0x3>; + interrupt-controller; + #redistributor-regions =3D <1>; + redistributor-stride =3D <0x0 0x20000>; + interrupts =3D ; + mbi-ranges =3D <800 160>; + msi-controller; + }; + + timer@f420000 { + compatible =3D "arm,armv7-timer-mem"; + reg =3D <0x0 0x0f420000 0x0 0x1000>; + ranges =3D <0 0 0 0x10000000>; + #address-cells =3D <1>; + #size-cells =3D <1>; + + frame@f421000 { + reg =3D <0x0f421000 0x1000>, + <0x0f422000 0x1000>; + interrupts =3D , + ; + frame-number =3D <0>; + }; + + frame@f423000 { + reg =3D <0x0f423000 0x1000>; + interrupts =3D ; + frame-number =3D <1>; + + status =3D "disabled"; + }; + + frame@f425000 { + reg =3D <0x0f425000 0x1000>, + <0x0f426000 0x1000>; + interrupts =3D ; + frame-number =3D <2>; + + status =3D "disabled"; + }; + + frame@f427000 { + reg =3D <0x0f427000 0x1000>; + interrupts =3D ; + frame-number =3D <3>; + + status =3D "disabled"; + }; + + frame@f429000 { + reg =3D <0x0f429000 0x1000>; + interrupts =3D ; + frame-number =3D <4>; + + status =3D "disabled"; + }; + + frame@f42b000 { + reg =3D <0x0f42b000 0x1000>; + interrupts =3D ; + frame-number =3D <5>; + + status =3D "disabled"; + }; + + frame@f42d000 { + reg =3D <0x0f42d000 0x1000>; + interrupts =3D ; + frame-number =3D <6>; + + status =3D "disabled"; + }; + }; + }; + + timer { + compatible =3D "arm,armv8-timer"; + interrupts =3D , + , + , + , + ; + }; +}; --=20 2.34.1 From nobody Tue Jun 16 02:38:26 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 33C1C3B47DE for ; Wed, 15 Apr 2026 13:33:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776260032; cv=none; b=uaeOSVRHM872sa9OAewBkHCYpuwjWihUwDRwSyPiDs2HzBmTIgQazTIjpegMdx5Y9MsVpSFpUctcVUU3+RzgGNSPE8QRhjTVpT43jMhdgnzJWk6xesXOch455NrM2ERHtSns5o1Klgw59LAjGiB7gDnoiJw54UsoRkBTL9BHuNE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776260032; c=relaxed/simple; bh=jaWvwEt9ndPuG30CRSFYIxotCRFGMgAGMMUQpYK2etE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jlRtImmGYCMeSe3oJrRdaME+F0TfsNa1qO3XREN0QzEhdDhrCs4kmjIo7vdOsE8ynMCOyqjDyYPTcxsE3ufuEdUT3/2Lcz2GAvpewGOe0KTEWpYYa11hYZcJI0IV36uQwn9AZATGuPk8tOMWxDbsMOgR6QZ2yJoSRwUVcKHIgN4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=l3rfyK6S; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=jUu0FoJC; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="l3rfyK6S"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jUu0FoJC" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63FDB9Jj2772639 for ; Wed, 15 Apr 2026 13:33:50 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ZWRX77Fpbh750tmNmoRIzfQyvGyeKlTdaGTrYvncf/M=; b=l3rfyK6S14CBobxt M2QRtuwAl6XsO/3/kNwNegw1fxr6E00a6dMX3iSrWzAPOe2rlj8iN8ULLpbBEpXr 2V2uyhFYYkTlLHdOzbEWwTTRtMTf/rpP7fPPM7IZ2eGKb28EKCriKSAa1U7WnTBy ugUyLF0z2A1IFpZuFPr9Mw9wDoCRIsQqilfPRO6kZ4UmpvVQpivkq4N4sWtjBk+b pZ8xAeQhi5NzuLpMeE7SaC1bGa9kg00S2Z2FKRmo7VW0MaCvSlCgMZX6ogLKBLus sNZiUNQoV4Gd0FoFtcofzl7O3ZAmVuq+KR1yUe/5k/fjYWgaeI83fnTvDf+FXyN7 0S8aig== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dj50v1k0m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 15 Apr 2026 13:33:50 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-82f308d385bso1895320b3a.0 for ; Wed, 15 Apr 2026 06:33:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776260030; x=1776864830; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ZWRX77Fpbh750tmNmoRIzfQyvGyeKlTdaGTrYvncf/M=; b=jUu0FoJCIfbsMeH9SXW5pAJvYirhVPj9vIeNfQ7rZA45ZGxePVKxhaNhmVYdXgWR+i Mg138S6FZAU3nvA8dodimGejfjdPO5bDaCBWz/uILu2nbkTvd/dCpyZZX8EfxNjFr2oA h+nnlZsqB0f6v+u0fCUd/Unqw7foZySkUkHmWM2S+Q7k01ZPAS2rm0R/7EL04Wrpboq0 vb2cfqby7yCcgS7kC/2UNz+6b/TPysDqwf3Nc2+1MADLQTJnQVVMPDveLVC7kX60hb0n RjC+i1Lx8FRSitfFmNLLZnl4y1Y9CuXJfqcGO5t+Al51wFv/EmVaHYK2nFJl9bplQkQZ yg4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776260030; x=1776864830; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ZWRX77Fpbh750tmNmoRIzfQyvGyeKlTdaGTrYvncf/M=; b=ifFCwSHeZW7KY8Ym07e/ULZqxFAYvcjJ96496+kKDGpfaDEDns2qlwtklPY4xNooGd 9OUAA7UIRmltwlTHH/vpx51QB6tR3FrtCS0ZHqMKWuwBSP0Mr16vw43DDPpwYmR5vXI1 kCIQsX/Ed+i3M9AW4vclIDHMj5FHVchovLva3lc82CLdC+8LugPfRW0622dynDbf8xO1 2zL6aqOCVneD6V6vksFhLlms9DzvgkEXjTfd3eQ9/3ous/pBfYPAhiBDXiWBWH70uUy4 42L9YMIYvTX+q0HjxYuHb9/F0rpUtfJySuk9AnOIJ1Ia9WMxJjrV8i8u3+E/kapVvESG zsWw== X-Forwarded-Encrypted: i=1; AFNElJ+Zp3CcIaXOihpINpURVavFRNWmNMkB7ABBlDtjXzM5epXgL45Lmhd35QIt12ISI4mqpJxOIeCD3mvp9gg=@vger.kernel.org X-Gm-Message-State: AOJu0YxJB+lXUbDHHxTqtvlzY0zGWQMP9lT4xyGgDLbu/HjU53fM2E8G 5kPfQuCVUc7fEy2hv8sm0eAvOpPzVmGmBaItSw+gOvbHgbGwg+TD0/SIRF8x9c6w/EhbKvZGxgl wji4yREvf9VAqnh/kg4ojW6LcVRenhTaRoDfWWSlgFamqrVILkBiN5dvDIEWb8bcEVb4= X-Gm-Gg: AeBDiesAvGcvhoFsw+9d/7jL13WB96Vm9oUchn1HaCIV82SfXpPOHmGuqOxCudojhgl WOi+FCgaBLdJwv13l9zlMQtR0QYnYxLwS2QOPyOYVvxdjG4eKZNOeRudENLAku8fBZ9dOC0EWrf z2d/7fK3J1HQxG6731SD7w04UeSOipO/PvnaqdHnIRONEnVl+z9YLZzhPVLs4iigiCVWNFCtCvk yPzwbUUcfTOB55G/G3GXbqaXkEcczbdV0V5XuysE5Q4GVbl3A8TUTMlMOeFhPcPHXzWyZs04a3n H/N9VJu2Ad/mIdRhEMnObIbBddTJnMyEPGuoaRNIl3UAaqL3riHqgwu16EevxxAeJWa1bvuFUfp hajRG9Fv1HEmFqW9GxT80KgsX/X7yc1JJttP2m1GieW8wZBNxIzCXCBFpUjHxeJ6I8gppDGrHR9 5iQ2zthAu6mp1w89iDnoABM0UT52XTSE0ZPHAD9KbREhq8qPlqXB3c0zgE X-Received: by 2002:a05:6a00:2a06:b0:829:7a62:6a with SMTP id d2e1a72fcca58-82f0d3530d0mr19462547b3a.22.1776260029733; Wed, 15 Apr 2026 06:33:49 -0700 (PDT) X-Received: by 2002:a05:6a00:2a06:b0:829:7a62:6a with SMTP id d2e1a72fcca58-82f0d3530d0mr19462516b3a.22.1776260029246; Wed, 15 Apr 2026 06:33:49 -0700 (PDT) Received: from hu-kathirav-blr.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f6b95f222sm1602774b3a.29.2026.04.15.06.33.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 06:33:48 -0700 (PDT) From: Kathiravan Thirumoorthy Date: Wed, 15 Apr 2026 19:03:20 +0530 Subject: [PATCH 5/5] arm64: defconfig: enable IPQ9650 RDP488 base configs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260415-ipq9650_boot_to_shell-v1-5-b37eb4c3a1d1@oss.qualcomm.com> References: <20260415-ipq9650_boot_to_shell-v1-0-b37eb4c3a1d1@oss.qualcomm.com> In-Reply-To: <20260415-ipq9650_boot_to_shell-v1-0-b37eb4c3a1d1@oss.qualcomm.com> To: Bjorn Andersson , Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Kathiravan Thirumoorthy X-Mailer: b4 0.15.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776260000; l=936; i=kathiravan.thirumoorthy@oss.qualcomm.com; s=20230906; h=from:subject:message-id; bh=jaWvwEt9ndPuG30CRSFYIxotCRFGMgAGMMUQpYK2etE=; b=zjkiZk2sTrb/9BHcsPSY3WLlAPWnBr3E3SX6hwzQfhTJJEYfrStQUUiR/9unnwH7KZ0kQECvw nrBaNGo7KNlC+aj9RDJvv3a2wfq1yN7YRLSkBrsNSQKCUUESSGF9yXw X-Developer-Key: i=kathiravan.thirumoorthy@oss.qualcomm.com; a=ed25519; pk=xWsR7pL6ch+vdZ9MoFGEaP61JUaRf0XaZYWztbQsIiM= X-Proofpoint-GUID: _AOtg5h6TMnzehNq3KhK7yLMMPtCM8IN X-Authority-Analysis: v=2.4 cv=eLMjSnp1 c=1 sm=1 tr=0 ts=69df93be cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=rO3wVDe-YCVyVCuK1RsA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDE1MDEyNiBTYWx0ZWRfX/ll2PArfShg1 IWiZbuBREDE2a4OJSkPZ6zx3lRkKXa3YH00bW7EvT1jkoxgCLBNHuzQq7KDYz+x4yqwtPU/+ey6 GnOI7pJ6Xdf5ojUtWagRDUTYra3xFBTnUzRHtbUPFmxbygJL5eVuicpNiIiqOSeZ/9n6rvayk9N MWYLRQja2hnqJJ3CzpMD5qBOdmZT7CC1c8STivwi922NwMfOTHVnBLLpo/qkf7mNnPDPJImdmiX EHKuMgvag3X5W0oac47VUSeN9LrZHuBN3skG6Pv874QIdGwavQ1917mk40uaTFxBhz7w4Rq6DzP m+e7kYgufC8MyS3ggvsoK5iq69wAGWe5MiAC2azyxPulvy8u14tDk0Z9zXzlKvI5+4E0+eStpXF YKPa40Kha/7NDlfjzhTORArIO+SBX8XRbQV3u6QXQJrTPN4vKluGwhoYc5zKX7TPpHLYT5JQXMJ +lsrey78Evvf7dsqilw== X-Proofpoint-ORIG-GUID: _AOtg5h6TMnzehNq3KhK7yLMMPtCM8IN X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-15_01,2026-04-13_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604150126 Enable GCC, Pinctrl for Qualcomm's IPQ9650 SoC which is required to boot ipq9650-rdp488 board to a console shell. Signed-off-by: Kathiravan Thirumoorthy Acked-by: Krzysztof Kozlowski --- arch/arm64/configs/defconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index dd1ac01ee29b..442aee9d197c 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -662,6 +662,7 @@ CONFIG_PINCTRL_IPQ5424=3Dy CONFIG_PINCTRL_IPQ8074=3Dy CONFIG_PINCTRL_IPQ6018=3Dy CONFIG_PINCTRL_IPQ9574=3Dy +CONFIG_PINCTRL_IPQ9650=3Dy CONFIG_PINCTRL_KAANAPALI=3Dy CONFIG_PINCTRL_MSM8916=3Dy CONFIG_PINCTRL_MSM8953=3Dy @@ -1509,6 +1510,7 @@ CONFIG_IPQ_GCC_5424=3Dy CONFIG_IPQ_GCC_6018=3Dy CONFIG_IPQ_GCC_8074=3Dy CONFIG_IPQ_GCC_9574=3Dy +CONFIG_IPQ_GCC_9650=3Dy CONFIG_IPQ_NSSCC_5424=3Dm CONFIG_IPQ_NSSCC_9574=3Dm CONFIG_MSM_GCC_8916=3Dy --=20 2.34.1