Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp310052yba; Wed, 24 Apr 2019 01:21:47 -0700 (PDT) X-Google-Smtp-Source: APXvYqzUvKetOT7ZC1XFR+q2J0AXgzj2XBhrF0Bdt5tauyMk+LJLoveisvN8uN4EV74gQbuUVshs X-Received: by 2002:a63:2bc8:: with SMTP id r191mr28938281pgr.72.1556094107127; Wed, 24 Apr 2019 01:21:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556094107; cv=none; d=google.com; s=arc-20160816; b=LaaTQIQKzbFgO8wpwHyaTIiDcIwCvm87QziJGv+XitWoFYIGwC7ZssYsUps7iXgj9V WzK3w49bkhVbngJEh8v05w/1zRfEgHm/c7stJZZYJ8KpeCutjrTqpdHxb2W06X58bXUV UpwT3X+o4jJubEuMxrs687O1S7grJu1vOXXmQ0Q4i/yPQMA1nzsM+2F7ZXNyyCv4hDMe D5XTVdRiE9fY0yQ58DF8sohVYhjDrRfjGWRJ+hJMLalJTKagl19b1QAnHjdkmO5SYqm6 jkl8pE9PaidbrG0eW9YUAqmdBYKAcu08Vymc+kw9m8ptWcR3pAbyaWOUGq57Wqb+Xh3u 73NA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=NND4OJSDdeoJxxAAUNHF7lQ6U+GCqeaVOTZ8tX3YgrY=; b=HfXG0tFabOVXRthLQv0TdjX2YUGyL3Ejla+v/ZHeU3bKwq9quGzOO97a3HsFC42S9e +6wl0Jp3FQfX7XRHBS1DGDE4ksdO2BxcpH0gmu/KE4F01xbqrENNoCSEvwV7lavkHSY+ DjySFnHc4mriOQ+kuJzBnw/eKwlmK1+tR5xs0OaRCaqx7paStRld+EZLZIXnn1kjUWF6 05K2I5JTpAZ6V+ErfM8SS3AdTNN5RWk0KnW9SSXvyrTcuqc4ehmeScuhq300YSAWSyFP HkfZjEuD0jhFGQX+e0O+YVHJNk2ECrCVuwyCfr56cRLHyITVbfDW8A89RKqEzSewN7Pe uCNw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@synopsys.com header.s=mail header.b=Dae8FBa9; 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=NONE dis=NONE) header.from=synopsys.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c13si19565458pfb.67.2019.04.24.01.21.30; Wed, 24 Apr 2019 01:21:47 -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=@synopsys.com header.s=mail header.b=Dae8FBa9; 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=NONE dis=NONE) header.from=synopsys.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729383AbfDXIUh (ORCPT + 99 others); Wed, 24 Apr 2019 04:20:37 -0400 Received: from smtprelay-out1.synopsys.com ([198.182.47.102]:59762 "EHLO smtprelay-out1.synopsys.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727361AbfDXIUh (ORCPT ); Wed, 24 Apr 2019 04:20:37 -0400 X-Greylist: delayed 594 seconds by postgrey-1.27 at vger.kernel.org; Wed, 24 Apr 2019 04:20:36 EDT Received: from mailhost.synopsys.com (dc2-mailhost2.synopsys.com [10.12.135.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 71A03C0AE1; Wed, 24 Apr 2019 08:10:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1556093443; bh=zgqe5QFb/nyADjudnrLf9sfX09Q+4PBQMHZigRASaiA=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=Dae8FBa9Ihtd/cFx0J1nb644e/19l0YsqGmH7iJ8r3nmCGhOYgZh6bF3Q+Gbtt8Hh +Qfz2C4BtCY5z1+syMFkQzXHY14aH0C9cW5s1bxs+tn+IEdfgTBaePCZCQs1v1Y5ur Yrwzp79sgPZZKSzmK6yAevJYS6mswiVkqvUUi40MPcJCtdK61o3aHaKzfx+BbEffFD cYDl5/iY22K8NRpaZdIWaLNAWAc1+22uQmrd9SSJqoUjGp7Psgz+/z94B7HZqOj8FE BnpXxyQmRLTdxex5eciD/CVmqPey8+ShcW91g7uY+mnQko6GA6YcqbgOvx+2TzL/+E VlL298dMXftJg== Received: from US01WXQAHTC1.internal.synopsys.com (us01wxqahtc1.internal.synopsys.com [10.12.238.230]) (using TLSv1.2 with cipher AES128-SHA256 (128/128 bits)) (No client certificate requested) by mailhost.synopsys.com (Postfix) with ESMTPS id 42736A009D; Wed, 24 Apr 2019 08:10:39 +0000 (UTC) Received: from DE02WEHTCB.internal.synopsys.com (10.225.19.94) by US01WXQAHTC1.internal.synopsys.com (10.12.238.230) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 24 Apr 2019 01:10:20 -0700 Received: from DE02WEMBXA.internal.synopsys.com ([fe80::a014:7216:77d:d55c]) by DE02WEHTCB.internal.synopsys.com ([::1]) with mapi id 14.03.0415.000; Wed, 24 Apr 2019 10:10:19 +0200 From: Gustavo Pimentel To: Bjorn Helgaas , Vidya Sagar CC: "lorenzo.pieralisi@arm.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "thierry.reding@gmail.com" , "jonathanh@nvidia.com" , "kishon@ti.com" , "catalin.marinas@arm.com" , "will.deacon@arm.com" , "jingoohan1@gmail.com" , "gustavo.pimentel@synopsys.com" , "mperttunen@nvidia.com" , "linux-pci@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-tegra@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "kthota@nvidia.com" , "mmaddireddy@nvidia.com" , "sagar.tv@gmail.com" Subject: RE: [PATCH V4 05/16] PCI: dwc: Move config space capability search API Thread-Topic: [PATCH V4 05/16] PCI: dwc: Move config space capability search API Thread-Index: AQHU+a6CvEZAQf+NCUafu6E1lCfth6ZKEoQAgADjv3A= Date: Wed, 24 Apr 2019 08:10:19 +0000 Message-ID: <305100E33629484CBB767107E4246BBB0A23062F@de02wembxa.internal.synopsys.com> References: <20190423082730.370-1-vidyas@nvidia.com> <20190423082730.370-6-vidyas@nvidia.com> <20190423203244.GD14616@google.com> In-Reply-To: <20190423203244.GD14616@google.com> Accept-Language: pt-PT, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-ref: =?us-ascii?Q?PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNcZ3VzdGF2b1xh?= =?us-ascii?Q?cHBkYXRhXHJvYW1pbmdcMDlkODQ5YjYtMzJkMy00YTQwLTg1ZWUtNmI4NGJh?= =?us-ascii?Q?MjllMzViXG1zZ3NcbXNnLTY0OGY0ZTI4LTY2NjgtMTFlOS05ODdkLWY4OTRj?= =?us-ascii?Q?MjczODA0MlxhbWUtdGVzdFw2NDhmNGUyYS02NjY4LTExZTktOTg3ZC1mODk0?= =?us-ascii?Q?YzI3MzgwNDJib2R5LnR4dCIgc3o9IjMzNDAiIHQ9IjEzMjAwNTY3MDE3MTQx?= =?us-ascii?Q?NTU3MSIgaD0iaFNqZElybmVPZjNWZW0vMGVYbURHUlNHZmJ3PSIgaWQ9IiIg?= =?us-ascii?Q?Ymw9IjAiIGJvPSIxIiBjaT0iY0FBQUFFUkhVMVJTUlVGTkNnVUFBQlFKQUFB?= =?us-ascii?Q?VGxPY21kZnJVQVp6cmI4VnM2T3dsbk90dnhXem83Q1VPQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUhBQUFBQ2tDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUVBQVFBQkFBQUFGdGJCcHdBQUFBQUFBQUFBQUFBQUFKNEFBQUJtQUdrQWJn?= =?us-ascii?Q?QmhBRzRBWXdCbEFGOEFjQUJzQUdFQWJnQnVBR2tBYmdCbkFGOEFkd0JoQUhR?= =?us-ascii?Q?QVpRQnlBRzBBWVFCeUFHc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?RUFBQUFBQUFBQUFnQUFBQUFBbmdBQUFHWUFid0IxQUc0QVpBQnlBSGtBWHdC?= =?us-ascii?Q?d0FHRUFjZ0IwQUc0QVpRQnlBSE1BWHdCbkFHWUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFB?= =?us-ascii?Q?QUFBQ2VBQUFBWmdCdkFIVUFiZ0JrQUhJQWVRQmZBSEFBWVFCeUFIUUFiZ0Js?= =?us-ascii?Q?QUhJQWN3QmZBSE1BWVFCdEFITUFkUUJ1QUdjQVh3QmpBRzhBYmdCbUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUo0QUFBQm1BRzhB?= =?us-ascii?Q?ZFFCdUFHUUFjZ0I1QUY4QWNBQmhBSElBZEFCdUFHVUFjZ0J6QUY4QWN3QmhB?= =?us-ascii?Q?RzBBY3dCMUFHNEFad0JmQUhJQVpRQnpBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFFQUFBQUFBQUFBQWdBQUFBQUFuZ0FBQUdZQWJ3QjFBRzRBWkFCeUFIa0FY?= =?us-ascii?Q?d0J3QUdFQWNnQjBBRzRBWlFCeUFITUFYd0J6QUcwQWFRQmpBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNB?= =?us-ascii?Q?QUFBQUFDZUFBQUFaZ0J2QUhVQWJnQmtBSElBZVFCZkFIQUFZUUJ5QUhRQWJn?= =?us-ascii?Q?QmxBSElBY3dCZkFITUFkQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFJQUFBQUFBSjRBQUFCbUFH?= =?us-ascii?Q?OEFkUUJ1QUdRQWNnQjVBRjhBY0FCaEFISUFkQUJ1QUdVQWNnQnpBRjhBZEFC?= =?us-ascii?Q?ekFHMEFZd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUVBQUFBQUFBQUFBZ0FBQUFBQW5nQUFBR1lBYndCMUFHNEFaQUJ5QUhr?= =?us-ascii?Q?QVh3QndBR0VBY2dCMEFHNEFaUUJ5QUhNQVh3QjFBRzBBWXdBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFB?= =?us-ascii?Q?Q0FBQUFBQUNlQUFBQVp3QjBBSE1BWHdCd0FISUFid0JrQUhVQVl3QjBBRjhB?= =?us-ascii?Q?ZEFCeUFHRUFhUUJ1QUdrQWJnQm5BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFBQUFKNEFBQUJ6?= =?us-ascii?Q?QUdFQWJBQmxBSE1BWHdCaEFHTUFZd0J2QUhVQWJnQjBBRjhBY0FCc0FHRUFi?= =?us-ascii?Q?Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBRUFBQUFBQUFBQUFnQUFBQUFBbmdBQUFITUFZUUJzQUdVQWN3QmZB?= =?us-ascii?Q?SEVBZFFCdkFIUUFaUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFB?= =?us-ascii?Q?QUFDQUFBQUFBQ2VBQUFBY3dCdUFIQUFjd0JmQUd3QWFRQmpBR1VBYmdCekFH?= =?us-ascii?Q?VUFYd0IwQUdVQWNnQnRBRjhBTVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUo0QUFB?= =?us-ascii?Q?QnpBRzRBY0FCekFGOEFiQUJwQUdNQVpRQnVBSE1BWlFCZkFIUUFaUUJ5QUcw?= =?us-ascii?Q?QVh3QnpBSFFBZFFCa0FHVUFiZ0IwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFBQUFuZ0FBQUhZQVp3QmZBR3NBWlFC?= =?us-ascii?Q?NUFIY0Fid0J5QUdRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFB?= =?us-ascii?Q?QUFBQUNBQUFBQUFBPSIvPjwvbWV0YT4=3D?= x-originating-ip: [10.107.25.131] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Apr 23, 2019 at 21:32:44, Bjorn Helgaas =20 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. > >=20 > > Signed-off-by: Vidya Sagar > > Acked-by: Gustavo Pimentel > > --- > > Changes from [v3]: > > * Rebased to linux-next top of the tree > >=20 > > Changes from [v2]: > > * None > >=20 > > Changes from [v1]: > > * Removed dw_pcie_find_next_ext_capability() API from here and made a > > separate patch for that > >=20 > > drivers/pci/controller/dwc/pcie-designware.c | 33 ++++++++++++++++++++ > > drivers/pci/controller/dwc/pcie-designware.h | 2 ++ >=20 > You claim this is a "move", but I only see adds. Where did it move > *from*? I'm guessing something was lost during the rebase. On v3 version, the=20 removal was there. >=20 > 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. >=20 > > 2 files changed, 35 insertions(+) > >=20 > > 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) > > =20 > > +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 =3D dw_pcie_readw_dbi(pci, cap_ptr); > > + next_cap_ptr =3D (reg & 0xff00) >> 8; > > + cap_id =3D (reg & 0x00ff); > > + > > + if (!next_cap_ptr || cap_id > PCI_CAP_ID_MAX) > > + return 0; > > + > > + if (cap_id =3D=3D 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 =3D dw_pcie_readw_dbi(pci, PCI_CAPABILITY_LIST); > > + next_cap_ptr =3D (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) > > =20 > > +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); > > =20 > > --=20 > > 2.17.1 > >=20