Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp1208008rdb; Wed, 20 Sep 2023 02:48:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG1Gh1FWW/gVj9ROKqiiJx5qXM2bqTfwsvzy2nzAgqQc6zVK45Mw4CbuNTpoxIappLVLZO3 X-Received: by 2002:a05:6808:211c:b0:3a7:49e5:e0da with SMTP id r28-20020a056808211c00b003a749e5e0damr2033420oiw.26.1695203311877; Wed, 20 Sep 2023 02:48:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695203311; cv=none; d=google.com; s=arc-20160816; b=jywGBZFEFNhS0uYslsYJejR73oYqak15fgrZVuDLhWjyn9IERZ3m7UnvtS4T2HRPH2 sD759t9sags8uaqiaKJI+XHpI33j09mvHCD3jb1eqXWTp3r8EFrkW2P+C3HUdrLXtErk A6t4wvXIicqhuyGsi/yjNdaR3sy62l8SUfTLx4YAxj/H2A8XUQzTTQw6zG+wYpwHh7r5 zIgtsd34LxUvsRbLSHerRJFmJ5TqGNeAn8gJfN0tyjKZN08VeGsWgyKoI9B+GadMoVOo tiRi85BCFt2nqOHx0Rk/+qkLveh1kwDPTTV576qaybjvZLZZMkrJQxn7Cp+CfLCdX7IB ZeBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:references :cc:to:from:content-language:subject:user-agent:mime-version:date :message-id:dkim-signature; bh=6fAan/TtUAMcsM2JANJzhYYORw6sSETX7nv3yKLaNfg=; fh=9cVOWjEhgwQ2U5mTMuEbzNgoX0lbhP7Tfmd+yTG5cxE=; b=fnb1BCvWJTBflfgvFsmOwZ3w0cnnEIsz2nBLghe8TX1ix7PXwGlLl/vuYn9QOIn+Mq ZK0HkguZgUHG1MftsVwsoaETNs3bn2nM21bfparpXxNyR8y2vYexTyyPBmq/4mTEWzhj 1m9PpXAn9//ftgYs12+jmx1HtgzAwtRKLVA0b4YPFOC/5uJ11GUGv2iuQI82/sIFqoiF B30zffLk5Fzdt6y/miD6fZ79jQiAUjMOtOZO7bZZkY8l5WmtsPSzanuixg00ymcQpOZv aqFVyDwbcpl3JdGxipo4rpwULZEqSrS8wP+ScWZ1bLicBvoh10lojWiCRsM9rfIMZ1lv g5cA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=D3ODHT5b; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id f16-20020a056a001ad000b0068ff741579fsi11441033pfv.318.2023.09.20.02.48.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Sep 2023 02:48:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=D3ODHT5b; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 75E1A80A28C4; Tue, 19 Sep 2023 23:40:23 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233328AbjITGkU (ORCPT + 99 others); Wed, 20 Sep 2023 02:40:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38286 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233324AbjITGkS (ORCPT ); Wed, 20 Sep 2023 02:40:18 -0400 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 894C7C6; Tue, 19 Sep 2023 23:40:10 -0700 (PDT) Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38K5nH73025101; Wed, 20 Sep 2023 06:39:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=message-id : date : mime-version : subject : from : to : cc : references : in-reply-to : content-type : content-transfer-encoding; s=qcppdkim1; bh=6fAan/TtUAMcsM2JANJzhYYORw6sSETX7nv3yKLaNfg=; b=D3ODHT5bLy9wTX9k4P+v2NdtImtD3Jy5YFAv+VNVIdDs+cXJ9/9XwMgflwZiSkrGq5HZ 96vz1sqQCJxWSK9OVWHxjZnk7rEZp7+Y+IAf+Rb9ZDQK3FXrIo2uKZxXx4fIcjtL9dnN xom7+VUFMLTurix9hf0vSonjg+VUXktK0W0gXa5ZxZSkNEpytlFWp/KelLAGypKXZ1jb t9nX/EBlggsFitXYoD/u6hbXYA/oqZNbvezP+DLwyonRQlN9BqWbzWpCp+OOL2ikchWL mKcgSJYme254jup59qfpnfEPcaZdW6Qb/32kEq+2mk/9wK2gI/+Qfn2sTYfXspWa7tKM KQ== Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3t7qujgcb5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 20 Sep 2023 06:39:33 +0000 Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA05.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 38K6dVXD023667 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 20 Sep 2023 06:39:31 GMT Received: from [10.216.3.234] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.36; Tue, 19 Sep 2023 23:39:22 -0700 Message-ID: Date: Wed, 20 Sep 2023 12:09:18 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Subject: Re: [PATCH V2 5/7] clk: qcom: Add NSS clock Controller driver for IPQ9574 Content-Language: en-US From: Devi Priya To: Dmitry Baryshkov CC: , , , , , , , , , , , , , , , , , , , , , , , References: <20230825091234.32713-1-quic_devipriy@quicinc.com> <20230825091234.32713-6-quic_devipriy@quicinc.com> <652b55cc-87dd-46d1-e480-e25f5f22b8d8@quicinc.com> In-Reply-To: <652b55cc-87dd-46d1-e480-e25f5f22b8d8@quicinc.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: 3CAXM7ggkK5yO1BpRomINjl1UQxnF7ER X-Proofpoint-ORIG-GUID: 3CAXM7ggkK5yO1BpRomINjl1UQxnF7ER X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.601,FMLib:17.11.176.26 definitions=2023-09-20_02,2023-09-19_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 mlxscore=0 clxscore=1015 priorityscore=1501 mlxlogscore=999 impostorscore=0 malwarescore=0 suspectscore=0 lowpriorityscore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2308100000 definitions=main-2309200053 X-Spam-Status: No, score=-2.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Tue, 19 Sep 2023 23:40:23 -0700 (PDT) On 9/12/2023 7:38 PM, Devi Priya wrote: > > > On 8/25/2023 5:14 PM, Dmitry Baryshkov wrote: >> On Fri, 25 Aug 2023 at 12:15, Devi Priya >> wrote: >>> >>> Add Networking Sub System Clock Controller(NSSCC) driver for ipq9574 >>> based >>> devices. >>> >>> Signed-off-by: Devi Priya >>> --- >>>   Changes in V2: >>>          - Added depends on ARM64 || COMPILE_TEST in Kconfig >>>          - Added module_platform_driver >>>          - Dropped patch [2/6] - clk: qcom: gcc-ipq9574: Mark nssnoc >>> clocks as critical >>>             & added pm_clk for nssnoc clocks >>>          - Updated the uniphy clock names >>> >>>   drivers/clk/qcom/Kconfig         |    7 + >>>   drivers/clk/qcom/Makefile        |    1 + >>>   drivers/clk/qcom/nsscc-ipq9574.c | 3109 ++++++++++++++++++++++++++++++ >>>   3 files changed, 3117 insertions(+) >>>   create mode 100644 drivers/clk/qcom/nsscc-ipq9574.c >>> >>> diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig >>> index bd9bfb11b328..3ecc11e2c8e3 100644 >>> --- a/drivers/clk/qcom/Kconfig >>> +++ b/drivers/clk/qcom/Kconfig >>> @@ -203,6 +203,13 @@ config IPQ_GCC_9574 >>>            i2c, USB, SD/eMMC, etc. Select this for the root clock >>>            of ipq9574. >>> >>> +config IPQ_NSSCC_9574 >>> +       tristate "IPQ9574 NSS Clock Controller" >>> +       depends on ARM64 || COMPILE_TEST >>> +       depends on IPQ_GCC_9574 >>> +       help >>> +         Support for NSS clock controller on ipq9574 devices. >>> + >>>   config MSM_GCC_8660 >>>          tristate "MSM8660 Global Clock Controller" >>>          depends on ARM || COMPILE_TEST >>> diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile >>> index 4790c8cca426..3f084928962e 100644 >>> --- a/drivers/clk/qcom/Makefile >>> +++ b/drivers/clk/qcom/Makefile >>> @@ -30,6 +30,7 @@ obj-$(CONFIG_IPQ_GCC_6018) += gcc-ipq6018.o >>>   obj-$(CONFIG_IPQ_GCC_806X) += gcc-ipq806x.o >>>   obj-$(CONFIG_IPQ_GCC_8074) += gcc-ipq8074.o >>>   obj-$(CONFIG_IPQ_GCC_9574) += gcc-ipq9574.o >>> +obj-$(CONFIG_IPQ_NSSCC_9574)   += nsscc-ipq9574.o >>>   obj-$(CONFIG_IPQ_LCC_806X) += lcc-ipq806x.o >>>   obj-$(CONFIG_MDM_GCC_9607) += gcc-mdm9607.o >>>   obj-$(CONFIG_MDM_GCC_9615) += gcc-mdm9615.o >>> diff --git a/drivers/clk/qcom/nsscc-ipq9574.c >>> b/drivers/clk/qcom/nsscc-ipq9574.c >>> new file mode 100644 >>> index 000000000000..65bdb449ae5f >>> --- /dev/null >>> +++ b/drivers/clk/qcom/nsscc-ipq9574.c >>> @@ -0,0 +1,3109 @@ >>> +// SPDX-License-Identifier: GPL-2.0-only >>> +/* >>> + * Copyright (c) 2021, The Linux Foundation. All rights reserved. >>> + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights >>> reserved. >>> + */ >>> + >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#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" >>> + >>> +/* Need to match the order of clocks in DT binding */ >>> +enum { >>> +       DT_NSSNOC_NSSCC_CLK, >>> +       DT_NSSNOC_SNOC_CLK, >>> +       DT_NSSNOC_SNOC_1_CLK, >> >> Not using the index makes it seem that these clocks are not used, >> until one scrolls down to pm_clks. > Okay, got it >> >> BTW: The NSSNOC_SNOC clocks make it look like there is an interconnect >> here (not a simple NIU). > > Hi Dmitry, We are exploring on the ICC driver. In the meantime to > unblock PCIe/NSS changes getting merged, shall we use regmap_update_bits > and turn on the critical NSSNOC clocks, ANOC & SNOC pcie clocks in the > probe function of the gcc driver itself as like sm8550 driver to get the > changes merged? > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/clk/qcom/gcc-sm8550.c#n3347 Hi Dmitry, Just curious to know if we could send out the next series with the proposed approach if that holds good. Thanks, Devi Priya >> >>> +       DT_BIAS_PLL_CC_CLK, >>> +       DT_BIAS_PLL_NSS_NOC_CLK, >>> +       DT_BIAS_PLL_UBI_NC_CLK, >>> +       DT_GCC_GPLL0_OUT_AUX, >>> +       DT_UNIPHY0_NSS_RX_CLK, >>> +       DT_UNIPHY0_NSS_TX_CLK, >>> +       DT_UNIPHY1_NSS_RX_CLK, >>> +       DT_UNIPHY1_NSS_TX_CLK, >>> +       DT_UNIPHY2_NSS_RX_CLK, >>> +       DT_UNIPHY2_NSS_TX_CLK, >>> +       DT_XO, >> >> As I wrote, please move DT_XO closer to the beginning of the list. >> >>> +}; >>> + >>> +enum { >>> +       P_BIAS_PLL_CC_CLK, >>> +       P_BIAS_PLL_NSS_NOC_CLK, >>> +       P_BIAS_PLL_UBI_NC_CLK, >>> +       P_GCC_GPLL0_OUT_AUX, >>> +       P_UBI32_PLL_OUT_MAIN, >>> +       P_UNIPHY0_NSS_RX_CLK, >>> +       P_UNIPHY0_NSS_TX_CLK, >>> +       P_UNIPHY1_NSS_RX_CLK, >>> +       P_UNIPHY1_NSS_TX_CLK, >>> +       P_UNIPHY2_NSS_RX_CLK, >>> +       P_UNIPHY2_NSS_TX_CLK, >>> +       P_XO, >>> +}; >>> + >>> +static const struct alpha_pll_config ubi32_pll_config = { >>> +       .l = 0x3e, >>> +       .alpha = 0x6666, >>> +       .config_ctl_val = 0x200d4aa8, >>> +       .config_ctl_hi_val = 0x3c, >>> +       .main_output_mask = BIT(0), >>> +       .aux_output_mask = BIT(1), >>> +       .pre_div_val = 0x0, >>> +       .pre_div_mask = BIT(12), >>> +       .post_div_val = 0x0, >>> +       .post_div_mask = GENMASK(9, 8), >>> +       .alpha_en_mask = BIT(24), >>> +       .test_ctl_val = 0x1c0000c0, >>> +       .test_ctl_hi_val = 0x4000, >>> +}; >>> + >>> +static struct clk_alpha_pll ubi32_pll_main = { >>> +       .offset = 0x28000, >>> +       .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_NSS_HUAYRA], >>> +       .flags = SUPPORTS_DYNAMIC_UPDATE, >>> +       .clkr = { >>> +               .hw.init = &(const struct clk_init_data) { >>> +                       .name = "ubi32_pll_main", >>> +                       .parent_data = &(const struct clk_parent_data) { >>> +                               .index = DT_XO, >>> +                       }, >>> +                       .num_parents = 1, >>> +                       .ops = &clk_alpha_pll_huayra_ops, >>> +               }, >>> +       }, >>> +}; >>> + >>> +static struct clk_alpha_pll_postdiv ubi32_pll = { >>> +       .offset = 0x28000, >>> +       .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_NSS_HUAYRA], >>> +       .width = 2, >>> +       .clkr.hw.init = &(const struct clk_init_data) { >>> +               .name = "ubi32_pll", >>> +               .parent_hws = (const struct clk_hw *[]) { >>> +                       &ubi32_pll_main.clkr.hw >>> +               }, >>> +               .num_parents = 1, >>> +               .ops = &clk_alpha_pll_postdiv_ro_ops, >>> +               .flags = CLK_SET_RATE_PARENT, >>> +       }, >>> +}; >>> + >> >> [skipped clock tables, LGTM] >> >>> +static const struct of_device_id nss_cc_ipq9574_match_table[] = { >>> +       { .compatible = "qcom,ipq9574-nsscc" }, >>> +       { } >>> +}; >>> +MODULE_DEVICE_TABLE(of, nss_cc_ipq9574_match_table); >>> + >>> +static int nss_cc_ipq9574_probe(struct platform_device *pdev) >>> +{ >>> +       struct regmap *regmap; >>> +       struct qcom_cc_desc nsscc_ipq9574_desc = nss_cc_ipq9574_desc; >>> + >>> +       int ret; >>> + >>> +       ret = devm_pm_runtime_enable(&pdev->dev); >>> +       if (ret < 0) >>> +               return ret; >>> + >>> +       ret = devm_pm_clk_create(&pdev->dev); >>> +       if (ret < 0) >>> +               return ret; >>> + >>> +       ret = of_pm_clk_add_clk(&pdev->dev, "nssnoc_nsscc"); >> >> As we are switching to DT indices, better add new API that takes index >> rather than mixing indices and names. > sure okay > > Thanks, > Devi Priya >> >>> +       if (ret < 0) { >>> +               dev_err(&pdev->dev, "Failed to acquire nssnoc_nsscc >>> clock\n"); >>> +               return ret; >>> +       } >>> + >>> +       ret = of_pm_clk_add_clk(&pdev->dev, "nssnoc_snoc"); >>> +       if (ret < 0) { >>> +               dev_err(&pdev->dev, "Failed to acquire nssnoc_snoc >>> clock\n"); >>> +               return ret; >>> +       } >>> + >>> +       ret = of_pm_clk_add_clk(&pdev->dev, "nssnoc_snoc_1"); >>> +       if (ret < 0) { >>> +               dev_err(&pdev->dev, "Failed to acquire nssnoc_snoc_1 >>> clock\n"); >>> +               return ret; >>> +       } >>> + >>> +       ret = pm_runtime_get(&pdev->dev); >>> +       if (ret) >>> +               return ret; >>> + >>> +       regmap = qcom_cc_map(pdev, &nsscc_ipq9574_desc); >>> +       if (IS_ERR(regmap)) >>> +               return PTR_ERR(regmap); >>> + >>> +       clk_alpha_pll_configure(&ubi32_pll_main, regmap, >>> &ubi32_pll_config); >>> + >>> +       return qcom_cc_really_probe(pdev, &nsscc_ipq9574_desc, regmap); >>> +} >>> + >>> +static const struct dev_pm_ops nss_cc_pm_ops = { >>> +       SET_RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL) >>> +}; >>> + >>> +static struct platform_driver nss_cc_ipq9574_driver = { >>> +       .probe = nss_cc_ipq9574_probe, >>> +       .driver = { >>> +               .name = "qcom,nsscc-ipq9574", >>> +               .of_match_table = nss_cc_ipq9574_match_table, >>> +               .pm = &nss_cc_pm_ops, >>> +       }, >>> +}; >>> + >>> +module_platform_driver(nss_cc_ipq9574_driver); >>> + >>> +MODULE_DESCRIPTION("QTI NSS_CC IPQ9574 Driver"); >>> +MODULE_LICENSE("GPL"); >>> -- >>> 2.34.1 >>> >> >>