• Linus Walleij's avatar
    PCI: ixp4xx: Add a new driver for IXP4xx · f7821b49
    Linus Walleij authored
    This adds a new PCI controller driver for the Intel IXP4xx
    (IX425, IXP435 etc), based on the XScale microarchitecture.
    
    This replaces the old driver in arch/arm/mach-ixp4xx/common-pci.c
    which utilized the ARM-specific BIOS32 PCI framework,
    and all parameterization for such things as memory and
    IO space as well as interrupt swizzling is done from the
    device tree.
    
    The plan is to phase out and delete the old driver piecemal.
    
    The __raw_writel() and __raw_readl() are used for accessing
    the PCI controller for the same reason that these accessors
    are used in the timer, IRQ and GPIO drivers: the platform
    will alter its address bus pattern based on whether the
    system is booted in big- or little-endian mode. For this
    reason all register on IXP4xx must always be accessed in
    native (CPU) endianness.
    
    This driver supports 64MB of PCI memory space, but not the
    indirect access of 1GB that is available in the old driver.
    We can address that later if and only if there are users
    that need all 1GB of PCI address space. Krzysztof reports
    having to use indirect MMIO only once for a VGA card. There
    is work ongoing for general indirect MMIO. (In practice
    the indirect MMIO is performed by writing address and
    writing and reading values into/from a controller
    register.)
    
    Tested by booting the NSLU2, attaching a USB stick, mounting
    and browsing the drive.
    
    Link: https://lore.kernel.org/linux-arm-kernel/m37edwuv8m.fsf@t19.piap.pl/
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Imre Kaloz <kaloz@openwrt.org>
    Cc: Krzysztof Halasa <khalasa@piap.pl>
    Cc: Zoltan HERPAI <wigyori@uid0.hu>
    Cc: Raylynn Knight <rayknight@me.com>
    Acked-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
    Acked-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    f7821b49
pci-ixp4xx.c 17.6 KB