From: Rob Herring <robherring2@gmail.com>
To: Andrew Murray <Andrew.Murray@arm.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"devicetree-discuss@lists.ozlabs.org"
<devicetree-discuss@lists.ozlabs.org>,
Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
"rob.herring@calxeda.com" <rob.herring@calxeda.com>,
Grant Likely <grant.likely@secretlab.ca>,
Thierry Reding <thierry.reding@avionic-design.de>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
Linus Walleij <linus.walleij@linaro.org>,
Liviu Dudau <Liviu.Dudau@arm.com>
Subject: Re: [RFC PATCH RESEND v2] of/pci: Provide support for parsing PCI DT ranges property
Date: Fri, 01 Mar 2013 09:13:34 -0600 [thread overview]
Message-ID: <5130C59E.8020702@gmail.com> (raw)
In-Reply-To: <1362140616-19346-1-git-send-email-Andrew.Murray@arm.com>
On 03/01/2013 06:23 AM, Andrew Murray wrote:
> This patch factors out common implementations patterns to reduce overall kernel
> code and provide a means for host bridge drivers to directly obtain struct
> resources from the DT's ranges property without relying on architecture specific
> DT handling. This will make it easier to write archiecture independent host bridge
> drivers and mitigate against further duplication of DT parsing code.
>
> This patch can be used in the following way:
>
> struct of_pci_range_iter iter;
> for_each_of_pci_range(&iter, np) {
>
> //directly access properties of the address range, e.g.:
> //iter.pci_space, iter.pci_addr, iter.cpu_addr, iter.size or
> //iter.flags
>
> //alternatively obtain a struct resource, e.g.:
> //struct resource res;
> //range_iter_fill_resource(iter, np, res);
> }
>
> Additionally the implementation takes care of adjacent ranges and merges them
> into a single range (as was the case with powerpc and microblaze).
>
> The modifications to microblaze, mips and powerpc have not been tested.
>
> v2:
> This follows on from suggestions made by Grant Likely
> (marc.info/?l=linux-kernel&m=136079602806328)
>
> Signed-off-by: Andrew Murray <Andrew.Murray@arm.com>
> Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
> ---
> arch/microblaze/pci/pci-common.c | 100 +++++++++++--------------------------
> arch/mips/pci/pci.c | 44 ++++-------------
> arch/powerpc/kernel/pci-common.c | 93 ++++++++++-------------------------
> drivers/of/address.c | 54 ++++++++++++++++++++
> include/linux/of_address.h | 30 +++++++++++
> 5 files changed, 151 insertions(+), 170 deletions(-)
The thing is that this still leaves pci_process_bridge_OF_ranges
basically identical for microblaze and powerpc which is really what
needs to be moved out to common code. Obviously, struct pci_controller
vs. struct pci_sys_data on ARM is an issue, but they all have
fundamentally the same data.
All these common fields should be in a common PCI controller struct.
Perhaps introducing this with just what you need would work. Depending
how invasive moving those fields to a new struct is, you could have a
wrapper that just copies/translates the fields to the arch specific struct.
There's also things like ioremap of the i/o range. ARM uses a fixed
virtual address, so we need to do something different. Just returning
the i/o cpu_addr and moving the ioremap out of this function would solve
that.
Rob
next prev parent reply other threads:[~2013-03-01 15:13 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-01 12:23 [RFC PATCH RESEND v2] of/pci: Provide support for parsing PCI DT ranges property Andrew Murray
2013-03-01 15:13 ` Rob Herring [this message]
2013-03-06 9:42 ` Andrew Murray
2013-03-08 16:39 ` Andrew Murray
2013-03-21 16:06 ` Thomas Petazzoni
2013-03-22 9:39 ` Andrew Murray
2013-03-22 9:49 ` Thomas Petazzoni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5130C59E.8020702@gmail.com \
--to=robherring2@gmail.com \
--cc=Andrew.Murray@arm.com \
--cc=Liviu.Dudau@arm.com \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=grant.likely@secretlab.ca \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=rob.herring@calxeda.com \
--cc=thierry.reding@avionic-design.de \
--cc=thomas.petazzoni@free-electrons.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.