* [PATCH 00/16] PCI generic configuration space accessors
@ 2015-01-10 2:34 Rob Herring
2015-01-10 2:34 ` [PATCH 14/16] pci/host: tegra: convert to use generic config accesses Rob Herring
2015-01-22 21:03 ` [PATCH 00/16] PCI generic configuration space accessors Bjorn Helgaas
0 siblings, 2 replies; 5+ messages in thread
From: Rob Herring @ 2015-01-10 2:34 UTC (permalink / raw)
To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
Cc: Arnd Bergmann, linux-pci-u79uwXL29TY76Z2rM5mHXA, 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
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] 5+ messages in thread
* [PATCH 14/16] pci/host: tegra: convert to use generic config accesses
2015-01-10 2:34 [PATCH 00/16] PCI generic configuration space accessors Rob Herring
@ 2015-01-10 2:34 ` Rob Herring
2015-01-12 10:07 ` Thierry Reding
2015-01-22 21:03 ` [PATCH 00/16] PCI generic configuration space accessors Bjorn Helgaas
1 sibling, 1 reply; 5+ 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,
Thierry Reding, Stephen Warren, Alexandre Courbot, linux-tegra
Convert the tegra host PCI driver to use the generic config access
functions.
Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: linux-tegra@vger.kernel.org
Cc: linux-pci@vger.kernel.org
---
drivers/pci/host/pci-tegra.c | 55 +++-----------------------------------------
1 file changed, 3 insertions(+), 52 deletions(-)
diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c
index a800ae9..44fd31b 100644
--- a/drivers/pci/host/pci-tegra.c
+++ b/drivers/pci/host/pci-tegra.c
@@ -480,59 +480,10 @@ static void __iomem *tegra_pcie_conf_address(struct pci_bus *bus,
return addr;
}
-static int tegra_pcie_read_conf(struct pci_bus *bus, unsigned int devfn,
- int where, int size, u32 *value)
-{
- void __iomem *addr;
-
- addr = tegra_pcie_conf_address(bus, devfn, where);
- if (!addr) {
- *value = 0xffffffff;
- return PCIBIOS_DEVICE_NOT_FOUND;
- }
-
- *value = readl(addr);
-
- if (size == 1)
- *value = (*value >> (8 * (where & 3))) & 0xff;
- else if (size == 2)
- *value = (*value >> (8 * (where & 3))) & 0xffff;
-
- return PCIBIOS_SUCCESSFUL;
-}
-
-static int tegra_pcie_write_conf(struct pci_bus *bus, unsigned int devfn,
- int where, int size, u32 value)
-{
- void __iomem *addr;
- u32 mask, tmp;
-
- addr = tegra_pcie_conf_address(bus, devfn, where);
- if (!addr)
- return PCIBIOS_DEVICE_NOT_FOUND;
-
- if (size == 4) {
- writel(value, addr);
- return PCIBIOS_SUCCESSFUL;
- }
-
- if (size == 2)
- mask = ~(0xffff << ((where & 0x3) * 8));
- else if (size == 1)
- mask = ~(0xff << ((where & 0x3) * 8));
- else
- return PCIBIOS_BAD_REGISTER_NUMBER;
-
- tmp = readl(addr) & mask;
- tmp |= value << ((where & 0x3) * 8);
- writel(tmp, addr);
-
- return PCIBIOS_SUCCESSFUL;
-}
-
static struct pci_ops tegra_pcie_ops = {
- .read = tegra_pcie_read_conf,
- .write = tegra_pcie_write_conf,
+ .map_bus = tegra_pcie_conf_address,
+ .read = pci_generic_config_read32,
+ .write = pci_generic_config_write32,
};
static unsigned long tegra_pcie_port_get_pex_ctrl(struct tegra_pcie_port *port)
--
2.1.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH 14/16] pci/host: tegra: convert to use generic config accesses
2015-01-10 2:34 ` [PATCH 14/16] pci/host: tegra: convert to use generic config accesses Rob Herring
@ 2015-01-12 10:07 ` Thierry Reding
0 siblings, 0 replies; 5+ messages in thread
From: Thierry Reding @ 2015-01-12 10:07 UTC (permalink / raw)
To: Rob Herring
Cc: linux-kernel, Arnd Bergmann, linux-pci, Bjorn Helgaas,
Stephen Warren, Alexandre Courbot, linux-tegra
[-- Attachment #1: Type: text/plain, Size: 288 bytes --]
On Fri, Jan 09, 2015 at 08:34:48PM -0600, Rob Herring wrote:
> Convert the tegra host PCI driver to use the generic config access
Nit: s/tegra/Tegra/
Other than than looks like great cleanup:
Tested-by: Thierry Reding <treding@nvidia.com>
Acked-by: Thierry Reding <treding@nvidia.com>
[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 5+ 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 14/16] pci/host: tegra: convert to use generic config accesses Rob Herring
@ 2015-01-22 21:03 ` Bjorn Helgaas
2015-01-22 23:47 ` Rob Herring
1 sibling, 1 reply; 5+ 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
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] 5+ 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; 5+ 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
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] 5+ messages in thread
end of thread, other threads:[~2015-01-22 23:47 UTC | newest]
Thread overview: 5+ 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 14/16] pci/host: tegra: convert to use generic config accesses Rob Herring
2015-01-12 10:07 ` Thierry Reding
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;
as well as URLs for NNTP newsgroup(s).