android_kernel_xiaomi_sdm845/arch/powerpc/sysdev
Trent Piepho a097a78c1e powerpc/fsl-pci: Better ATMU setup for 85xx/86xx
The code that sets up the outbound ATMU windows, which is used to map CPU
physical addresses into PCI bus addresses where BARs will be mapped, didn't
work so well.

For one, it leaked the ioremap() of the ATMU registers.  Another small bug
was the high 20 bits of the PCI bus address were left as zero.  It's legal
for prefetchable memory regions to be above 32 bits, so the high 20 bits
might not be zero.

Mainly, it couldn't handle ranges that were not a power of two in size or
were not naturally aligned.  The ATMU windows have these requirements (size
& alignment), but the code didn't bother to check if the ranges it was
programming met them.  If they didn't, the windows would silently be
programmed incorrectly.

This new code can handle ranges which are not power of two sized nor
naturally aligned.  It simply splits the ranges into multiple valid ATMU
windows.  As there are only four windows, pooly aligned or sized ranges
(which didn't even work before) may run out of windows.  In this case an
error is printed and an effort is made to disable the unmapped resources.

An improvement that could be made would be to make use of the default
outbound window.  Iff hose->pci_mem_offset is zero, then it's possible that
some or all of the ranges might not need an outbound window and could just
use the default window.

The default ATMU window can support a pci_mem_offset less than zero too,
but pci_mem_offset is unsigned.  One could say the abilities allowed a
powerpc pci_controller is neither subset nor a superset of the abilities of
a Freescale PCIe controller.  Thankfully, the most useful bits are in the
intersection of the two abilities.

Signed-off-by: Trent Piepho <tpiepho@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
2009-01-07 15:32:54 -06:00
..
bestcomm powerpc/mpc5200: Add MDMA/UDMA support to MPC5200 ATA driver 2008-12-21 02:54:29 -07:00
qe_lib powerpc/qe: Select QE_USB with USB_GADGET_FSL_QE 2008-12-30 12:12:12 -06:00
6xx-suspend.S [POWERPC] Add 6xx-style HID0_SLEEP support. 2008-05-16 23:22:28 +10:00
axonram.c powerpc/axonram: Enable partitioning of the Axons DDR2 DIMMs 2008-07-22 10:39:31 +10:00
cpm1.c powerpc/cpm1: Fix race condition in CPM1 GPIO library. 2008-09-16 13:43:24 -05:00
cpm2_pic.c powerpc: Fix irq_alloc_host() reference counting and callers 2008-06-09 13:51:16 +10:00
cpm2_pic.h
cpm2.c cpm2: Rework baud rate generators configuration to support external clocks. 2008-07-28 08:47:45 -05:00
cpm_common.c cpm2: Fix race condition in CPM2 GPIO library. 2008-08-21 00:15:54 -05:00
dart_iommu.c powerpc/pseries: iommu enablement for CMO 2008-07-25 15:44:43 +10:00
dart.h
dcr-low.S powerpc/4xx: Extended DCR support v2 2008-12-21 14:21:15 +11:00
dcr.c powerpc: Const-qualify Device Node Argument to DCR Resource Extent API 2008-12-21 14:21:16 +11:00
fsl_gtm.c powerpc/sysdev: implement FSL GTM support 2008-06-10 10:38:50 -05:00
fsl_lbc.c powerpc: fix fsl_upm nand driver modular build 2008-10-13 11:48:24 -05:00
fsl_msi.c powerpc: Convert the FSL MSI code to use msi_bitmap 2008-08-20 16:34:58 +10:00
fsl_msi.h powerpc: Convert the FSL MSI code to use msi_bitmap 2008-08-20 16:34:58 +10:00
fsl_pci.c powerpc/fsl-pci: Better ATMU setup for 85xx/86xx 2009-01-07 15:32:54 -06:00
fsl_pci.h powerpc: Move mpc83xx_add_bridge to fsl_pci.c 2008-07-16 17:57:35 -05:00
fsl_rio.c [RAPIDIO] fix current kernel-doc notation 2008-05-01 23:01:54 -05:00
fsl_soc.c gianfar: Convert gianfar to an of_platform_driver 2008-12-16 15:29:15 -08:00
fsl_soc.h powerpc: Implement get_brgfreq() and get_baudrate() stubs 2008-12-30 11:13:40 -06:00
grackle.c powerpc: Introduce ppc_pci_flags accessors 2008-12-16 15:53:16 +11:00
i8259.c powerpc: Fix irq_alloc_host() reference counting and callers 2008-06-09 13:51:16 +10:00
indirect_pci.c powerpc/4xx: Workaround for PPC440EPx/GRx PCI_28 Errata 2008-06-17 19:01:38 -04:00
ipic.c powerpc/mpc83xx: Power Management support 2008-07-16 17:57:30 -05:00
ipic.h [POWERPC] ipic: ack only for edge interrupts 2007-12-12 01:53:07 -06:00
Kconfig powerpc: Move 8xxx GPIO Kconfig under the platform menu 2008-09-23 23:36:32 -05:00
Makefile powerpc: Implement GPIO driver for simple memory-mapped banks 2008-12-30 11:13:45 -06:00
micropatch.c [POWERPC] CPM: Rename commproc to cpm1 and cpm2_common.c to cpm2.c 2008-01-28 08:31:05 -06:00
mmio_nvram.c [POWERPC] arch/powerpc/: Spelling fixes 2007-12-20 16:15:51 +11:00
mpc8xx_pic.c [POWERPC] arch/powerpc/sysdev: Add missing of_node_put 2008-02-06 22:06:59 +11:00
mpc8xx_pic.h [POWERPC] 8xx: mpc885ads pcmcia support 2007-07-10 00:33:51 -05:00
mpc8xxx_gpio.c powerpc: gpio driver for mpc8349/8572/8610 and compatible 2008-09-23 10:41:16 -05:00
mpic_msi.c powerpc: Convert the MPIC MSI code to use msi_bitmap 2008-08-20 16:34:58 +10:00
mpic_pasemi_msi.c powerpc: Convert the MPIC MSI code to use msi_bitmap 2008-08-20 16:34:58 +10:00
mpic_u3msi.c powerpc: Convert the MPIC MSI code to use msi_bitmap 2008-08-20 16:34:58 +10:00
mpic.c Merge branch 'merge' 2008-12-03 20:11:06 +11:00
mpic.h powerpc: Convert the MPIC MSI code to use msi_bitmap 2008-08-20 16:34:58 +10:00
msi_bitmap.c powerpc: Split-out common MSI bitmap logic into msi_bitmap.c 2008-08-20 16:34:57 +10:00
mv64x60_dev.c mv643xx_eth: remove force_phy_addr field 2008-09-05 06:33:59 +02:00
mv64x60_pci.c [POWERPC] mv64x60: Fix FDT compatible names: mv64x60 => mv64360 2008-04-15 21:21:24 +10:00
mv64x60_pic.c [POWERPC] mv64x60: Fix FDT compatible names: mv64x60 => mv64360 2008-04-15 21:21:24 +10:00
mv64x60_udbg.c [POWERPC] Fix mv64x60 early console code to use cell-index property 2008-04-24 20:57:34 +10:00
mv64x60.h [POWERPC] Add Marvell mv64x60 udbg putc/getc functions 2007-09-22 14:49:21 +10:00
of_rtc.c [POWERPC] Enable RTC for Ebony and Walnut (v2) 2008-01-25 07:07:26 -06:00
pmi.c [POWERPC] Clean out asm/of_{platform, device}.h from sysdev/ 2007-12-06 14:44:30 +11:00
ppc4xx_gpio.c powerpc/4xx: Add PowerPC 4xx GPIO driver 2008-10-17 13:33:44 -04:00
ppc4xx_pci.c powerpc/4xx: Add support for ISA holes on 4xx PCI/X/E 2008-12-04 08:02:19 -05:00
ppc4xx_pci.h [POWERPC] 4xx: Add 460EX PCIe support to 4xx pci driver 2008-03-26 07:19:16 -05:00
ppc4xx_soc.c [POWERPC] 4xx: Create common ppc4xx_reset_system() in ppc4xx_soc.c 2008-04-02 20:44:56 -05:00
rtc_cmos_setup.c powerpc: rtc_cmos_setup: assign interrupts only if there is i8259 PIC 2008-07-28 08:47:38 -05:00
simple_gpio.c powerpc: Implement GPIO driver for simple memory-mapped banks 2008-12-30 11:13:45 -06:00
simple_gpio.h powerpc: Implement GPIO driver for simple memory-mapped banks 2008-12-30 11:13:45 -06:00
tsi108_dev.c [POWERPC] Replace remaining __FUNCTION__ occurrences 2008-04-01 20:43:09 +11:00
tsi108_pci.c powerpc: Fix irq_alloc_host() reference counting and callers 2008-06-09 13:51:16 +10:00
uic.c powerpc: Fix irq_alloc_host() reference counting and callers 2008-06-09 13:51:16 +10:00
xilinx_intc.c powerpc/virtex: fix various format/casting printk mismatches 2008-11-14 09:59:48 -07:00