From: thierry.reding@avionic-design.de (Thierry Reding)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 01/17] of/pci: Provide support for parsing PCI DT ranges property
Date: Fri, 22 Mar 2013 11:12:39 +0100 [thread overview]
Message-ID: <20130322101238.GA22929@avionic-0098.mockup.avionic-design.de> (raw)
In-Reply-To: <1363887025-19931-2-git-send-email-thomas.petazzoni@free-electrons.com>
On Thu, Mar 21, 2013 at 06:30:09PM +0100, Thomas Petazzoni wrote:
> From: Andrew Murray <Andrew.Murray@arm.com>
>
> 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.
>
> Signed-off-by: Andrew Murray <Andrew.Murray@arm.com>
> Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
>
> Compared to the v2 sent by Andrew Murray, Thomas Petazzoni did:
>
> * Add a memset() on the struct of_pci_range_iter when starting the
> for loop in for_each_pci_range(). Otherwise, with an uninitialized
> of_pci_range_iter, of_pci_process_ranges() may crash.
This sounds like you're trying to do too much within the for loop. When
we discussed this previously I had a vague idea that this functionality
could be wrapped into something a bit more object-like.
What I had in mind was something like:
struct of_pci_range_parser;
struct of_pci_range;
struct of_pci_range_parser parser;
struct of_pci_range range;
err = of_pci_range_parser(&parser, np);
if (err < 0)
return err;
for_each_of_pci_range(range, parser) {
struct resource res;
...
usage of range similar to iterator
...
of_pci_range_to_resource(&res, &range);
}
In the above the of_pci_range structure pretty much replaces the
iterator and the whole is wrapped up within a parser structure to give
some extra flexibility and provides for easier (or more structured)
setup compared to doing all of it within the loop statement.
But aside from the (perceived?) increased robustness there's not a lot
of technical benefit over your implementation, so it isn't a very hard
objection. I find it to be a little more encapsulated and therefore
easier to work with, but that's possibly just a matter of taste.
Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130322/2d6a0f6d/attachment.sig>
next prev parent reply other threads:[~2013-03-22 10:12 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-21 17:30 [PATCH v5 00/17] PCIe support for the Armada 370 and Armada XP SoCs Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 01/17] of/pci: Provide support for parsing PCI DT ranges property Thomas Petazzoni
2013-03-22 10:00 ` Andrew Murray
2013-03-22 10:12 ` Thierry Reding [this message]
2013-03-22 10:20 ` Thomas Petazzoni
2013-03-22 11:03 ` Andrew Murray
2013-03-21 17:30 ` [PATCH v5 02/17] of/pci: Add of_pci_get_devfn() function Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 03/17] of/pci: Add of_pci_parse_bus_range() function Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 04/17] pci: infrastructure to add drivers in drivers/pci/host Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 05/17] arm: pci: add a align_resource hook Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 06/17] clk: mvebu: create parent-child relation for PCIe clocks on Armada 370 Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 07/17] clk: mvebu: add more PCIe clocks for Armada XP Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 08/17] pci: PCIe driver for Marvell Armada 370/XP systems Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 09/17] arm: mvebu: PCIe support is now available on mvebu Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 10/17] arm: mvebu: add PCIe Device Tree informations for Armada 370 Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 11/17] arm: mvebu: add PCIe Device Tree informations for Armada XP Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 12/17] arm: mvebu: PCIe Device Tree informations for OpenBlocks AX3-4 Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 13/17] arm: mvebu: PCIe Device Tree informations for Armada XP DB Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 14/17] arm: mvebu: PCIe Device Tree informations for Armada 370 Mirabox Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 15/17] arm: mvebu: PCIe Device Tree informations for Armada 370 DB Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 16/17] arm: mvebu: PCIe Device Tree informations for Armada XP GP Thomas Petazzoni
2013-03-21 17:30 ` [PATCH v5 17/17] arm: mvebu: update defconfig with PCI and USB support 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=20130322101238.GA22929@avionic-0098.mockup.avionic-design.de \
--to=thierry.reding@avionic-design.de \
--cc=linux-arm-kernel@lists.infradead.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).