Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp111903yba; Tue, 23 Apr 2019 20:44:54 -0700 (PDT) X-Google-Smtp-Source: APXvYqwQ1Q8zrbDWBhIhpGeiceEd/5pgSjEkMtjYJnzgaU7JibjgYq3HGijs6CRq3LXfQTAPCvAM X-Received: by 2002:a65:430a:: with SMTP id j10mr28827103pgq.143.1556077494694; Tue, 23 Apr 2019 20:44:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556077494; cv=none; d=google.com; s=arc-20160816; b=dbGbTYacx2d1Gtk0n4KLlnuKZBf2pQWTKX9/oEdb1vy1YrMsPmXU6hiPkqkXUZJbxG yelhQLNrSw2sAd1g/QOcPQVpl1XhjP4GRTnUHy2nikkOiYnny46A7mxv+azwchLG30u/ 7M+BGRElwCW+ozPvdhf2chhQOnktmWh3NF3lUPuHAtoDzCNKEpfGlZ+/DitVHyAKpqNK RSuE+/qbFPnJwIV66KHH4rVXurOoPMquT7cNhTXqRjW3TO7p0zF2Q+QyIeE2b35jPD7G dsnEKeXLh/04bF+orvLvjhUwMEg1sw7gh9blIFxcTvbaG2LnSbo8QtvKqXaXMZBZyCsv d8iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=U1f4bN/dTOspS8HdN/r49J+WORAZUSN60oP2hQdEZsk=; b=noglUNe4NXnnn/TrR5DN9shInQjqnhWzldGrgFxp4KyIqSBad9HPMiQLNuRF+73+ml /Zy0O6IIxej05IlLqmHhqDbRAgH+0c1OxjX2ga1sp6iMWHQ3C986nblVSOXwClKeZQet V5zM3/pzi2WSgNqV/WjPYbnr2SAIMAr0shqgtml52MUxZsRMzVmxmxyRWOt7UTS8/6aF nuO4RD+2gp72ake/hSLNB3kKFAkohAOjZWW28q6Hf2yA5s+JoO1Vqe+eMBjoKrhXQobk g9UQvbNysyZ9JoVAbQQKW3OazOQrDaNg/BDPDDCsDTC+oyg00S94roXKqW8yzDyGCHIP u4kQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jpglyMx+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g1si16472151pgd.269.2019.04.23.20.44.39; Tue, 23 Apr 2019 20:44:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jpglyMx+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729027AbfDXDm4 (ORCPT + 99 others); Tue, 23 Apr 2019 23:42:56 -0400 Received: from mail-it1-f195.google.com ([209.85.166.195]:35085 "EHLO mail-it1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726802AbfDXDm4 (ORCPT ); Tue, 23 Apr 2019 23:42:56 -0400 Received: by mail-it1-f195.google.com with SMTP id w15so3924525itc.0; Tue, 23 Apr 2019 20:42:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=U1f4bN/dTOspS8HdN/r49J+WORAZUSN60oP2hQdEZsk=; b=jpglyMx+pc488+vcVFyRGymEX91n6hwgogEyLWz6mzihfzvF3/zJ32JeuYBVqx+Kkv MRKzqOa81+VcAYDrS09+VoYGCz4vRDRmFLvU1y9G7A0CLVxPmgPQ8W1fuXSBbBBGXDBA 2ivCwdeBE9sk4AB0qaP/bWRm3cn1BmNJHLnh5gswXntUKVgi+OtOTJn1XNgDUnBpjugd ExPPoa+cTJDQec1aXjCtADyOxi0O2uIiw5EV1Tm4mKuB17KrzLH9EXS32f2Nd4WDhAg9 +2mv2GRJ9q9VNTSJyR8CYXzjaZesfSmldN0mZTk/5Z8O8Dyyx+idP88yg6i8wxAtFpYr obyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=U1f4bN/dTOspS8HdN/r49J+WORAZUSN60oP2hQdEZsk=; b=tUK4iCv0LAnyG/iYbqYRLismNj6ge5dzSlW0zCgVmzVj4q9W2YVS5WfxuSRciyr+0U z2FtNdHI07Xd3lUrZCYvfJvlE2LIk+kRs9jkEL6QnJaz+RwX2z6jSVCmjNd+224RfZuI OqBgs9F2l9jBh4eF3eSdO9QZ1GBIEr8n9PznQ3OpG5uOsujLUSfVoNvcL00y1KjEhWg0 oWnRWKzsIZ2Ipz4KDsVI4CUQPwfTqb1HaGps/TqXvk6Esb/2hz9/21cOZXbH63M01AE3 1BWvZtXKYhIgh52vIqCep8PQm5rh2LIWJIEbzI1cgBJcV8vOnUhfMll6ZX12qDZhzk5q fudg== X-Gm-Message-State: APjAAAU+SD3PVDI/fDuqZqUs1BrzlJNZYLaCxr4IcjyeccRPzTerEsnB 9LBPzLBF9ULgEG7ajmh5NyZcg5cam5feDEMXw1c= X-Received: by 2002:a24:d45:: with SMTP id 66mr5284343itx.9.1556077374803; Tue, 23 Apr 2019 20:42:54 -0700 (PDT) MIME-Version: 1.0 References: <20190423082730.370-1-vidyas@nvidia.com> <20190423082730.370-6-vidyas@nvidia.com> <20190423203244.GD14616@google.com> <22c7a99b-2d6c-e49b-43b0-219c60f7e5e9@nvidia.com> In-Reply-To: <22c7a99b-2d6c-e49b-43b0-219c60f7e5e9@nvidia.com> From: Oliver Date: Wed, 24 Apr 2019 13:42:43 +1000 Message-ID: Subject: Re: [PATCH V4 05/16] PCI: dwc: Move config space capability search API To: Vidya Sagar Cc: Bjorn Helgaas , lorenzo.pieralisi@arm.com, Rob Herring , Mark Rutland , thierry.reding@gmail.com, jonathanh@nvidia.com, kishon@ti.com, Catalin Marinas , Will Deacon , jingoohan1@gmail.com, gustavo.pimentel@synopsys.com, mperttunen@nvidia.com, linux-pci@vger.kernel.org, Device Tree , linux-tegra@vger.kernel.org, Linux Kernel Mailing List , linux-arm-kernel@lists.infradead.org, kthota@nvidia.com, mmaddireddy@nvidia.com, sagar.tv@gmail.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 24, 2019 at 1:12 PM Vidya Sagar wrote: > > On 4/24/2019 2:02 AM, Bjorn Helgaas wrote: > > On Tue, Apr 23, 2019 at 01:57:19PM +0530, Vidya Sagar wrote: > >> Move PCIe config space capability search API to common DesignWare file > >> as this can be used by both host and ep mode codes. > >> > >> Signed-off-by: Vidya Sagar > >> Acked-by: Gustavo Pimentel > >> --- > >> Changes from [v3]: > >> * Rebased to linux-next top of the tree > >> > >> Changes from [v2]: > >> * None > >> > >> Changes from [v1]: > >> * Removed dw_pcie_find_next_ext_capability() API from here and made a > >> separate patch for that > >> > >> drivers/pci/controller/dwc/pcie-designware.c | 33 ++++++++++++++++++++ > >> drivers/pci/controller/dwc/pcie-designware.h | 2 ++ > > > > You claim this is a "move", but I only see adds. Where did it move > > *from*? > These are supposed to be moved from pcie-designware-ep.c file. That was the case > with my old patches but when I rebased them onto ToT, I missed the change that > removes them from pcie-designware-ep.c file. Thanks for catching this. I'll > address it in the next patch. > > > > > While you're at it, can you add a comment in the code about why we > > can't use the regular pci_find_capability() interface? It's really a > > shame to have to reimplement that. > Regular pci_find_capability() uses 'struct pci_dev *dev' pointer and can be used > only after device enumeration is done. Whereas, these APIs are used particularly > before link up and use 'struct dw_pcie *pci' pointer. pci_bus_find_capability() can be used without enumerating the devices if you have a pci_bus. It's probably not worth using here though since you need this code anyway for endpoint mode. > > > > >> 2 files changed, 35 insertions(+) > >> > >> diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c > >> index 8e0081ccf83b..6a98135244d6 100644 > >> --- a/drivers/pci/controller/dwc/pcie-designware.c > >> +++ b/drivers/pci/controller/dwc/pcie-designware.c > >> @@ -20,6 +20,39 @@ > >> #define PCIE_PHY_DEBUG_R1_LINK_UP (0x1 << 4) > >> #define PCIE_PHY_DEBUG_R1_LINK_IN_TRAINING (0x1 << 29) > >> > >> +static u8 __dw_pcie_find_next_cap(struct dw_pcie *pci, u8 cap_ptr, > >> + u8 cap) > >> +{ > >> + u8 cap_id, next_cap_ptr; > >> + u16 reg; > >> + > >> + reg = dw_pcie_readw_dbi(pci, cap_ptr); > >> + next_cap_ptr = (reg & 0xff00) >> 8; > >> + cap_id = (reg & 0x00ff); > >> + > >> + if (!next_cap_ptr || cap_id > PCI_CAP_ID_MAX) > >> + return 0; > >> + > >> + if (cap_id == cap) > >> + return cap_ptr; > >> + > >> + return __dw_pcie_find_next_cap(pci, next_cap_ptr, cap); > >> +} > >> + > >> +u8 dw_pcie_find_capability(struct dw_pcie *pci, u8 cap) > >> +{ > >> + u8 next_cap_ptr; > >> + u16 reg; > >> + > >> + reg = dw_pcie_readw_dbi(pci, PCI_CAPABILITY_LIST); > >> + next_cap_ptr = (reg & 0x00ff); > >> + > >> + if (!next_cap_ptr) > >> + return 0; > >> + > >> + return __dw_pcie_find_next_cap(pci, next_cap_ptr, cap); > >> +} > >> + > >> int dw_pcie_read(void __iomem *addr, int size, u32 *val) > >> { > >> if (!IS_ALIGNED((uintptr_t)addr, size)) { > >> diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h > >> index 9ee98ced1ef6..35160b4ce929 100644 > >> --- a/drivers/pci/controller/dwc/pcie-designware.h > >> +++ b/drivers/pci/controller/dwc/pcie-designware.h > >> @@ -248,6 +248,8 @@ struct dw_pcie { > >> #define to_dw_pcie_from_ep(endpoint) \ > >> container_of((endpoint), struct dw_pcie, ep) > >> > >> +u8 dw_pcie_find_capability(struct dw_pcie *pci, u8 cap); > >> + > >> int dw_pcie_read(void __iomem *addr, int size, u32 *val); > >> int dw_pcie_write(void __iomem *addr, int size, u32 val); > >> > >> -- > >> 2.17.1 > >> >