Received: by 2002:a05:6500:1b8f:b0:1fa:5c73:8e2d with SMTP id df15csp1329766lqb; Thu, 30 May 2024 07:17:41 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWJbr4zclzLXGHf9eIQFvCw4/W31LAGp9WuJm9UXpHKjFJI9/IvGNpjb39rH9avFYNaVetzCslELPMYm8O1Pm7Y4Kc3H0ZMfO9Jrvnqzg== X-Google-Smtp-Source: AGHT+IFbVjHoDPoUwKTI7+ZF85l4bgkVxckkzd3Kv+OH8WwSvSgMbddByIZh/oPgjTqgBM8JlTVG X-Received: by 2002:a17:902:7845:b0:1f3:30f6:d0f8 with SMTP id d9443c01a7336-1f6196024ccmr22808905ad.12.1717078660734; Thu, 30 May 2024 07:17:40 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717078660; cv=pass; d=google.com; s=arc-20160816; b=jq2M66hmwytXIx1gEtOjZTGH70bw1QBrHBNV+A80L1954MUHmSnVcfcR2pNbWXLOs6 0ZDiS8ooXN9dW9YN0kdzCWR0uH3tT0Bhk0m43b1bOHKoS4poVzO+gOwty3lr706+CiXJ CSEQlyFpVHGySKtzGUj+zT689AgMw+6maVKD/s1aIhjbySMsI01eRkneNTQeKO6RYfm0 l1D+VFuLpRvgoh6qkkFSC9oAmrqtVNVJ3ELfjUEO8/riz6UOWpvZpXAUWm6yaNhqLQkv iNKYRFlhExE5/68mB23xZiUMghgpQ0kkfr9W67bCMul68KRyDH/JBkkN04S0GyHJG1DX oATQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :references:message-id:subject:cc:to:from:date; bh=bK/Gym0mBbMBtlaj6JSmh3zYqM5/+N1w3+H3357AJq4=; fh=nOfeyKJ+nsdHQW+hT5dTYkcJkoGeVWdIik7wSqxw+2E=; b=fyjy92oJxkgtbi3AEGH/XgsBVrid2L8/3I3p5s/sFP7peC2a2l8Tw3ajY81Dp5P7ib +D8PS4ahrQ1ClhwiKYWrmfSSgEPXe0Iioih2YXJuOJ8hokbLpuQAghDzOkvceMiIBT9N I60z2nWUh+tpjdZpAEloSJuNJer4uLU6Jn1N0VL10Ec5js7yXiyAQjpURsrv7oRZcSFf ifHo83Q4IMGp/YqQrZTJpMHg5/45IFGMgohOQSAme3dXzY5CW3esgTri6sao/adKT+nh XL620Ec8e73KAIXKqcyQ3Cx/yUL6+khdoV9dWieTDS+ivc8mk8To5hxpC91xZC4Wdhj6 lDNA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-195504-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-195504-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id d9443c01a7336-1f610cfc697si4779475ad.316.2024.05.30.07.17.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 May 2024 07:17:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-195504-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-195504-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-195504-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 0EC992848D4 for ; Thu, 30 May 2024 14:17:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A968D17D8AB; Thu, 30 May 2024 14:16:28 +0000 (UTC) Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 1471317623B; Thu, 30 May 2024 14:16:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717078588; cv=none; b=uFgwtoZWrf5mb7xCiGC0nyP5XfFo1XtCuPJaVYalzqye3p8fUcGreojjETLEvNg398fBBvcKgYWd7DRkT7CVEEKSmePymN4Bp4Df9MJG0tFM+hxBHw8y1ikaQJs7X5pKsVOZmzXdGJhF2Eb2W09BKcGVtGVfjvCHKa41uvNjazA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717078588; c=relaxed/simple; bh=XL8MGduAVbwn1gpxi4V0hN5u03u0LCLTzNM+RF9zS3s=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=KgBVfpwzMDh4rZz81MYFXj5+B0xVsPXD8KbAsg/VEsIp1NUSRzY0zc8eUeJTeyoaCqCsZG2TSQdVhetcMVX/STbkI5z7D8HmFmRR7djjfOhKFPFgySYBvyrPpzerPAKSU0xOtwrk0CSaKu4BTw6j3VTJEYh8byERYZtTUimiy5g= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5EBFDC2BBFC; Thu, 30 May 2024 14:16:22 +0000 (UTC) Date: Thu, 30 May 2024 19:46:18 +0530 From: Manivannan Sadhasivam To: Shashank Babu Chinta Venkata Cc: jingoohan1@gmail.com, gustavo.pimentel@synopsys.com, andersson@kernel.org, agross@kernel.org, konrad.dybcio@linaro.org, mani@kernel.org, quic_msarkar@quicinc.com, quic_kraravin@quicinc.com, Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Yoshihiro Shimoda , Serge Semin , Conor Dooley , linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-msm@vger.kernel.org Subject: Re: [PATCH v4 1/3] PCI: qcom: Refactor common code Message-ID: <20240530141618.GB2770@thinkpad> References: <20240501163610.8900-1-quic_schintav@quicinc.com> <20240501163610.8900-2-quic_schintav@quicinc.com> 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-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20240501163610.8900-2-quic_schintav@quicinc.com> On Wed, May 01, 2024 at 09:35:32AM -0700, Shashank Babu Chinta Venkata wrote: > Refactor common code from RC(Root Complex) and EP(End Point) > drivers and move them to a common driver. This acts as placeholder > for common source code for both drivers, thus avoiding duplication. > > Signed-off-by: Shashank Babu Chinta Venkata > --- > drivers/pci/controller/dwc/Kconfig | 5 ++ > drivers/pci/controller/dwc/Makefile | 1 + > drivers/pci/controller/dwc/pcie-qcom-common.c | 76 +++++++++++++++++++ > drivers/pci/controller/dwc/pcie-qcom-common.h | 12 +++ > drivers/pci/controller/dwc/pcie-qcom-ep.c | 39 +--------- > drivers/pci/controller/dwc/pcie-qcom.c | 69 +++-------------- > 6 files changed, 108 insertions(+), 94 deletions(-) > create mode 100644 drivers/pci/controller/dwc/pcie-qcom-common.c > create mode 100644 drivers/pci/controller/dwc/pcie-qcom-common.h > > diff --git a/drivers/pci/controller/dwc/Kconfig b/drivers/pci/controller/dwc/Kconfig > index 8afacc90c63b..1599550cd628 100644 > --- a/drivers/pci/controller/dwc/Kconfig > +++ b/drivers/pci/controller/dwc/Kconfig > @@ -265,12 +265,16 @@ config PCIE_DW_PLAT_EP > order to enable device-specific features PCI_DW_PLAT_EP must be > selected. > > +config PCIE_QCOM_COMMON > + bool > + > config PCIE_QCOM > bool "Qualcomm PCIe controller (host mode)" > depends on OF && (ARCH_QCOM || COMPILE_TEST) > depends on PCI_MSI > select PCIE_DW_HOST > select CRC8 > + select PCIE_QCOM_COMMON > help > Say Y here to enable PCIe controller support on Qualcomm SoCs. The > PCIe controller uses the DesignWare core plus Qualcomm-specific > @@ -281,6 +285,7 @@ config PCIE_QCOM_EP > depends on OF && (ARCH_QCOM || COMPILE_TEST) > depends on PCI_ENDPOINT > select PCIE_DW_EP > + select PCIE_QCOM_COMMON > help > Say Y here to enable support for the PCIe controllers on Qualcomm SoCs > to work in endpoint mode. The PCIe controller uses the DesignWare core > diff --git a/drivers/pci/controller/dwc/Makefile b/drivers/pci/controller/dwc/Makefile > index bac103faa523..3f557dd60c38 100644 > --- a/drivers/pci/controller/dwc/Makefile > +++ b/drivers/pci/controller/dwc/Makefile > @@ -14,6 +14,7 @@ obj-$(CONFIG_PCI_LAYERSCAPE) += pci-layerscape.o > obj-$(CONFIG_PCI_LAYERSCAPE_EP) += pci-layerscape-ep.o > obj-$(CONFIG_PCIE_QCOM) += pcie-qcom.o > obj-$(CONFIG_PCIE_QCOM_EP) += pcie-qcom-ep.o > +obj-$(CONFIG_PCIE_QCOM_COMMON) += pcie-qcom-common.o > obj-$(CONFIG_PCIE_ARMADA_8K) += pcie-armada8k.o > obj-$(CONFIG_PCIE_ARTPEC6) += pcie-artpec6.o > obj-$(CONFIG_PCIE_ROCKCHIP_DW_HOST) += pcie-dw-rockchip.o > diff --git a/drivers/pci/controller/dwc/pcie-qcom-common.c b/drivers/pci/controller/dwc/pcie-qcom-common.c > new file mode 100644 > index 000000000000..228d9eec0222 > --- /dev/null > +++ b/drivers/pci/controller/dwc/pcie-qcom-common.c > @@ -0,0 +1,76 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright (c) 2014-2015, 2020 The Linux Foundation. All rights reserved. > + * Copyright (c) 2015, 2021 Linaro Limited. > + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. > + * > + */ > + > +#include > +#include > + > +#include "../../pci.h" > +#include "pcie-designware.h" > +#include "pcie-qcom-common.h" > + > +#define QCOM_PCIE_LINK_SPEED_TO_BW(speed) \ > + Mbps_to_icc(PCIE_SPEED2MBS_ENC(pcie_link_speed[speed])) > + > +struct icc_path *qcom_pcie_common_icc_get_resource(struct dw_pcie *pci, const char *path) > +{ > + struct icc_path *icc_mem_p; > + > + icc_mem_p = devm_of_icc_get(pci->dev, path); Just 'icc_path' since we will be voting for 'cpu-pcie' path as well. Also just return directly since there are error checks performed by the callers. > + if (IS_ERR_OR_NULL(icc_mem_p)) > + return PTR_ERR(icc_mem_p); > + return icc_mem_p; > +} > +EXPORT_SYMBOL_GPL(qcom_pcie_common_icc_get_resource); > + > +int qcom_pcie_common_icc_init(struct dw_pcie *pci, struct icc_path *icc_mem) You need to take the bandwidth as an argument since the bandwidth varies between 'cpu-pcie' and 'pcie-mem'. > +{ > + int ret; > + > + /* > + * Some Qualcomm platforms require interconnect bandwidth constraints > + * to be set before enabling interconnect clocks. > + * > + * Set an initial peak bandwidth corresponding to single-lane Gen 1 > + * for the pcie-mem path. > + */ > + ret = icc_set_bw(icc_mem, 0, QCOM_PCIE_LINK_SPEED_TO_BW(1)); > + if (ret) { > + dev_err(pci->dev, "Failed to set interconnect bandwidth: %d\n", > + ret); > + return ret; > + } > + > + return 0; > +} > +EXPORT_SYMBOL_GPL(qcom_pcie_common_icc_init); > + > +void qcom_pcie_common_icc_update(struct dw_pcie *pci, struct icc_path *icc_mem) s/icc_mem/icc_path - Mani -- மணிவண்ணன் சதாசிவம்