• Arnd Bergmann's avatar
    arm: versatile: fix and enable PCI I/O space · 9b0f7e39
    Arnd Bergmann authored
    With commit 4d5fc58d (ARM: remove bunch of now unused
    mach/io.h files), the I/O space setup was completely broken on
    versatile. This patch fixes that and prepares for further
    I/O space clean-up.
    
    I/O space handling on the versatile platform is currently
    broken in multiple ways. Most importantly, the ports do
    not get mapped into the virtual address space at all.
    
    Also, there is some amount of confusion between PCI I/O
    space and other statically mapped MMIO registers in the
    platform code:
    
    * The __io_address() macro that is used to access the
      platform register maps to the same __io macro that gets
      used for I/O space.
    
    * The IO_SPACE_LIMIT is set to a value that is much larger
      than the total available space.
    
    * The I/O resource of the PCI bus is set to the physical
      address of the mapping, which is way outside of the
      actual I/O space limit as well as the address range that
      gets decoded by traditional PCI cards.
    
    * No attempt is made to stay outside of the ISA port range
      that some device drivers try access.
    
    * No resource gets requested as a child of ioport_resource,
      but an IORESOURCE_IO type mapping gets requested
      as a child of iomem_resource.
    
    This patch attempts to correct all of the above. This makes
    it possible to use virtio-pci based virtual devices as well
    as actual PCI cards including those with legacy ISA port
    ranges like VGA.
    
    Some of the issues seem to be duplicated on other platforms.
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    [rob: update to 3.5-rc2 and io.h cleanup related changes]
    Signed-off-by: default avatarRob Herring <rob.herring@calxeda.com>
    Tested-by: default avatarRobert Schwebel <r.schwebel@pengutronix.de>
    Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
    9b0f7e39
core.c 21 KB