From nobody Fri Jul 24 20:53:23 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 2A38444BC8E for ; Fri, 24 Jul 2026 17:15:57 +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=1784913359; cv=none; b=hoz4N5z9LJL/NMUp8YyOiUmbOF2fymT09vcpnMzLpOc4Zf3K0fMPU44GUmvyMhwZ+V/FBymWDdf6bDkCv+EsHpUa5m6AT+o4txQ/8spDo0IQ5inM8I+FweLgGz+0I6J5FJqkdLJyRZHqk6ziMFUGYOyObEtVgY4tLEM/ttC3K1A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784913359; c=relaxed/simple; bh=d33pkSW9nPc9MCgHWFfBXQOlBDzUOdEtM4193pjNTtk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EnBOX20cARf2CZ2B95uIBtyCfm99dB0PQn48e+pXX0hL60AvItlWSi6ZHIAcfAoUDanPMGTc1ndrACsCAjKL3qCsGQufOKRVybA1yfMqU3/vEdqEMSOxReHClRpk+5e306sgr//uuLcgPMFf2Uivnq95vS8lrSyLKr4PiFoszxc= 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=UPZg/vNj; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Xl93lh7H; 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="UPZg/vNj"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Xl93lh7H" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66OGrFE83540619 for ; Fri, 24 Jul 2026 17:15:56 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= wW4jUYLc4ca2lHnf7nWV9JJ9uZ2/873zGPv3zVi76nc=; b=UPZg/vNjx8NKTWjZ thtWHSVOTO/I9NnlHlm3a/Gz+GPrnvLsFbh7DIZy46l/steuuISSw33Rv0Fqv2lb G6BA+GYtqxf1ocKGos9Cg6vVEMQ3mR+ZDVOHoVaWz6162tjYL8T92yQiFZ9xbieP NjSzx/8MoT+GpUZxqztvtbzMOY9unTiMwucmXplqBmKyWSTIYNPUVXQl0Oz1SFCD c/zaYNWcrXu7qHkWvCebKO0teIEEIOA7EAHO4WwNUzEe3Sps+XKSTRkOlmBt5t/R TY9tIqsjOYu5qrHaGZRMiO64txLI6EkAcVGo912zPOaqoZnHc99M5DGb0GliVpy5 iPyGgw== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fm8cggyf0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Jul 2026 17:15:56 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-381abcccbf4so542883a91.3 for ; Fri, 24 Jul 2026 10:15:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784913355; x=1785518155; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=wW4jUYLc4ca2lHnf7nWV9JJ9uZ2/873zGPv3zVi76nc=; b=Xl93lh7HiClbjb0WOfYFYT+BWksCzYflASBd5ELv1atICIztglO6j3Aee9CkZCwxdE Orm1xfrDKCetIS7ub0hP/xAwCY9tjONDte8X53vp5o0w9eGq1MUQ/mZyctMdNHnSS28/ PJHxhLkaQkoj+SfC6+a5c4CDd34fYeNofdKKMLAZFlmQq16q3Pub1SaWqa+op6SBBk+F yd1FBQRY8kyHced2nAsLNOvOvVGjQWGsrDdttgq2yCttOGILdnIvLFtlN1M9vTNi6UZs aGf4yVN4kKedM+oO9v80WNH/uhAGJCTQSST+i8VBnyLB4o5GKmIFNIUEP1/esxovEq7u eOfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784913355; x=1785518155; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=wW4jUYLc4ca2lHnf7nWV9JJ9uZ2/873zGPv3zVi76nc=; b=GeLcJVmUjc0GjXdR+Raz0uIZbeAF0cOsesmByymW6aJJLI0vYv+Uty86uKJbGOssVy ZkBKslilKZmoxa8FEXfApjMJdOV//wfZFXAzmSkhL/CT8ZTqUisCdK31Ywir1Ij1F7KY KKjQGJhXC46mZSq87fjV8mToOZCjZPnOexKyGU9cpMTth/efqFwcD9sTCy6umDuiOLLb Q00VRch8xkZU3BCvVoy5JUJqXWAdC0NPgjLDPaTx5q/ja8NpemaL2sZ1ykEmIoqCya8W Hs91j87Gx1e3bbmASI4RAA9n6RqchESW0ePjrFf9U+Txs0phQpxuPmetdKzKP8b4w3jY /Amg== X-Forwarded-Encrypted: i=1; AHgh+RoaeDPjxOuJOIsbsDJrDoUw56QjrY8nvUFGj5ARdFyT/kkZzuRrtiPQ6VZA2UaFR8bKs4y/Dm4pyz1aTQc=@vger.kernel.org X-Gm-Message-State: AOJu0YyxMKUOoNQ12vp6Ew7IRF1T8EPibaQzsr/b3jr6TuOT3gkpL151 Ynil/csBEqQmSjeJ2U6nWYUjxqKjvRgCMwEnTNNM4+XAHrAIQ+TWlA2xtsst+6LMyQ1sFNYELq+ I7zOHWi4/xfH/PSBlIqiCBTo7To6OcpP99T2XCKtIB5s8RlB1guLH5vHHk5E9s+k4r0g= X-Gm-Gg: AR+sD11f3kSMv1Dw5O/kqcnrGGcEjZwrKo5gj/jdAu7Os38+xtYBTlRggtMvQI8Hnrk OrmlZKd8pUtmwgZ/ru2CmUpr5SnGZjnmTZTKg/SlGkzgoM7kbXWJ0fhsvYuUn+Feshjb/hCy2ew g1PSjfOa+7mEYoYYHJ6XrefKlc1q+hX1nKMkbT3tbxrMpfaopfLF9np3f8qrEg49EW31m4rQWRw s44/eQZTIOMqyYCEWc3bUYrBiygBE+NxmRs5N2zsVBmYoGnH3hKBVmOLt1mBjIC2aIvCnl95mVo z7ldx9ishAErEM1GIhVMn6cgFlkOKOWC/y6vp0dglD481mSbrrIm43FdEM9kLSZPR7VA7MBZXEi nU2/boDF/KEt/tloI5HAh1BoI/2OAWX8= X-Received: by 2002:a17:90b:5650:b0:38e:cb1:8ec9 with SMTP id 98e67ed59e1d1-38ec661b520mr8030876a91.42.1784913354884; Fri, 24 Jul 2026 10:15:54 -0700 (PDT) X-Received: by 2002:a17:90b:5650:b0:38e:cb1:8ec9 with SMTP id 98e67ed59e1d1-38ec661b520mr8030826a91.42.1784913354373; Fri, 24 Jul 2026 10:15:54 -0700 (PDT) Received: from hu-imrashai-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13d2eb01aa0sm8400892c88.3.2026.07.24.10.15.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 10:15:53 -0700 (PDT) From: Imran Shaik Date: Fri, 24 Jul 2026 22:45:32 +0530 Subject: [PATCH v4 1/3] dt-bindings: clock: qcom: Add Qualcomm Shikra AudioCoreCC and AudioCoreCSR 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: <20260724-shikra-audiocorecc-v4-1-0a89bb13d817@oss.qualcomm.com> References: <20260724-shikra-audiocorecc-v4-0-0a89bb13d817@oss.qualcomm.com> In-Reply-To: <20260724-shikra-audiocorecc-v4-0-0a89bb13d817@oss.qualcomm.com> To: Bjorn Andersson , Michael Turquette , Stephen Boyd , Brian Masney , Philipp Zabel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Konrad Dybcio Cc: Ajit Pandey , Taniya Das , Jagadeesh Kona , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Imran Shaik , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDE1NSBTYWx0ZWRfX6DU2Kk2u8E5r gRbua4nz44B6ywxuol6Gj67yP818EUStMlbL4u+CMdE2g2d5TWEkW18dQ8z28VyMAOLYkSwCHw+ PFuvbfC//SIVSFb7msPfk3ejYwmjpHtUPax/DaWGXC2TkY9dozwlKZdbjYr5/f+eJlcse7fIpn5 qDO6CPefOhYj97Lc88f+ppEa8gmFbp5JZQj3Sensqh/UDSvYG1skJT+VoLu6+lUWTjctSu+qIaD LTpJ+lQj/7GEbdaMnDqW7OTEqJlYSUAyxfN/F9g/LHqsU3DpGnuhJs163y7mUEKoccneBR740wF uElFZK0GQOfBMrsBNOMh8ztoM1+gMryf69Yyt/TTtYqLU8+WzfSBpUWylmuY78ZTV7Prh1PD3C1 UHTOssovC8hVEHlqI7ZVxsfiGQwe3Sc7+jQn61hW05YUjaLoX5pj3TNtLR4Y7AXbrvfCUX/OTnn F8Q9Phz77kfXIHatBoQ== X-Proofpoint-GUID: yqQe-jOsF2ENLxs0LzFMPmyOxHN7LvmD X-Proofpoint-ORIG-GUID: yqQe-jOsF2ENLxs0LzFMPmyOxHN7LvmD X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDE1NSBTYWx0ZWRfX8BBSGcRTQPUx SkYBcxKFlIhLE1Slto6v7B1FO0LO7gOzeYjVQrA05u6UyiSO2/vYFI99A2vnhyf6LiP2W0iwNo/ qtQzh1tg/Yso0eiDaQPDppESsMiaLvo= X-Authority-Analysis: v=2.4 cv=P9sKQCAu c=1 sm=1 tr=0 ts=6a639dcc cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=gEfo2CItAAAA:8 a=EUspDBNiAAAA:8 a=Z3K_AQPDDkgJnXkyaHcA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 a=sptkURWiP4Gy88Gu7hUp:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_04,2026-07-24_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 priorityscore=1501 phishscore=0 bulkscore=0 lowpriorityscore=0 adultscore=0 impostorscore=0 malwarescore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240155 Add device tree bindings for the Audio Core Clock Controller (AudioCoreCC) that provides clocks and Audio Core CSR that provides resets on Qualcomm Shikra SoC. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Imran Shaik --- .../bindings/clock/qcom,shikra-audiocorecc.yaml | 55 ++++++++++++++++++= ++++ .../bindings/reset/qcom,shikra-audiocore-csr.yaml | 42 +++++++++++++++++ .../dt-bindings/clock/qcom,shikra-audiocorecc.h | 49 +++++++++++++++++++ 3 files changed, 146 insertions(+) diff --git a/Documentation/devicetree/bindings/clock/qcom,shikra-audiocorec= c.yaml b/Documentation/devicetree/bindings/clock/qcom,shikra-audiocorecc.ya= ml new file mode 100644 index 0000000000000000000000000000000000000000..d59f7e47a0d7d9ee9def49be995= 4038e43785e91 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/qcom,shikra-audiocorecc.yaml @@ -0,0 +1,55 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/qcom,shikra-audiocorecc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Audio Core Clock Controller for Qualcomm Shikra SoC + +maintainers: + - Imran Shaik + +description: | + Audio core clock control module provides the clocks on Qualcomm Shikra + SoC platform. + + See also: + - include/dt-bindings/clock/qcom,shikra-audiocorecc.h + +properties: + compatible: + const: qcom,shikra-audiocorecc + + clocks: + items: + - description: Board XO source + - description: Board sleep clock + - description: Audio ref clock source + + reg: + maxItems: 1 + + '#clock-cells': + const: 1 + +required: + - compatible + - reg + - clocks + - '#clock-cells' + +additionalProperties: false + +examples: + - | + #include + #include + clock-controller@a0a0000 { + compatible =3D "qcom,shikra-audiocorecc"; + reg =3D <0x0a0a0000 0x10000>; + clocks =3D <&rpmcc RPM_SMD_XO_CLK_SRC>, + <&sleep_clk>, + <&aud_ref_clk_src>; + #clock-cells =3D <1>; + }; +... diff --git a/Documentation/devicetree/bindings/reset/qcom,shikra-audiocore-= csr.yaml b/Documentation/devicetree/bindings/reset/qcom,shikra-audiocore-cs= r.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bfad1d20e7cd1281c4c182d5f9f= 887d8c4c86125 --- /dev/null +++ b/Documentation/devicetree/bindings/reset/qcom,shikra-audiocore-csr.yaml @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/reset/qcom,shikra-audiocore-csr.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Audio Core CSR for Qualcomm Shikra SoC + +maintainers: + - Imran Shaik + +description: | + Audio Core CSR module provides the resets on Qualcomm Shikra SoC platfor= m. + + See also: + - include/dt-bindings/clock/qcom,shikra-audiocorecc.h + +properties: + compatible: + const: qcom,shikra-audiocore-csr + + reg: + maxItems: 1 + + '#reset-cells': + const: 1 + +required: + - compatible + - reg + - '#reset-cells' + +additionalProperties: false + +examples: + - | + reset-controller@a0b4000 { + compatible =3D "qcom,shikra-audiocore-csr"; + reg =3D <0x0a0b4000 0x1000>; + #reset-cells =3D <1>; + }; +... diff --git a/include/dt-bindings/clock/qcom,shikra-audiocorecc.h b/include/= dt-bindings/clock/qcom,shikra-audiocorecc.h new file mode 100644 index 0000000000000000000000000000000000000000..0e64a42523f1ec4213ce8cbbbe6= f8262d414f0eb --- /dev/null +++ b/include/dt-bindings/clock/qcom,shikra-audiocorecc.h @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#ifndef _DT_BINDINGS_CLK_QCOM_AUDIO_CORE_CC_SHIKRA_H +#define _DT_BINDINGS_CLK_QCOM_AUDIO_CORE_CC_SHIKRA_H + +/* AUDIO_CORE_CC clocks */ +#define AUDIO_CORE_CC_DIG_PLL_OUT_AUX 0 +#define AUDIO_CORE_CC_DIG_PLL_OUT_AUX2 1 +#define AUDIO_CORE_CC_DIG_PLL 2 +#define AUDIO_CORE_CC_AIF_IF0_CLK_SRC 3 +#define AUDIO_CORE_CC_AIF_IF0_EBIT_CLK 4 +#define AUDIO_CORE_CC_AIF_IF0_IBIT_CLK 5 +#define AUDIO_CORE_CC_AIF_IF1_CLK_SRC 6 +#define AUDIO_CORE_CC_AIF_IF1_EBIT_CLK 7 +#define AUDIO_CORE_CC_AIF_IF1_IBIT_CLK 8 +#define AUDIO_CORE_CC_AIF_IF2_CLK_SRC 9 +#define AUDIO_CORE_CC_AIF_IF2_EBIT_CLK 10 +#define AUDIO_CORE_CC_AIF_IF2_IBIT_CLK 11 +#define AUDIO_CORE_CC_AIF_IF3_CLK_SRC 12 +#define AUDIO_CORE_CC_AIF_IF3_EBIT_CLK 13 +#define AUDIO_CORE_CC_AIF_IF3_IBIT_CLK 14 +#define AUDIO_CORE_CC_AUD_DMA_CLK 15 +#define AUDIO_CORE_CC_AUD_DMA_CLK_SRC 16 +#define AUDIO_CORE_CC_AUD_DMA_MEM_CLK 17 +#define AUDIO_CORE_CC_BUS_CLK 18 +#define AUDIO_CORE_CC_BUS_CLK_SRC 19 +#define AUDIO_CORE_CC_CDIV_TX_MCLK_DIV_CLK_SRC 20 +#define AUDIO_CORE_CC_EXT_MCLKA_CLK_SRC 21 +#define AUDIO_CORE_CC_EXT_MCLKA_OUT_CLK 22 +#define AUDIO_CORE_CC_EXT_MCLKB_CLK_SRC 23 +#define AUDIO_CORE_CC_EXT_MCLKB_OUT_CLK 24 +#define AUDIO_CORE_CC_IM_SLEEP_CLK 25 +#define AUDIO_CORE_CC_LPAIF_PCMOE_CLK 26 +#define AUDIO_CORE_CC_LPAIF_PCMOE_CLK_SRC 27 +#define AUDIO_CORE_CC_RX_MCLK_2X_CLK 28 +#define AUDIO_CORE_CC_RX_MCLK_CLK 29 +#define AUDIO_CORE_CC_SAMPLING_CLK 30 +#define AUDIO_CORE_CC_TX_MCLK_2X_CLK 31 +#define AUDIO_CORE_CC_TX_MCLK_CLK 32 +#define AUDIO_CORE_CC_TX_MCLK_RCG_CLK_SRC 33 + +/* AUDIO_CORE_CSR resets */ +#define AUDIO_CORE_CSR_RX_SWR_CGCR 0 +#define AUDIO_CORE_CSR_TX_SWR_CGCR 1 + +#endif --=20 2.34.1 From nobody Fri Jul 24 20:53:23 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 BE926448BAE for ; Fri, 24 Jul 2026 17:16:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784913367; cv=none; b=UWd82NVsol5EXAOgOSZxH0Ttnm0TtX2LfPz9qtqKx8TGjRXDaQehaQ6+GK4TOtK2tabV3qweCvSKP9/VrkyI56SWPjToPRSijZNt94B7uEUMFb4IXQSbE6QTW4tLvfTfG0oAwQ/cQChWcMnGqZ0OceoAD0QR2TLKn0NDNC1Ikfo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784913367; c=relaxed/simple; bh=n1uIWOb5QkJsLJsuAviZuo0y0jreL6X/kpxfym+wRpw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GBbmNaMPNu3riEYoV03XRPr/En6tTX7MTyY9m9XIN4rrOnvu5p7j3pN/Kuq7l6pRnciR2F0YH6UJBigm5DqHZj2ldxB9FEwJOVuTr2lgGT7fGxBfPYI88zxm8aGG+GAirnp5q2aEAy+uWnpL8hkUacs/5g8DpEfMnddwmvhv/gs= 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=niVCcoAF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=iVe6klDT; arc=none smtp.client-ip=205.220.180.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="niVCcoAF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="iVe6klDT" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66OGqiO63517673 for ; Fri, 24 Jul 2026 17:16:03 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= liRQlhPQXtMlp81a1N01foPJwxMNHCyqu87yUXM9zTk=; b=niVCcoAFK2MT0lYl v13q3QijXgjved77p+SvJBNVXZWRsFn4kVb44PyD2aHnN2JKEVwrX5OhVmIgMnXw PpCLkkT8JfNf5Dy6n2ras8tzciaEw69KubyX30+hAVruoUGQOydrHO4T8DpoUqEe vGBfMJ70Li2Agzc6UvHrNMEO/W3QwlsDr85JraILTB7ovDBmSkVoj+8g7/hgYX1v DYuotGWvHDNMO50IiH4KEQBCd8/t30J94jCbGxQUOArkfdILVIlmjCurBEYymQrt eLqOQ20pJX5NyQSe+fWh/ofF2GVMwOZVDU/CKG0dY1JSL2yGR4kb9bLcviUXOQ7n 8HDq1A== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fm0pwasyu-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Jul 2026 17:16:03 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cb48f41343aso1344284a12.1 for ; Fri, 24 Jul 2026 10:16:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784913362; x=1785518162; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=liRQlhPQXtMlp81a1N01foPJwxMNHCyqu87yUXM9zTk=; b=iVe6klDT27jhZ+VkxdUzbpCjw6LWM/SrjH7Ar39sQOWx9TRYlw3s1jKvQN/Vcw9/rp rdynjKT8NOHjoGloWloPNXtJ4owR0ZriPTouPh/pci/j9XJfNI4r23cdq8UUqmmwmlHt h5hYH6Vja3aU6nNdzzxQXwxNrGpo2w3sPKUduCbhZVHSPT+v037mGptOYfz8PQUt9Ob2 TXiJXyxcK8PJ7jxu0vcHi9nAWIXFRqRPkKRXEFigIWMdyk1g586p/0foP4pugJ5OJsOG RagHL1NwZ9PiNpkjkbfaL7VcIpFeXxHCaIcDy38BwZiMMbfxJN7NB/0NSprf/JxG0jpk T+AA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784913362; x=1785518162; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=liRQlhPQXtMlp81a1N01foPJwxMNHCyqu87yUXM9zTk=; b=i9MzUoX+wdAxRo02jmlg4GBWub4UxOeAgWK5VMawahr8QSr7mTJcboWrE5gclneMcn ef5GlASUQz8buIydl5fH8QiCYK8k6KH1bk7oV/SVt1kJyX74RE4zZkD4WHpTkEL1JsSb EVsTfQngfq83vSPeuX1yOFkXNe+aRmuPzb2R3W8CPSGAdqGe+O6XfjV3iOGmy/dhPFBz 3+g0LP1q38xWr6xDUm7usw0knVcmg9z4hC1Te2fseR7v+9FWfHLlbcE9GqorrEVaUGHm zq3Zy7IaUpfqk8PtslDvU9sRjrByWCWYtKPeUxJDssUIDs/vc90geBWzMXUS9lKC1hdI GtwQ== X-Forwarded-Encrypted: i=1; AHgh+Rq4439ypDIAGQ6ZE4qOaj1mia+R3fISkSFYJcLDhgof6gXWgHOB3vq+FSsZtna2wBXyw1AQnxEur6XDyKs=@vger.kernel.org X-Gm-Message-State: AOJu0YytHvDFISrNVS1FU2FfJrhlL1aaye8WX83VFTLwYF2P+YHjCwTM kCPE3o91o0VIcrwfJRDfE+9CF7ONDyQy2UWdwMAe+3e6JZZmn0yw+IOO9YMYeR4W56wOp02tgbd LbiICYBNFq9DPAWKbV+ZIoNpVK2w4+kgLqnfyatXT6jj9I1HmiY0dRxulMl7Pa+qiYyM= X-Gm-Gg: AR+sD11c8EDvGIr4NaP459JvRwgVfGg7XAQXIskIVGRGuQNspRKI3Jw+4z6rNwjxVEs zRjEihXJY8vgdz3lFsqjDk04eHk3dj0In44WoE6Vor7hYWlsipjR0MirTIwdyKFZMZt1WDtFL5a R6Vs1kr1uEzd9r2rLtrQYreeK6jKqLlMW6RNKr0ct3ywNTsMiwT9AeZRb/KjO20cbHvCuVB1QK8 EGB68miVQHTKo+lrOn3I+M51dK+SAZhJIr2K/4Snyq+tjQZRAD70FqW08YDaZ4A/xdWSNYeFec/ 3wfpQ5cLR7T4/maNYirxKNi6DVDJjrpQkxkomDCWzBeKhyA/CuwKVa4GqMiZo+fdF+0613o73/A rKogmx4JIcbikEJwC8taNP062wDk+EA0= X-Received: by 2002:a17:90a:fc46:b0:369:7491:7b24 with SMTP id 98e67ed59e1d1-38f1ebb5520mr1272145a91.6.1784913361786; Fri, 24 Jul 2026 10:16:01 -0700 (PDT) X-Received: by 2002:a17:90a:fc46:b0:369:7491:7b24 with SMTP id 98e67ed59e1d1-38f1ebb5520mr1272069a91.6.1784913360574; Fri, 24 Jul 2026 10:16:00 -0700 (PDT) Received: from hu-imrashai-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13d2eb01aa0sm8400892c88.3.2026.07.24.10.15.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 10:16:00 -0700 (PDT) From: Imran Shaik Date: Fri, 24 Jul 2026 22:45:33 +0530 Subject: [PATCH v4 2/3] clk: qcom: Add Audio Core clock controller support on Qualcomm Shikra 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: <20260724-shikra-audiocorecc-v4-2-0a89bb13d817@oss.qualcomm.com> References: <20260724-shikra-audiocorecc-v4-0-0a89bb13d817@oss.qualcomm.com> In-Reply-To: <20260724-shikra-audiocorecc-v4-0-0a89bb13d817@oss.qualcomm.com> To: Bjorn Andersson , Michael Turquette , Stephen Boyd , Brian Masney , Philipp Zabel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Konrad Dybcio Cc: Ajit Pandey , Taniya Das , Jagadeesh Kona , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Imran Shaik , Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDE1NSBTYWx0ZWRfX4OAsQuAB5xed hCO1PhWCee1SF+Cwvd0wx1p4vVGVT/B6haDxKSN9K776R8DfvpD2lIcL9PFjV+yo2nWCyAYsu5/ EXBPP3Gps/BBz7CN0ympojNxaoPQ2wbKCWVg4kzaaUhl+47BSol1kmfxZPPmjamDxhFXFNmU89l D+WD58DXkCzhIrThZ5pZQvYlzGgYGgbDdNN+FpqzhmFSNc55cE8sWahDZb+uZjJ9nH4EK5yU6sy odZiaIhM//CRaRGJXBcIlONGtH7dqIGEGhgDE9I9ePpkUN5M1Laj5YX5a5hHVBUolUcSyCZt798 xU3S6vneORHhNqb8FkeZ0uhBIVRPPj45G+bH9oP0VwaXGM3RHupDEpEp/CJIqd5jI0iUPQawa9J 1zAk6zhKFsw6vvJHIaj3WoOkAgxb6sYpeMQoVw/LskBYLrzjyMYDepT3DXf18vEuG60nXLG/c7O TAEpAPtpnrNH7utA4aQ== X-Authority-Analysis: v=2.4 cv=RJeD2Yi+ c=1 sm=1 tr=0 ts=6a639dd3 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=F_syqbkkfc-CeLG8pkkA:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-ORIG-GUID: rchkmHHDXCRBULOuKsCj9sRG5rVwQV-C X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDE1NSBTYWx0ZWRfX6vi/7GreOwI/ j1E4OqpM07TbIxdeHgLiu64DXUQ/VWbHrFzWJ4gEgPjaEBleu1LU7+/VEotxDAukvGpfMMEiEq/ rAfbO8202szHizs9KFswerZIb3cSf9o= X-Proofpoint-GUID: rchkmHHDXCRBULOuKsCj9sRG5rVwQV-C X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_04,2026-07-24_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 spamscore=0 phishscore=0 bulkscore=0 impostorscore=0 clxscore=1015 adultscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240155 Add support for Audio Core Clock Controller (AUDIOCORECC) and Audio Core CSR resets on Qualcomm Shikra SoC. Reviewed-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov Signed-off-by: Imran Shaik --- drivers/clk/qcom/Kconfig | 10 + drivers/clk/qcom/Makefile | 1 + drivers/clk/qcom/audiocorecc-shikra.c | 810 ++++++++++++++++++++++++++++++= ++++ 3 files changed, 821 insertions(+) diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig index 63f271aff1771bea0885fb753dd28d02fd7d4ab6..29ae37ece3141438d6fb8162cc7= ad3a361c5323c 100644 --- a/drivers/clk/qcom/Kconfig +++ b/drivers/clk/qcom/Kconfig @@ -192,6 +192,16 @@ config CLK_NORD_GCC SPI, I2C, USB, SD/UFS, PCIe etc. The clock controller is a combination of GCC, SE_GCC, NE_GCC and NW_GCC. =20 +config CLK_SHIKRA_AUDIOCORECC + tristate "Shikra Audio Core Clock Controller" + depends on ARM64 || COMPILE_TEST + select CLK_SHIKRA_GCC + default m if ARCH_QCOM + help + Support for the Audio Core clock controller on Qualcomm Shikra devices. + Say Y if you want to use AudioCoreCC clocks required to support audio + devices and it's functionality. + config CLK_SHIKRA_GCC tristate "Shikra Global Clock Controller" depends on ARM64 || COMPILE_TEST diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile index db7689ee5dc63bc8b7d12b8222188bc1e1ff78ba..f26a79658bb88c957f990d76d29= 5a5a9a09bb7ee 100644 --- a/drivers/clk/qcom/Makefile +++ b/drivers/clk/qcom/Makefile @@ -42,6 +42,7 @@ obj-$(CONFIG_CLK_KAANAPALI_TCSRCC) +=3D tcsrcc-kaanapali.o obj-$(CONFIG_CLK_KAANAPALI_VIDEOCC) +=3D videocc-kaanapali.o obj-$(CONFIG_CLK_NORD_GCC) +=3D gcc-nord.o negcc-nord.o nwgcc-nord.o segcc= -nord.o obj-$(CONFIG_CLK_NORD_TCSRCC) +=3D tcsrcc-nord.o +obj-$(CONFIG_CLK_SHIKRA_AUDIOCORECC) +=3D audiocorecc-shikra.o obj-$(CONFIG_CLK_SHIKRA_GCC) +=3D gcc-shikra.o obj-$(CONFIG_CLK_X1E80100_CAMCC) +=3D camcc-x1e80100.o obj-$(CONFIG_CLK_X1E80100_DISPCC) +=3D dispcc-x1e80100.o diff --git a/drivers/clk/qcom/audiocorecc-shikra.c b/drivers/clk/qcom/audio= corecc-shikra.c new file mode 100644 index 0000000000000000000000000000000000000000..19f67b50d6234655ebb8cbc242a= 8d7efbb0a6039 --- /dev/null +++ b/drivers/clk/qcom/audiocorecc-shikra.c @@ -0,0 +1,810 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include +#include +#include +#include + +#include + +#include "clk-alpha-pll.h" +#include "clk-branch.h" +#include "clk-pll.h" +#include "clk-rcg.h" +#include "clk-regmap.h" +#include "clk-regmap-divider.h" +#include "clk-regmap-mux.h" +#include "common.h" +#include "reset.h" + +enum { + DT_BI_TCXO, + DT_SLEEP_CLK, + DT_AUD_REF_CLK_SRC, +}; + +enum { + P_AUD_REF_CLK_SRC, + P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, + P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX2, + P_BI_TCXO, + P_SLEEP_CLK, +}; + +static const struct pll_vco spark_vco[] =3D { + { 500000000, 1000000000, 2 }, +}; + +/* 614.4 MHz Configuration */ +static const struct alpha_pll_config audio_core_cc_dig_pll_config =3D { + .l =3D 0x20, + .alpha =3D 0x0, + .vco_val =3D BIT(21), + .post_div_val =3D 0x28100, + .post_div_mask =3D GENMASK(17, 8), + .vco_mask =3D GENMASK(21, 20), + .main_output_mask =3D BIT(0), + .aux_output_mask =3D BIT(1), + .aux2_output_mask =3D BIT(2), + .config_ctl_val =3D 0x4001055b, + .test_ctl_hi_val =3D 0x1, + .test_ctl_hi_mask =3D 0x1, +}; + +static struct clk_alpha_pll audio_core_cc_dig_pll =3D { + .offset =3D 0x0, + .config =3D &audio_core_cc_dig_pll_config, + .vco_table =3D spark_vco, + .num_vco =3D ARRAY_SIZE(spark_vco), + .regs =3D clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .clkr =3D { + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_dig_pll", + .parent_data =3D &(const struct clk_parent_data) { + .index =3D DT_BI_TCXO, + }, + .num_parents =3D 1, + .ops =3D &clk_alpha_pll_fixed_ops, + }, + }, +}; + +static struct clk_fixed_factor audio_core_cc_dig_pll_out_aux =3D { + .mult =3D 1, + .div =3D 5, + .hw.init =3D &(struct clk_init_data) { + .name =3D "audio_core_cc_dig_pll_out_aux", + .parent_data =3D &(const struct clk_parent_data) { + .hw =3D &audio_core_cc_dig_pll.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_fixed_factor_ops, + }, +}; + +static struct clk_fixed_factor audio_core_cc_dig_pll_out_aux2 =3D { + .mult =3D 1, + .div =3D 2, + .hw.init =3D &(struct clk_init_data) { + .name =3D "audio_core_cc_dig_pll_out_aux2", + .parent_data =3D &(const struct clk_parent_data) { + .hw =3D &audio_core_cc_dig_pll.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_fixed_factor_ops, + }, +}; + +static const struct parent_map audio_core_cc_parent_map_0[] =3D { + { P_BI_TCXO, 0 }, + { P_AUD_REF_CLK_SRC, 1 }, + { P_SLEEP_CLK, 2 }, + { P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 4 }, + { P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX2, 6 }, +}; + +static const struct clk_parent_data audio_core_cc_parent_data_0[] =3D { + { .index =3D DT_BI_TCXO }, + { .index =3D DT_AUD_REF_CLK_SRC }, + { .index =3D DT_SLEEP_CLK }, + { .hw =3D &audio_core_cc_dig_pll_out_aux.hw }, + { .hw =3D &audio_core_cc_dig_pll_out_aux2.hw }, +}; + +static const struct freq_tbl ftbl_audio_core_cc_aif_if0_clk_src[] =3D { + F(240000, P_BI_TCXO, 10, 1, 8), + F(256000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 15, 1, 32), + F(512000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 15, 1, 16), + F(768000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 10, 1, 16), + F(1024000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 15, 1, 8), + F(1536000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 10, 1, 8), + F(2048000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 15, 1, 4), + F(3072000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 10, 1, 4), + F(4096000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 15, 1, 2), + F(6144000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 10, 1, 2), + F(8192000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 15, 0, 0), + F(9600000, P_BI_TCXO, 2, 0, 0), + F(12288000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 10, 0, 0), + F(19200000, P_BI_TCXO, 1, 0, 0), + F(24576000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 5, 0, 0), + { } +}; + +static struct clk_rcg2 audio_core_cc_aif_if0_clk_src =3D { + .cmd_rcgr =3D 0x104c, + .mnd_width =3D 16, + .hid_width =3D 5, + .parent_map =3D audio_core_cc_parent_map_0, + .freq_tbl =3D ftbl_audio_core_cc_aif_if0_clk_src, + .hw_clk_ctrl =3D true, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aif_if0_clk_src", + .parent_data =3D audio_core_cc_parent_data_0, + .num_parents =3D ARRAY_SIZE(audio_core_cc_parent_data_0), + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_rcg2_shared_ops, + }, +}; + +static struct clk_rcg2 audio_core_cc_aif_if1_clk_src =3D { + .cmd_rcgr =3D 0x10b0, + .mnd_width =3D 16, + .hid_width =3D 5, + .parent_map =3D audio_core_cc_parent_map_0, + .freq_tbl =3D ftbl_audio_core_cc_aif_if0_clk_src, + .hw_clk_ctrl =3D true, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aif_if1_clk_src", + .parent_data =3D audio_core_cc_parent_data_0, + .num_parents =3D ARRAY_SIZE(audio_core_cc_parent_data_0), + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_rcg2_shared_ops, + }, +}; + +static struct clk_rcg2 audio_core_cc_aif_if2_clk_src =3D { + .cmd_rcgr =3D 0x1114, + .mnd_width =3D 16, + .hid_width =3D 5, + .parent_map =3D audio_core_cc_parent_map_0, + .freq_tbl =3D ftbl_audio_core_cc_aif_if0_clk_src, + .hw_clk_ctrl =3D true, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aif_if2_clk_src", + .parent_data =3D audio_core_cc_parent_data_0, + .num_parents =3D ARRAY_SIZE(audio_core_cc_parent_data_0), + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_rcg2_shared_ops, + }, +}; + +static const struct freq_tbl ftbl_audio_core_cc_aif_if3_clk_src[] =3D { + F(240000, P_BI_TCXO, 10, 1, 8), + F(256000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 15, 1, 32), + F(512000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 15, 1, 16), + F(768000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 10, 1, 16), + F(1024000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 15, 1, 8), + F(1536000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 10, 1, 8), + F(2048000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 15, 1, 4), + F(3072000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 10, 1, 4), + F(4096000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 15, 1, 2), + F(6144000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 10, 1, 2), + F(8192000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 15, 0, 0), + F(9600000, P_BI_TCXO, 2, 0, 0), + F(12288000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 10, 0, 0), + F(19200000, P_BI_TCXO, 1, 0, 0), + F(24576000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 5, 0, 0), + F(49152000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 2.5, 0, 0), + { } +}; + +static struct clk_rcg2 audio_core_cc_aif_if3_clk_src =3D { + .cmd_rcgr =3D 0x1178, + .mnd_width =3D 16, + .hid_width =3D 5, + .parent_map =3D audio_core_cc_parent_map_0, + .freq_tbl =3D ftbl_audio_core_cc_aif_if3_clk_src, + .hw_clk_ctrl =3D true, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aif_if3_clk_src", + .parent_data =3D audio_core_cc_parent_data_0, + .num_parents =3D ARRAY_SIZE(audio_core_cc_parent_data_0), + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_rcg2_shared_ops, + }, +}; + +static const struct freq_tbl ftbl_audio_core_cc_aud_dma_clk_src[] =3D { + F(38400000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX2, 8, 0, 0), + F(102400000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX2, 3, 0, 0), + F(153600000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX2, 2, 0, 0), + F(307200000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX2, 1, 0, 0), + { } +}; + +static struct clk_rcg2 audio_core_cc_aud_dma_clk_src =3D { + .cmd_rcgr =3D 0x1028, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D audio_core_cc_parent_map_0, + .freq_tbl =3D ftbl_audio_core_cc_aud_dma_clk_src, + .hw_clk_ctrl =3D true, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aud_dma_clk_src", + .parent_data =3D audio_core_cc_parent_data_0, + .num_parents =3D ARRAY_SIZE(audio_core_cc_parent_data_0), + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_rcg2_shared_ops, + }, +}; + +static const struct freq_tbl ftbl_audio_core_cc_bus_clk_src[] =3D { + F(38400000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX2, 8, 0, 0), + F(76800000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX2, 4, 0, 0), + { } +}; + +static struct clk_rcg2 audio_core_cc_bus_clk_src =3D { + .cmd_rcgr =3D 0x1008, + .mnd_width =3D 0, + .hid_width =3D 5, + .parent_map =3D audio_core_cc_parent_map_0, + .freq_tbl =3D ftbl_audio_core_cc_bus_clk_src, + .hw_clk_ctrl =3D true, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_bus_clk_src", + .parent_data =3D audio_core_cc_parent_data_0, + .num_parents =3D ARRAY_SIZE(audio_core_cc_parent_data_0), + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_rcg2_shared_ops, + }, +}; + +static struct clk_rcg2 audio_core_cc_ext_mclka_clk_src =3D { + .cmd_rcgr =3D 0x123c, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D audio_core_cc_parent_map_0, + .freq_tbl =3D ftbl_audio_core_cc_aif_if0_clk_src, + .hw_clk_ctrl =3D true, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_ext_mclka_clk_src", + .parent_data =3D audio_core_cc_parent_data_0, + .num_parents =3D ARRAY_SIZE(audio_core_cc_parent_data_0), + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_rcg2_shared_ops, + }, +}; + +static struct clk_rcg2 audio_core_cc_ext_mclkb_clk_src =3D { + .cmd_rcgr =3D 0x125c, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D audio_core_cc_parent_map_0, + .freq_tbl =3D ftbl_audio_core_cc_aif_if0_clk_src, + .hw_clk_ctrl =3D true, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_ext_mclkb_clk_src", + .parent_data =3D audio_core_cc_parent_data_0, + .num_parents =3D ARRAY_SIZE(audio_core_cc_parent_data_0), + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_rcg2_shared_ops, + }, +}; + +static const struct freq_tbl ftbl_audio_core_cc_lpaif_pcmoe_clk_src[] =3D { + F(9600000, P_BI_TCXO, 2, 0, 0), + F(15360000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 8, 0, 0), + F(30720000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 4, 0, 0), + F(61440000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 2, 0, 0), + { } +}; + +static struct clk_rcg2 audio_core_cc_lpaif_pcmoe_clk_src =3D { + .cmd_rcgr =3D 0x12ac, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D audio_core_cc_parent_map_0, + .freq_tbl =3D ftbl_audio_core_cc_lpaif_pcmoe_clk_src, + .hw_clk_ctrl =3D true, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_lpaif_pcmoe_clk_src", + .parent_data =3D audio_core_cc_parent_data_0, + .num_parents =3D ARRAY_SIZE(audio_core_cc_parent_data_0), + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_rcg2_shared_ops, + }, +}; + +static const struct freq_tbl ftbl_audio_core_cc_tx_mclk_rcg_clk_src[] =3D { + F(19200000, P_BI_TCXO, 1, 0, 0), + F(24576000, P_AUDIO_CORE_CC_DIG_PLL_OUT_AUX, 5, 0, 0), + { } +}; + +static struct clk_rcg2 audio_core_cc_tx_mclk_rcg_clk_src =3D { + .cmd_rcgr =3D 0x127c, + .mnd_width =3D 8, + .hid_width =3D 5, + .parent_map =3D audio_core_cc_parent_map_0, + .freq_tbl =3D ftbl_audio_core_cc_tx_mclk_rcg_clk_src, + .hw_clk_ctrl =3D true, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_tx_mclk_rcg_clk_src", + .parent_data =3D audio_core_cc_parent_data_0, + .num_parents =3D ARRAY_SIZE(audio_core_cc_parent_data_0), + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_rcg2_shared_ops, + }, +}; + +static struct clk_regmap_div audio_core_cc_cdiv_tx_mclk_div_clk_src =3D { + .reg =3D 0x129c, + .shift =3D 0, + .width =3D 4, + .clkr.hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_cdiv_tx_mclk_div_clk_src", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_tx_mclk_rcg_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 audio_core_cc_aif_if0_ebit_clk =3D { + .halt_reg =3D 0x1068, + .halt_check =3D BRANCH_HALT_DELAY, + .clkr =3D { + .enable_reg =3D 0x1068, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aif_if0_ebit_clk", + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_aif_if0_ibit_clk =3D { + .halt_reg =3D 0x1064, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1064, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aif_if0_ibit_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_aif_if0_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_aif_if1_ebit_clk =3D { + .halt_reg =3D 0x10cc, + .halt_check =3D BRANCH_HALT_DELAY, + .clkr =3D { + .enable_reg =3D 0x10cc, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aif_if1_ebit_clk", + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_aif_if1_ibit_clk =3D { + .halt_reg =3D 0x10c8, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x10c8, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aif_if1_ibit_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_aif_if1_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_aif_if2_ebit_clk =3D { + .halt_reg =3D 0x1130, + .halt_check =3D BRANCH_HALT_DELAY, + .clkr =3D { + .enable_reg =3D 0x1130, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aif_if2_ebit_clk", + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_aif_if2_ibit_clk =3D { + .halt_reg =3D 0x112c, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x112c, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aif_if2_ibit_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_aif_if2_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_aif_if3_ebit_clk =3D { + .halt_reg =3D 0x1194, + .halt_check =3D BRANCH_HALT_DELAY, + .clkr =3D { + .enable_reg =3D 0x1194, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aif_if3_ebit_clk", + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_aif_if3_ibit_clk =3D { + .halt_reg =3D 0x1190, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1190, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aif_if3_ibit_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_aif_if3_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_aud_dma_clk =3D { + .halt_reg =3D 0x1040, + .halt_check =3D BRANCH_HALT, + .hwcg_reg =3D 0x1040, + .hwcg_bit =3D 1, + .clkr =3D { + .enable_reg =3D 0x1040, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aud_dma_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_aud_dma_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_aud_dma_mem_clk =3D { + .halt_reg =3D 0x1044, + .halt_check =3D BRANCH_HALT, + .hwcg_reg =3D 0x1044, + .hwcg_bit =3D 1, + .clkr =3D { + .enable_reg =3D 0x1044, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_aud_dma_mem_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_aud_dma_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_bus_clk =3D { + .halt_reg =3D 0x1020, + .halt_check =3D BRANCH_HALT_VOTED, + .clkr =3D { + .enable_reg =3D 0x1020, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_bus_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_bus_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_aon_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_ext_mclka_out_clk =3D { + .halt_reg =3D 0x1254, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1254, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_ext_mclka_out_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_ext_mclka_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_ext_mclkb_out_clk =3D { + .halt_reg =3D 0x1274, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1274, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_ext_mclkb_out_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_ext_mclkb_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_im_sleep_clk =3D { + .halt_reg =3D 0x12cc, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x12cc, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_im_sleep_clk", + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_lpaif_pcmoe_clk =3D { + .halt_reg =3D 0x12c4, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x12c4, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_lpaif_pcmoe_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_lpaif_pcmoe_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_rx_mclk_2x_clk =3D { + .halt_reg =3D 0x1298, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1298, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_rx_mclk_2x_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_tx_mclk_rcg_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_rx_mclk_clk =3D { + .halt_reg =3D 0x12a4, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x12a4, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_rx_mclk_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_cdiv_tx_mclk_div_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_sampling_clk =3D { + .halt_reg =3D 0x1000, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1000, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_sampling_clk", + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_tx_mclk_2x_clk =3D { + .halt_reg =3D 0x1294, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x1294, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_tx_mclk_2x_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_tx_mclk_rcg_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_branch audio_core_cc_tx_mclk_clk =3D { + .halt_reg =3D 0x12a0, + .halt_check =3D BRANCH_HALT, + .clkr =3D { + .enable_reg =3D 0x12a0, + .enable_mask =3D BIT(0), + .hw.init =3D &(const struct clk_init_data) { + .name =3D "audio_core_cc_tx_mclk_clk", + .parent_hws =3D (const struct clk_hw*[]) { + &audio_core_cc_cdiv_tx_mclk_div_clk_src.clkr.hw, + }, + .num_parents =3D 1, + .flags =3D CLK_SET_RATE_PARENT, + .ops =3D &clk_branch2_ops, + }, + }, +}; + +static struct clk_hw *audio_core_cc_shikra_hws[] =3D { + [AUDIO_CORE_CC_DIG_PLL_OUT_AUX] =3D &audio_core_cc_dig_pll_out_aux.hw, + [AUDIO_CORE_CC_DIG_PLL_OUT_AUX2] =3D &audio_core_cc_dig_pll_out_aux2.hw, +}; + +static struct clk_regmap *audio_core_cc_shikra_clocks[] =3D { + [AUDIO_CORE_CC_AIF_IF0_CLK_SRC] =3D &audio_core_cc_aif_if0_clk_src.clkr, + [AUDIO_CORE_CC_AIF_IF0_EBIT_CLK] =3D &audio_core_cc_aif_if0_ebit_clk.clkr, + [AUDIO_CORE_CC_AIF_IF0_IBIT_CLK] =3D &audio_core_cc_aif_if0_ibit_clk.clkr, + [AUDIO_CORE_CC_AIF_IF1_CLK_SRC] =3D &audio_core_cc_aif_if1_clk_src.clkr, + [AUDIO_CORE_CC_AIF_IF1_EBIT_CLK] =3D &audio_core_cc_aif_if1_ebit_clk.clkr, + [AUDIO_CORE_CC_AIF_IF1_IBIT_CLK] =3D &audio_core_cc_aif_if1_ibit_clk.clkr, + [AUDIO_CORE_CC_AIF_IF2_CLK_SRC] =3D &audio_core_cc_aif_if2_clk_src.clkr, + [AUDIO_CORE_CC_AIF_IF2_EBIT_CLK] =3D &audio_core_cc_aif_if2_ebit_clk.clkr, + [AUDIO_CORE_CC_AIF_IF2_IBIT_CLK] =3D &audio_core_cc_aif_if2_ibit_clk.clkr, + [AUDIO_CORE_CC_AIF_IF3_CLK_SRC] =3D &audio_core_cc_aif_if3_clk_src.clkr, + [AUDIO_CORE_CC_AIF_IF3_EBIT_CLK] =3D &audio_core_cc_aif_if3_ebit_clk.clkr, + [AUDIO_CORE_CC_AIF_IF3_IBIT_CLK] =3D &audio_core_cc_aif_if3_ibit_clk.clkr, + [AUDIO_CORE_CC_AUD_DMA_CLK] =3D &audio_core_cc_aud_dma_clk.clkr, + [AUDIO_CORE_CC_AUD_DMA_CLK_SRC] =3D &audio_core_cc_aud_dma_clk_src.clkr, + [AUDIO_CORE_CC_AUD_DMA_MEM_CLK] =3D &audio_core_cc_aud_dma_mem_clk.clkr, + [AUDIO_CORE_CC_BUS_CLK] =3D &audio_core_cc_bus_clk.clkr, + [AUDIO_CORE_CC_BUS_CLK_SRC] =3D &audio_core_cc_bus_clk_src.clkr, + [AUDIO_CORE_CC_CDIV_TX_MCLK_DIV_CLK_SRC] =3D &audio_core_cc_cdiv_tx_mclk_= div_clk_src.clkr, + [AUDIO_CORE_CC_DIG_PLL] =3D &audio_core_cc_dig_pll.clkr, + [AUDIO_CORE_CC_EXT_MCLKA_CLK_SRC] =3D &audio_core_cc_ext_mclka_clk_src.cl= kr, + [AUDIO_CORE_CC_EXT_MCLKA_OUT_CLK] =3D &audio_core_cc_ext_mclka_out_clk.cl= kr, + [AUDIO_CORE_CC_EXT_MCLKB_CLK_SRC] =3D &audio_core_cc_ext_mclkb_clk_src.cl= kr, + [AUDIO_CORE_CC_EXT_MCLKB_OUT_CLK] =3D &audio_core_cc_ext_mclkb_out_clk.cl= kr, + [AUDIO_CORE_CC_IM_SLEEP_CLK] =3D &audio_core_cc_im_sleep_clk.clkr, + [AUDIO_CORE_CC_LPAIF_PCMOE_CLK] =3D &audio_core_cc_lpaif_pcmoe_clk.clkr, + [AUDIO_CORE_CC_LPAIF_PCMOE_CLK_SRC] =3D &audio_core_cc_lpaif_pcmoe_clk_sr= c.clkr, + [AUDIO_CORE_CC_RX_MCLK_2X_CLK] =3D &audio_core_cc_rx_mclk_2x_clk.clkr, + [AUDIO_CORE_CC_RX_MCLK_CLK] =3D &audio_core_cc_rx_mclk_clk.clkr, + [AUDIO_CORE_CC_SAMPLING_CLK] =3D &audio_core_cc_sampling_clk.clkr, + [AUDIO_CORE_CC_TX_MCLK_2X_CLK] =3D &audio_core_cc_tx_mclk_2x_clk.clkr, + [AUDIO_CORE_CC_TX_MCLK_CLK] =3D &audio_core_cc_tx_mclk_clk.clkr, + [AUDIO_CORE_CC_TX_MCLK_RCG_CLK_SRC] =3D &audio_core_cc_tx_mclk_rcg_clk_sr= c.clkr, +}; + +static struct clk_alpha_pll *audio_core_cc_shikra_plls[] =3D { + &audio_core_cc_dig_pll, +}; + +static const struct qcom_cc_driver_data audio_core_cc_shikra_driver_data = =3D { + .alpha_plls =3D audio_core_cc_shikra_plls, + .num_alpha_plls =3D ARRAY_SIZE(audio_core_cc_shikra_plls), +}; + +static const struct regmap_config audio_core_cc_shikra_regmap_config =3D { + .reg_bits =3D 32, + .reg_stride =3D 4, + .val_bits =3D 32, + .max_register =3D 0x305c, + .fast_io =3D true, +}; + +static const struct qcom_reset_map audio_core_csr_shikra_resets[] =3D { + [AUDIO_CORE_CSR_RX_SWR_CGCR] =3D { 0x1c, 1 }, + [AUDIO_CORE_CSR_TX_SWR_CGCR] =3D { 0x30, 1 }, +}; + +static const struct regmap_config audio_core_csr_shikra_regmap_config =3D { + .name =3D "audio_core_cc_shikra_reset", + .reg_bits =3D 32, + .reg_stride =3D 4, + .val_bits =3D 32, + .fast_io =3D true, + .max_register =3D 0x34, +}; + +static const struct qcom_cc_desc audio_core_csr_shikra_desc =3D { + .config =3D &audio_core_csr_shikra_regmap_config, + .resets =3D audio_core_csr_shikra_resets, + .num_resets =3D ARRAY_SIZE(audio_core_csr_shikra_resets), +}; + +static const struct qcom_cc_desc audio_core_cc_shikra_desc =3D { + .config =3D &audio_core_cc_shikra_regmap_config, + .clk_hws =3D audio_core_cc_shikra_hws, + .num_clk_hws =3D ARRAY_SIZE(audio_core_cc_shikra_hws), + .clks =3D audio_core_cc_shikra_clocks, + .num_clks =3D ARRAY_SIZE(audio_core_cc_shikra_clocks), + .driver_data =3D &audio_core_cc_shikra_driver_data, +}; + +static const struct of_device_id audio_core_cc_shikra_match_table[] =3D { + { .compatible =3D "qcom,shikra-audiocorecc", .data =3D &audio_core_cc_shi= kra_desc }, + { .compatible =3D "qcom,shikra-audiocore-csr", .data =3D &audio_core_csr_= shikra_desc }, + { } +}; +MODULE_DEVICE_TABLE(of, audio_core_cc_shikra_match_table); + +static int audio_core_cc_shikra_probe(struct platform_device *pdev) +{ + const struct qcom_cc_desc *desc; + + desc =3D device_get_match_data(&pdev->dev); + if (!desc) + return -EINVAL; + + return qcom_cc_probe(pdev, desc); +} + +static struct platform_driver audio_core_cc_shikra_driver =3D { + .probe =3D audio_core_cc_shikra_probe, + .driver =3D { + .name =3D "audiocorecc-shikra", + .of_match_table =3D audio_core_cc_shikra_match_table, + }, +}; + +module_platform_driver(audio_core_cc_shikra_driver); + +MODULE_DESCRIPTION("QTI AUDIOCORECC Shikra Driver"); +MODULE_LICENSE("GPL"); --=20 2.34.1 From nobody Fri Jul 24 20:53:23 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 CEFEF442FCE for ; Fri, 24 Jul 2026 17:16:08 +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=1784913370; cv=none; b=qN4vLiohbCsxdThZ0Ky08VTmNef2R/+5jhiVz3FhxM/n93k/x+HzeJQ8woTv5nBMeLn5z4kbc/symckkbfFKBIjs2/TAubRkfVQ0KNFEd0flILgWHftkXCy8Q9zcnvhLof+GQIDwDK8hkr+vkeyvkjDmnlWRGG+bn4X0yEoCock= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784913370; c=relaxed/simple; bh=O7qiwaryPlXurWIjq/udwHQ+dZxQnDOzL079xltsr/s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lml3yvzCs5bZZkIBNuWxB1uEsqgbujmVXrBSLL4uknjzgdsbIUErpZ/TnRAtIlBG9p8UzpnyXAeImvZNMAbryTbLseM6DLuLVMulNZW0zsH9cILIHAQk3AOPcLAcglAhNhE0vyBQC7bE7GUu2DnsEv7z3A5tC7QWOQR8rWGFHxw= 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=KV/J8ps0; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=OPgUWEkq; 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="KV/J8ps0"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="OPgUWEkq" 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 66OGqZe13154259 for ; Fri, 24 Jul 2026 17:16:08 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= tNmXDzaverxKdYg5q+nd9ERkwwkJAFG1IgfvwE1/7Us=; b=KV/J8ps0zO4pQmgP zk23a7TOxo7tmzkoDTg1/val0c7mix7xoUD2t7dn3h6YH1as4RTWYxw+zABJ4c16 Vb6rBmEazzxVnylduC3Gx0bLGRdUitIcOcopvNrGTLNRl7utw84IdXwraZOShobq OJPAOAbTNxXCzIJLSQDQauuWwF622rN40JgcGP13XZGA6cIGbzuRNiD+YVZatl90 lYZK0P1HiqL0QceF7+8MACeQnrSxJaqEuxlQ178Fjp2FZZkCK0Te+SkQdU2pq2Ck Sf+pGSvW3+Vw1pJCpyFA3rFQMeoe2iaGfEFJMDS/AOAZCyHHWVTABMllXmTNC5Lp QBKuSQ== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fm8cggymf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Jul 2026 17:16:08 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38dbf293831so1301472a91.3 for ; Fri, 24 Jul 2026 10:16:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784913367; x=1785518167; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tNmXDzaverxKdYg5q+nd9ERkwwkJAFG1IgfvwE1/7Us=; b=OPgUWEkqIHjDICY027Fb48LUZWVMp2W0+5hY+acB5nwekFvmDyyS3OnVVltpGAGwe9 Zes6kSOME6TFl/DzRaRSfLxX0Z1aSJYw6GmKEBSj9qIwpZoATQPhMgN6Bp1eEffCPSQM qkg0iYfW5zGsWbB/S+sjlVIbaVZxMauf+QCbPw18PG9qNxSTggEObK+G9t++a9HbPsGF 5R2RHtmZ8uYEaMd/x0jyRdCcpeC3Tu/TRl50ggejFRd7x+AVDPP05ohfiRCkcf0JeA/W v4FIGgKIA8wEiDdBBMb8hTNfhrX5lT2jUGLMwIyHh2OOL0HvnL1jugwlTJQbcipvS+t3 Oc4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784913367; x=1785518167; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=tNmXDzaverxKdYg5q+nd9ERkwwkJAFG1IgfvwE1/7Us=; b=AiwAGRQ2fAT4Dt9ryd8YJEFVuP0xLpHxDZktLMp3XC5KLOQcYPFDp+KbhOLMswSEYD EcS/dXzo4lLt25fRZS+WqnE98yRkPPzcAMSUH+q5Y2VATO0XPAljLe5n//weYi4EfXRW Yq2qZSgxf3jLaNU7rnqLRvymPmiTq0Y9lq1jWisseEYTgPrJT8UnkHdgV5yzDq14oXvp bH5+e4xV0IY1OKxlFExBPVKo9nDA/a6T6NlOL/03c2gD7scf01VSlPplNHF8wMdnGIkO BWnbqlSsdf5kogPqCRqVcic0R6SsJclJJHzrhzoPJ2rRF36ShRs9c3hfeGrGH4pHiiNf zrEw== X-Forwarded-Encrypted: i=1; AHgh+RrcIHi6M5/5Sbmju+RrvPymtseHLJzuj7aqQ35l/hFhCatoS0ms0ZimE0g4DaoUne3hsO7MXm2CT7i3uZU=@vger.kernel.org X-Gm-Message-State: AOJu0Ywur2rS8rryMih5a19H4FDSSK/ukGRiRZw8iRHW9urs4KsBKSvw jfp6qIXaToy8rH8F/5iE3/Bx/uUSi5mSQi45GoMwnsNi+26CEqxrC3Aq9XR2eQfDIlC3BnAyM2i c3BCz/6f5+TVELKLj3fZTFpMQSb9RI591s9G0G6xpSRfdC4NZPo2hGNgZsbXogThUf8w= X-Gm-Gg: AR+sD12cwCgMfmFwGsnQIN4okJ0lsu81fn+re9I+a8z+z66pM3cXkhaIr7F6mWTlpBO I/D9H4CPJ+tEPT5TgloHln9E4uDdEAeLLixO8ajmSkr6BuUzjaqe8izpHN3TyIp2moMzjl3GvyF jbryFTEUvjY/i5wlHtNo+8BEaYwzfTDswLFtUljZIfaQ7ON00Ua85tX0H/SD+AJm4slK4cDVSOM 9pwRa3duUC4EXx6cp36g+OCScBJC59IvERENyoLiNv/gu87CHdJF64KGWIR+iQmgfIuH16FKpF4 jAzeAnipmrU/JM/xItRqbD7U8/1Y2rM8dusrwJ4V1komKeeQavE76pNT4vlZCls5iLjVokP/RuU QNE9dU8eOCS+cFFbgBjKM4eXvlaLzYZg= X-Received: by 2002:a17:90b:3f48:b0:38e:2fa0:491b with SMTP id 98e67ed59e1d1-38ec6877190mr8420958a91.31.1784913366966; Fri, 24 Jul 2026 10:16:06 -0700 (PDT) X-Received: by 2002:a17:90b:3f48:b0:38e:2fa0:491b with SMTP id 98e67ed59e1d1-38ec6877190mr8420909a91.31.1784913366470; Fri, 24 Jul 2026 10:16:06 -0700 (PDT) Received: from hu-imrashai-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13d2eb01aa0sm8400892c88.3.2026.07.24.10.16.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 10:16:05 -0700 (PDT) From: Imran Shaik Date: Fri, 24 Jul 2026 22:45:34 +0530 Subject: [PATCH v4 3/3] arm64: dts: qcom: shikra: Add support for AudioCoreCC and AudioCoreCSR nodes 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: <20260724-shikra-audiocorecc-v4-3-0a89bb13d817@oss.qualcomm.com> References: <20260724-shikra-audiocorecc-v4-0-0a89bb13d817@oss.qualcomm.com> In-Reply-To: <20260724-shikra-audiocorecc-v4-0-0a89bb13d817@oss.qualcomm.com> To: Bjorn Andersson , Michael Turquette , Stephen Boyd , Brian Masney , Philipp Zabel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Konrad Dybcio Cc: Ajit Pandey , Taniya Das , Jagadeesh Kona , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Imran Shaik , Konrad Dybcio X-Mailer: b4 0.14.2 X-Authority-Analysis: v=2.4 cv=JOMLdcKb c=1 sm=1 tr=0 ts=6a639dd8 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=3-fpjux48RbdSrvt_gcA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-ORIG-GUID: _11jlvtKFX0wzvaD2Ns9HkQQUEFA9F-_ X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDE1NSBTYWx0ZWRfX+ez7eatmjw72 N60DwAQqscthQtUHWrrpK45bQv7os0bPIjvPhiukmuuLg52TxYJTAPbM9xblJIy2IJgaVI+nvhW VcKxC8AaG/YyCOVeaeiK33zSL/aoIc0= X-Proofpoint-GUID: _11jlvtKFX0wzvaD2Ns9HkQQUEFA9F-_ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDE1NSBTYWx0ZWRfX02C/v8TRtIpi ji8nneg124FY0e7l0v1x6QixowTZQMHI+ZYb64uCUdTg3JrPiIBEW1gdNIqLEg0SwSRFxV4s5hk VFL5pyN67G77T5kqe1j7ML05cEC9dTF52VJtzUfAQBOH8D7OND9ibMLljkmNy7ox5SHn8tEIihr MAXr6Wes0IflZXT9krc26Mw6CJtqPftID8lxFVBotoARkL0rgZykZquj/+aIRPkfOk66LTuC7hW g2TazXSeYgDy2foqMR+SkrG9s3H3JHPsAT8V7xrPAmHAET4E1BuUYA1bdK/gDbPXD/SThbX4g94 VT4u54K9qYPfuYPD4nd8orktWEtmIN6werazmrXpdQIsCLzMw89g02MGBvX5XLiXQk+QSOuP/Fw //bdaGVkqBnhaEKADbjFdquGV7n2mG+A+PN7o3ijcVtMaEkrFFs1Gd1Xel2Q0ojKvouLVIKg1TB mjHHtn2xmAo1IyJKkNw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_04,2026-07-24_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 suspectscore=0 impostorscore=0 spamscore=0 bulkscore=0 clxscore=1015 adultscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240155 Add support for Audio Core Clock Controller (AudioCoreCC) and Audio Core CSR nodes on Qualcomm Shikra SoC. The Audio Core Clocks and Resets support differs across Shikra variants based on Audio subsystem enablement as follows: - CQM variant: The QAIF driver runs on HLOS, hence both clocks and resets are required to be supported on HLOS. - CQS variant: The QAIF driver runs on the Modem, and required clocks are handled on Modem, so from HLOS only resets are needed. - IQS variant: no soundwire codes, hence no clocks/resets are needed. Reviewed-by: Konrad Dybcio Signed-off-by: Imran Shaik --- arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts | 4 ++++ arch/arm64/boot/dts/qcom/shikra.dtsi | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts b/arch/arm64/boot/= dts/qcom/shikra-cqm-evk.dts index 0a52ab9b7a4c34d371f5ac23efe59d1c9d2723f4..0883c480bfbc80d7bead966b9ba= 932dee8a77bbf 100644 --- a/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts +++ b/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts @@ -23,6 +23,10 @@ chosen { }; }; =20 +&audiocorecc { + status =3D "okay"; +}; + &sdhc_1 { vmmc-supply =3D <&pm4125_l20>; vqmmc-supply =3D <&pm4125_l14>; diff --git a/arch/arm64/boot/dts/qcom/shikra.dtsi b/arch/arm64/boot/dts/qco= m/shikra.dtsi index 4e5bc9e17c8ed8914733ac9fdc9b69128b40216e..b744534572d63349c4274ffbe5c= acbb8fdb4197d 100644 --- a/arch/arm64/boot/dts/qcom/shikra.dtsi +++ b/arch/arm64/boot/dts/qcom/shikra.dtsi @@ -4,6 +4,7 @@ */ =20 #include +#include #include #include #include @@ -640,6 +641,22 @@ &clk_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>, }; }; =20 + audiocorecc: clock-controller@a0a0000 { + compatible =3D "qcom,shikra-audiocorecc"; + reg =3D <0x0 0x0a0a0000 0x0 0x10000>; + clocks =3D <&rpmcc RPM_SMD_XO_CLK_SRC>, + <&sleep_clk>, + <0>; + #clock-cells =3D <1>; + status =3D "reserved"; /* Owned by Modem firmware */ + }; + + audiocore_csr: reset-controller@a0b4000 { + compatible =3D "qcom,shikra-audiocore-csr"; + reg =3D <0x0 0x0a0b4000 0x0 0x1000>; + #reset-cells =3D <1>; + }; + sram@c11e000 { compatible =3D "qcom,shikra-imem", "mmio-sram"; reg =3D <0x0 0x0c11e000 0x0 0x1000>; --=20 2.34.1