]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commit
ARM64: 7683/1: pci: add a align_resource hook
authorVidya Sagar <vidyas@nvidia.com>
Tue, 1 Jul 2014 11:53:00 +0000 (17:23 +0530)
committerLaxman Dewangan <ldewangan@nvidia.com>
Wed, 2 Jul 2014 06:04:54 +0000 (23:04 -0700)
commitc54e5475bc2cd200d578034ceda564c36f412ae8
treed5eb791e59ab6cb9cd85144c376cbe84bd3dc57c
parent72fd628c7645f66307e087dd81d066597f759d04
ARM64: 7683/1: pci: add a align_resource hook

The PCI specifications says that an I/O region must be aligned on a 4
KB boundary, and a memory region aligned on a 1 MB boundary.

However, the Marvell PCIe interfaces rely on address decoding windows
(which allow to associate a range of physical addresses with a given
device). For PCIe memory windows, those windows are defined with a 1
MB granularity (which matches the PCI specs), but PCIe I/O windows can
only be defined with a 64 KB granularity, so they have to be 64 KB
aligned. We therefore need to tell the PCI core about this special
alignement requirement.

The PCI core already calls pcibios_align_resource() in the ARM PCI
core, specifically for such purposes. So this patch extends the ARM
PCI core so that it calls a ->align_resource() hook registered by the
PCI driver, exactly like the existing ->map_irq() and ->swizzle()
hooks.

A particular PCI driver can register a align_resource() hook, and do
its own specific alignement, depending on the specific constraints of
the underlying hardware.

vidyas: make similar change for ARM64
based on upstream commit 029baf14a027a44b3ac8a9fe5cb1e516cbb9007e

Bug 200012096

Change-Id: I3e16cbf02f4305a21c6195cbaa3e54fe462b53ed
Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
Reviewed-on: http://git-master/r/433166
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
arch/arm64/include/asm/mach/pci.h
arch/arm64/kernel/bios32.c