* [PATCH 00/16] PCI generic configuration space accessors
@ 2015-01-10 2:34 Rob Herring
2015-01-10 2:34 ` [PATCH 02/16] mips: add struct pci_ops member names to initialization Rob Herring
2015-01-22 21:03 ` [PATCH 00/16] PCI generic configuration space accessors Bjorn Helgaas
0 siblings, 2 replies; 4+ messages in thread
From: Rob Herring @ 2015-01-10 2:34 UTC (permalink / raw)
To: linux-kernel
Cc: Arnd Bergmann, linux-pci, Bjorn Helgaas, Rob Herring,
Alexandre Courbot, Benjamin Herrenschmidt, David Howells,
Greg Ungerer, Koichi Yasutake, Krzysztof Halasa, Linus Walleij,
Michael Ellerman, Michal Simek, Paul Mackerras, Ralf Baechle,
Russell King, Simon Horman, Sören Brinkmann, Stephen Warren,
Tanmay Inamdar, Thierry Reding, Will Deacon, cbe-oss-dev,
linux-am33-list, linux-arm-kernel, linux-mips, linuxppc-dev,
linux-sh, linux-tegra
This series adds common accessor functions for PCI configuration space
accesses. This supports most PCI hosts with memory mapped configuration
space like ECAM or hosts with memory mapped address/data registers. ECAM
is not generically supported by this series, but could be added on top
of this. While some hosts have standard address decoding which could be
common as well, the various checks on bus numbers and device numbers are
quite varied. It is unclear how much of that is really necessary or
could be common.
The first 4 patches are preparatory cleanup. Patch 5 introduces the
common accessors. The remaining patches convert several PCI host
controllers. This is in no way a complete list of host controllers. The
conversion of more hosts should be possible. The Designware controller
in particular should be able to be converted, but its config space
accessors are a mess of override-able functions that I've not gotten my
head around.
This series is available here [1].
Rob
[1] git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git pci-config-access
Rob Herring (16):
frv: add struct pci_ops member names to initialization
mips: add struct pci_ops member names to initialization
mn10300: add struct pci_ops member names to initialization
powerpc: add struct pci_ops member names to initialization
pci: introduce common pci config space accessors
ARM: cns3xxx: convert PCI to use generic config accesses
ARM: integrator: convert PCI to use generic config accesses
ARM: sa1100: convert PCI to use generic config accesses
ARM: ks8695: convert PCI to use generic config accesses
powerpc: fsl_pci: convert PCI to use generic config accesses
powerpc: powermac: convert PCI to use generic config accesses
pci/host: generic: convert to use generic config accesses
pci/host: rcar-gen2: convert to use generic config accesses
pci/host: tegra: convert to use generic config accesses
pci/host: xgene: convert to use generic config accesses
pci/host: xilinx: convert to use generic config accesses
arch/arm/mach-cns3xxx/pcie.c | 52 ++----
arch/arm/mach-integrator/pci_v3.c | 61 +-------
arch/arm/mach-ks8695/pci.c | 77 +--------
arch/arm/mach-sa1100/pci-nanoengine.c | 94 +----------
arch/frv/mb93090-mb00/pci-vdk.c | 4 +-
arch/mips/pci/pci-bcm1480.c | 4 +-
arch/mips/pci/pci-octeon.c | 4 +-
arch/mips/pci/pcie-octeon.c | 12 +-
arch/mn10300/unit-asb2305/pci.c | 4 +-
arch/powerpc/platforms/cell/celleb_scc_pciex.c | 4 +-
arch/powerpc/platforms/powermac/pci.c | 209 +++++--------------------
arch/powerpc/sysdev/fsl_pci.c | 46 +-----
drivers/pci/access.c | 87 ++++++++++
drivers/pci/host/pci-host-generic.c | 51 +-----
drivers/pci/host/pci-rcar-gen2.c | 51 +-----
drivers/pci/host/pci-tegra.c | 55 +------
drivers/pci/host/pci-xgene.c | 150 ++----------------
drivers/pci/host/pcie-xilinx.c | 88 ++---------
include/linux/pci.h | 11 ++
19 files changed, 212 insertions(+), 852 deletions(-)
--
2.1.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 02/16] mips: add struct pci_ops member names to initialization
2015-01-10 2:34 [PATCH 00/16] PCI generic configuration space accessors Rob Herring
@ 2015-01-10 2:34 ` Rob Herring
2015-01-22 21:03 ` [PATCH 00/16] PCI generic configuration space accessors Bjorn Helgaas
1 sibling, 0 replies; 4+ messages in thread
From: Rob Herring @ 2015-01-10 2:34 UTC (permalink / raw)
To: linux-kernel
Cc: Arnd Bergmann, linux-pci, Bjorn Helgaas, Rob Herring,
Ralf Baechle, linux-mips
Some instances of pci_ops initialization rely on the read/write members'
location in the struct. This is fragile and may break when adding new
members to the beginning of the struct.
Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
---
arch/mips/pci/pci-bcm1480.c | 4 ++--
arch/mips/pci/pci-octeon.c | 4 ++--
arch/mips/pci/pcie-octeon.c | 12 ++++++------
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/arch/mips/pci/pci-bcm1480.c b/arch/mips/pci/pci-bcm1480.c
index 5ec2a7b..f2355e3 100644
--- a/arch/mips/pci/pci-bcm1480.c
+++ b/arch/mips/pci/pci-bcm1480.c
@@ -173,8 +173,8 @@ static int bcm1480_pcibios_write(struct pci_bus *bus, unsigned int devfn,
}
struct pci_ops bcm1480_pci_ops = {
- bcm1480_pcibios_read,
- bcm1480_pcibios_write,
+ .read = bcm1480_pcibios_read,
+ .write = bcm1480_pcibios_write,
};
static struct resource bcm1480_mem_resource = {
diff --git a/arch/mips/pci/pci-octeon.c b/arch/mips/pci/pci-octeon.c
index d07e041..bedb72b 100644
--- a/arch/mips/pci/pci-octeon.c
+++ b/arch/mips/pci/pci-octeon.c
@@ -327,8 +327,8 @@ static int octeon_write_config(struct pci_bus *bus, unsigned int devfn,
static struct pci_ops octeon_pci_ops = {
- octeon_read_config,
- octeon_write_config,
+ .read = octeon_read_config,
+ .write = octeon_write_config,
};
static struct resource octeon_pci_mem_resource = {
diff --git a/arch/mips/pci/pcie-octeon.c b/arch/mips/pci/pcie-octeon.c
index 5e36c33..eb4a17b 100644
--- a/arch/mips/pci/pcie-octeon.c
+++ b/arch/mips/pci/pcie-octeon.c
@@ -1792,8 +1792,8 @@ static int octeon_dummy_write_config(struct pci_bus *bus, unsigned int devfn,
}
static struct pci_ops octeon_pcie0_ops = {
- octeon_pcie0_read_config,
- octeon_pcie0_write_config,
+ .read = octeon_pcie0_read_config,
+ .write = octeon_pcie0_write_config,
};
static struct resource octeon_pcie0_mem_resource = {
@@ -1813,8 +1813,8 @@ static struct pci_controller octeon_pcie0_controller = {
};
static struct pci_ops octeon_pcie1_ops = {
- octeon_pcie1_read_config,
- octeon_pcie1_write_config,
+ .read = octeon_pcie1_read_config,
+ .write = octeon_pcie1_write_config,
};
static struct resource octeon_pcie1_mem_resource = {
@@ -1834,8 +1834,8 @@ static struct pci_controller octeon_pcie1_controller = {
};
static struct pci_ops octeon_dummy_ops = {
- octeon_dummy_read_config,
- octeon_dummy_write_config,
+ .read = octeon_dummy_read_config,
+ .write = octeon_dummy_write_config,
};
static struct resource octeon_dummy_mem_resource = {
--
2.1.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH 00/16] PCI generic configuration space accessors
2015-01-10 2:34 [PATCH 00/16] PCI generic configuration space accessors Rob Herring
2015-01-10 2:34 ` [PATCH 02/16] mips: add struct pci_ops member names to initialization Rob Herring
@ 2015-01-22 21:03 ` Bjorn Helgaas
2015-01-22 23:47 ` Rob Herring
1 sibling, 1 reply; 4+ messages in thread
From: Bjorn Helgaas @ 2015-01-22 21:03 UTC (permalink / raw)
To: Rob Herring
Cc: linux-kernel, Arnd Bergmann, linux-pci, Alexandre Courbot,
Benjamin Herrenschmidt, David Howells, Greg Ungerer,
Koichi Yasutake, Krzysztof Halasa, Linus Walleij,
Michael Ellerman, Michal Simek, Paul Mackerras, Ralf Baechle,
Russell King, Simon Horman, Sören Brinkmann, Stephen Warren,
Tanmay Inamdar, Thierry Reding, Will Deacon, cbe-oss-dev,
linux-am33-list, linux-arm-kernel, linux-mips, linuxppc-dev,
linux-sh, linux-tegra
On Fri, Jan 09, 2015 at 08:34:34PM -0600, Rob Herring wrote:
> This series adds common accessor functions for PCI configuration space
> accesses. This supports most PCI hosts with memory mapped configuration
> space like ECAM or hosts with memory mapped address/data registers. ECAM
> is not generically supported by this series, but could be added on top
> of this. While some hosts have standard address decoding which could be
> common as well, the various checks on bus numbers and device numbers are
> quite varied. It is unclear how much of that is really necessary or
> could be common.
>
> The first 4 patches are preparatory cleanup. Patch 5 introduces the
> common accessors. The remaining patches convert several PCI host
> controllers. This is in no way a complete list of host controllers. The
> conversion of more hosts should be possible. The Designware controller
> in particular should be able to be converted, but its config space
> accessors are a mess of override-able functions that I've not gotten my
> head around.
>
> This series is available here [1].
>
> Rob
>
> [1] git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git pci-config-access
>
> Rob Herring (16):
> frv: add struct pci_ops member names to initialization
> mips: add struct pci_ops member names to initialization
> mn10300: add struct pci_ops member names to initialization
> powerpc: add struct pci_ops member names to initialization
> pci: introduce common pci config space accessors
> ARM: cns3xxx: convert PCI to use generic config accesses
> ARM: integrator: convert PCI to use generic config accesses
> ARM: sa1100: convert PCI to use generic config accesses
> ARM: ks8695: convert PCI to use generic config accesses
> powerpc: fsl_pci: convert PCI to use generic config accesses
> powerpc: powermac: convert PCI to use generic config accesses
> pci/host: generic: convert to use generic config accesses
> pci/host: rcar-gen2: convert to use generic config accesses
> pci/host: tegra: convert to use generic config accesses
> pci/host: xgene: convert to use generic config accesses
> pci/host: xilinx: convert to use generic config accesses
>
> arch/arm/mach-cns3xxx/pcie.c | 52 ++----
> arch/arm/mach-integrator/pci_v3.c | 61 +-------
> arch/arm/mach-ks8695/pci.c | 77 +--------
> arch/arm/mach-sa1100/pci-nanoengine.c | 94 +----------
> arch/frv/mb93090-mb00/pci-vdk.c | 4 +-
> arch/mips/pci/pci-bcm1480.c | 4 +-
> arch/mips/pci/pci-octeon.c | 4 +-
> arch/mips/pci/pcie-octeon.c | 12 +-
> arch/mn10300/unit-asb2305/pci.c | 4 +-
> arch/powerpc/platforms/cell/celleb_scc_pciex.c | 4 +-
> arch/powerpc/platforms/powermac/pci.c | 209 +++++--------------------
> arch/powerpc/sysdev/fsl_pci.c | 46 +-----
> drivers/pci/access.c | 87 ++++++++++
> drivers/pci/host/pci-host-generic.c | 51 +-----
> drivers/pci/host/pci-rcar-gen2.c | 51 +-----
> drivers/pci/host/pci-tegra.c | 55 +------
> drivers/pci/host/pci-xgene.c | 150 ++----------------
> drivers/pci/host/pcie-xilinx.c | 88 ++---------
> include/linux/pci.h | 11 ++
> 19 files changed, 212 insertions(+), 852 deletions(-)
Really nice cleanups. I added these with the acks so far to a pci/config
branch for v3.20. I'll update it with more acks if they trickle in.
You've structured it nicely so I can also just drop individual arch pieces
if necessary. The pieces that haven't been acked yet (hint, hint):
arch/arm/mach-cns3xxx/pcie.c
arch/arm/mach-sa1100/pci-nanoengine.c
arch/mn10300/unit-asb2305/pci.c
arch/powerpc
In addition, nobody has acked the frv and mips parts, but they're trivial
(they only add struct member names) that I can apply them without worrying.
Bjorn
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH 00/16] PCI generic configuration space accessors
2015-01-22 21:03 ` [PATCH 00/16] PCI generic configuration space accessors Bjorn Helgaas
@ 2015-01-22 23:47 ` Rob Herring
0 siblings, 0 replies; 4+ messages in thread
From: Rob Herring @ 2015-01-22 23:47 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: linux-kernel@vger.kernel.org, Arnd Bergmann,
linux-pci@vger.kernel.org, Alexandre Courbot,
Benjamin Herrenschmidt, David Howells, Greg Ungerer,
Koichi Yasutake, Krzysztof Halasa, Linus Walleij,
Michael Ellerman, Michal Simek, Paul Mackerras, Ralf Baechle,
Russell King, Simon Horman, Sören Brinkmann, Stephen Warren,
Tanmay Inamdar, Thierry Reding, Will Deacon, cbe-oss-dev,
linux-am33-list, linux-arm-kernel@lists.infradead.org, Linux-MIPS,
linuxppc-dev, SH-Linux, linux-tegra@vger.kernel.org
On Thu, Jan 22, 2015 at 3:03 PM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> On Fri, Jan 09, 2015 at 08:34:34PM -0600, Rob Herring wrote:
>> This series adds common accessor functions for PCI configuration space
>> accesses. This supports most PCI hosts with memory mapped configuration
>> space like ECAM or hosts with memory mapped address/data registers. ECAM
>> is not generically supported by this series, but could be added on top
>> of this. While some hosts have standard address decoding which could be
>> common as well, the various checks on bus numbers and device numbers are
>> quite varied. It is unclear how much of that is really necessary or
>> could be common.
>>
>> The first 4 patches are preparatory cleanup. Patch 5 introduces the
>> common accessors. The remaining patches convert several PCI host
>> controllers. This is in no way a complete list of host controllers. The
>> conversion of more hosts should be possible. The Designware controller
>> in particular should be able to be converted, but its config space
>> accessors are a mess of override-able functions that I've not gotten my
>> head around.
[...]
> Really nice cleanups. I added these with the acks so far to a pci/config
> branch for v3.20. I'll update it with more acks if they trickle in.
Thanks.
> You've structured it nicely so I can also just drop individual arch pieces
> if necessary. The pieces that haven't been acked yet (hint, hint):
>
> arch/arm/mach-cns3xxx/pcie.c
> arch/arm/mach-sa1100/pci-nanoengine.c
Some ARM sub-arch maintainers tend to not respond on things. These are
platforms which aren't very active and aren't going to move to
drivers/pci/host/ anytime soon. Maybe Arnd wants to ack them.
> arch/mn10300/unit-asb2305/pci.c
> arch/powerpc
>
> In addition, nobody has acked the frv and mips parts, but they're trivial
> (they only add struct member names) that I can apply them without worrying.
You must pick-up the 4 clean-up ones or the build will break for those
platforms. Or perhaps that will encourage some acks.
I've also got some actual conversions for some MIPS platforms in my
tree I haven't sent out yet. MIPS is fun with all the variety of
endianness and h/w swapping capability or not.
Rob
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-01-22 23:47 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-10 2:34 [PATCH 00/16] PCI generic configuration space accessors Rob Herring
2015-01-10 2:34 ` [PATCH 02/16] mips: add struct pci_ops member names to initialization Rob Herring
2015-01-22 21:03 ` [PATCH 00/16] PCI generic configuration space accessors Bjorn Helgaas
2015-01-22 23:47 ` Rob Herring
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox