diff mbox

[v2,05/15] ARM: integrator: use fixed PCI i/o mapping

Message ID 1342231451-28861-6-git-send-email-robherring2@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Rob Herring July 14, 2012, 2:04 a.m. UTC
From: Rob Herring <rob.herring@calxeda.com>

Move integrator PCI to fixed i/o mapping and remove io.h.

Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Linus Walleij <linus.walleij@linaro.org>
---
 arch/arm/Kconfig                                 |    1 -
 arch/arm/mach-integrator/include/mach/io.h       |   33 ----------------------
 arch/arm/mach-integrator/include/mach/platform.h |    4 +++
 arch/arm/mach-integrator/integrator_ap.c         |    7 +----
 arch/arm/mach-integrator/pci_v3.c                |    3 --
 5 files changed, 5 insertions(+), 43 deletions(-)
 delete mode 100644 arch/arm/mach-integrator/include/mach/io.h

Comments

Linus Walleij July 14, 2012, 9:49 p.m. UTC | #1
On Sat, Jul 14, 2012 at 4:04 AM, Rob Herring <robherring2@gmail.com> wrote:

> From: Rob Herring <rob.herring@calxeda.com>
>
> Move integrator PCI to fixed i/o mapping and remove io.h.
>
> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
> Cc: Russell King <linux@arm.linux.org.uk>
> Cc: Linus Walleij <linus.walleij@linaro.org>

I think the PCI bus on my Integrator/AP is tilted and not suitable
for tests. But IIRC Will Deacon actually has one of these machines
and managed to get ethernet going on it. Maybe he can even test
this patch?

Yours,
Linus Walleij
Will Deacon July 17, 2012, 5:04 p.m. UTC | #2
On Sat, Jul 14, 2012 at 10:49:47PM +0100, Linus Walleij wrote:
> On Sat, Jul 14, 2012 at 4:04 AM, Rob Herring <robherring2@gmail.com> wrote:
> 
> > From: Rob Herring <rob.herring@calxeda.com>
> >
> > Move integrator PCI to fixed i/o mapping and remove io.h.
> >
> > Signed-off-by: Rob Herring <rob.herring@calxeda.com>
> > Cc: Russell King <linux@arm.linux.org.uk>
> > Cc: Linus Walleij <linus.walleij@linaro.org>
> 
> I think the PCI bus on my Integrator/AP is tilted and not suitable
> for tests. But IIRC Will Deacon actually has one of these machines
> and managed to get ethernet going on it. Maybe he can even test
> this patch?

I can try digging out my integrator at the weekend if you like. Are these
patches sitting in a branch anywhere that I can grab?

Will
Rob Herring July 17, 2012, 6:02 p.m. UTC | #3
On 07/17/2012 12:04 PM, Will Deacon wrote:
> On Sat, Jul 14, 2012 at 10:49:47PM +0100, Linus Walleij wrote:
>> On Sat, Jul 14, 2012 at 4:04 AM, Rob Herring <robherring2@gmail.com> wrote:
>>
>>> From: Rob Herring <rob.herring@calxeda.com>
>>>
>>> Move integrator PCI to fixed i/o mapping and remove io.h.
>>>
>>> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
>>> Cc: Russell King <linux@arm.linux.org.uk>
>>> Cc: Linus Walleij <linus.walleij@linaro.org>
>>
>> I think the PCI bus on my Integrator/AP is tilted and not suitable
>> for tests. But IIRC Will Deacon actually has one of these machines
>> and managed to get ethernet going on it. Maybe he can even test
>> this patch?
> 
> I can try digging out my integrator at the weekend if you like. Are these
> patches sitting in a branch anywhere that I can grab?
> 

git://sources.calxeda.com/kernel/linux.git io-cleanup-pci

Rob
Will Deacon July 21, 2012, 2:31 p.m. UTC | #4
Hi Rob,

On Tue, Jul 17, 2012 at 07:02:12PM +0100, Rob Herring wrote:
> On 07/17/2012 12:04 PM, Will Deacon wrote:
> > On Sat, Jul 14, 2012 at 10:49:47PM +0100, Linus Walleij wrote:
> >> I think the PCI bus on my Integrator/AP is tilted and not suitable
> >> for tests. But IIRC Will Deacon actually has one of these machines
> >> and managed to get ethernet going on it. Maybe he can even test
> >> this patch?
> > 
> > I can try digging out my integrator at the weekend if you like. Are these
> > patches sitting in a branch anywhere that I can grab?
> > 
> 
> git://sources.calxeda.com/kernel/linux.git io-cleanup-pci

I dusted off the integrator, but I'm failing to boot at all if I build from
that branch:

	Uncompressing Linux... done, booting the kernel.
	<silence>

Using the same .config, I can boot v3.5-rc7 just fine (I even rebased your
branch onto that in case something had been fixed in mainline, but it made
no difference).

Will
Arnd Bergmann July 21, 2012, 9:56 p.m. UTC | #5
On Saturday 21 July 2012, Will Deacon wrote:
> Hi Rob,
> 
> On Tue, Jul 17, 2012 at 07:02:12PM +0100, Rob Herring wrote:
> > On 07/17/2012 12:04 PM, Will Deacon wrote:
> > > On Sat, Jul 14, 2012 at 10:49:47PM +0100, Linus Walleij wrote:
> > >> I think the PCI bus on my Integrator/AP is tilted and not suitable
> > >> for tests. But IIRC Will Deacon actually has one of these machines
> > >> and managed to get ethernet going on it. Maybe he can even test
> > >> this patch?
> > > 
> > > I can try digging out my integrator at the weekend if you like. Are these
> > > patches sitting in a branch anywhere that I can grab?
> > > 
> > 
> > git://sources.calxeda.com/kernel/linux.git io-cleanup-pci
> 
> I dusted off the integrator, but I'm failing to boot at all if I build from
> that branch:
> 
> 	Uncompressing Linux... done, booting the kernel.
> 	<silence>
> 
> Using the same .config, I can boot v3.5-rc7 just fine (I even rebased your
> branch onto that in case something had been fixed in mainline, but it made
> no difference).

I've looked at integrator_defconfig, and could not find any code that
actually uses the PIO accessors. Is your configuration different to that?
Do you actually have PCI enabled and present on the machine? Do things
change if you turn PCI off?

	Arnd
Rob Herring July 22, 2012, 1:09 p.m. UTC | #6
On Jul 21, 2012 5:56 PM, "Arnd Bergmann" <arnd@arndb.de> wrote:
>
> On Saturday 21 July 2012, Will Deacon wrote:
> > Hi Rob,
> >
> > On Tue, Jul 17, 2012 at 07:02:12PM +0100, Rob Herring wrote:
> > > On 07/17/2012 12:04 PM, Will Deacon wrote:
> > > > On Sat, Jul 14, 2012 at 10:49:47PM +0100, Linus Walleij wrote:
> > > >> I think the PCI bus on my Integrator/AP is tilted and not suitable
> > > >> for tests. But IIRC Will Deacon actually has one of these machines
> > > >> and managed to get ethernet going on it. Maybe he can even test
> > > >> this patch?
> > > >
> > > > I can try digging out my integrator at the weekend if you like. Are
these
> > > > patches sitting in a branch anywhere that I can grab?
> > > >
> > >
> > > git://sources.calxeda.com/kernel/linux.git io-cleanup-pci
> >
> > I dusted off the integrator, but I'm failing to boot at all if I build
from
> > that branch:
> >
> >       Uncompressing Linux... done, booting the kernel.
> >       <silence>
> >
> > Using the same .config, I can boot v3.5-rc7 just fine (I even rebased
your
> > branch onto that in case something had been fixed in mainline, but it
made
> > no difference).
>
> I've looked at integrator_defconfig, and could not find any code that
> actually uses the PIO accessors. Is your configuration different to that?
> Do you actually have PCI enabled and present on the machine? Do things
> change if you turn PCI off?
>

Could be overlapping static mappings. I manually checked that, but may have
missed something.

Can you turn on earlyprintk?

Rob
Will Deacon July 22, 2012, 3:08 p.m. UTC | #7
On Sun, Jul 22, 2012 at 02:09:23PM +0100, Rob Herring wrote:
> On Jul 21, 2012 5:56 PM, "Arnd Bergmann" <arnd@arndb.de<mailto:arnd@arndb.de>> wrote:
> > On Saturday 21 July 2012, Will Deacon wrote:
> > > I dusted off the integrator, but I'm failing to boot at all if I build from
> > > that branch:
> > >
> > >       Uncompressing Linux... done, booting the kernel.
> > >       <silence>
> > >
> > > Using the same .config, I can boot v3.5-rc7 just fine (I even rebased your
> > > branch onto that in case something had been fixed in mainline, but it made
> > > no difference).
> >
> > I've looked at integrator_defconfig, and could not find any code that
> > actually uses the PIO accessors. Is your configuration different to that?
> > Do you actually have PCI enabled and present on the machine? Do things
> > change if you turn PCI off?

I have PCI up and running, yes, but all I use it for is an Intel e100
ethernet card which isn't required for booting. Disabling PCI makes no
difference, but see below.

> Could be overlapping static mappings. I manually checked that, but may have missed something.
> 
> Can you turn on earlyprintk?

I had that turned on already... after banging my head against a wall, I
realised that increasing the baudrate in u-boot (I have to use ymodem to
transfer the kernel image...) kills the serial console completely when
booting Linux if I forget to change it back.

With that observation, I see booting get stuck:


Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.5.0-rc6-00017-g52f1412 (will@tiny-lites) (gcc version 4.5.3 (Gent2
[    0.000000] CPU: ARM926EJ-S [41069263] revision 3 (ARMv5TEJ), cr=00053177
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine: ARM-Integrator
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] On node 0 totalpages: 32768
[    0.000000] free_area_init_node: node 0, pgdat c04ad1f0, node_mem_map c04c9000
[    0.000000]   Normal zone: 256 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 32512 pages, LIFO batch:7
[    0.000000] CPU: found DTCM0 32k @ 00000000, not enabled
[    0.000000] CPU: moved DTCM0 32k to fffe8000, enabled
[    0.000000] CPU: found ITCM0 32k @ 00000000, not enabled
[    0.000000] CPU: moved ITCM0 32k to fffe0000, enabled
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
[    0.000000] Kernel command line: console=ttyAM0 mem=128M earlyprintk debug user_debug=31 logl9
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 128MB = 128MB total
[    0.000000] Memory: 124968k/124968k available, 6104k reserved, 0K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     DTCM    : 0xfffe8000 - 0xffff0000   (  32 kB)
[    0.000000]     ITCM    : 0xfffe0000 - 0xfffe8000   (  32 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xc8800000 - 0xff000000   ( 872 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc036e9b0   (3483 kB)
[    0.000000]       .init : 0xc036f000 - 0xc048e7a4   (1150 kB)
[    0.000000]       .data : 0xc0490000 - 0xc04ad920   ( 119 kB)
[    0.000000]        .bss : 0xc04ae024 - 0xc04c86b4   ( 106 kB)
[    0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:16 nr_irqs:34 34
[    0.000000] FPGA IRQ chip 0 "SC" @ f1400000, 22 irqs
[    0.000000] sched_clock: 16 bits at 1500kHz, resolution 666ns, wraps every 43ms


Now, the next line is usually when the VGA text console is poked. Sure
enough, disabling that (CONFIG_VGA_CONSOLE) is enough to boot with your
patches and PCI appears to work correctly (I can do basic networking).

I guess there's some mapping race with the VGA code since vga_base =
PCI_MEMORY_VADDR, but you left the static mapping alone for that region,
so I'm not sure. Any ideas?

Will
Rob Herring July 22, 2012, 4:21 p.m. UTC | #8
On Jul 22, 2012 11:08 AM, "Will Deacon" <will.deacon@arm.com> wrote:
>
> On Sun, Jul 22, 2012 at 02:09:23PM +0100, Rob Herring wrote:
> > On Jul 21, 2012 5:56 PM, "Arnd Bergmann" <arnd@arndb.de<mailto:
arnd@arndb.de>> wrote:
> > > On Saturday 21 July 2012, Will Deacon wrote:
> > > > I dusted off the integrator, but I'm failing to boot at all if I
build from
> > > > that branch:
> > > >
> > > >       Uncompressing Linux... done, booting the kernel.
> > > >       <silence>
> > > >
> > > > Using the same .config, I can boot v3.5-rc7 just fine (I even
rebased your
> > > > branch onto that in case something had been fixed in mainline, but
it made
> > > > no difference).
> > >
> > > I've looked at integrator_defconfig, and could not find any code that
> > > actually uses the PIO accessors. Is your configuration different to
that?
> > > Do you actually have PCI enabled and present on the machine? Do things
> > > change if you turn PCI off?
>
> I have PCI up and running, yes, but all I use it for is an Intel e100
> ethernet card which isn't required for booting. Disabling PCI makes no
> difference, but see below.
>
> > Could be overlapping static mappings. I manually checked that, but may
have missed something.
> >
> > Can you turn on earlyprintk?
>
> I had that turned on already... after banging my head against a wall, I
> realised that increasing the baudrate in u-boot (I have to use ymodem to
> transfer the kernel image...) kills the serial console completely when
> booting Linux if I forget to change it back.
>
> With that observation, I see booting get stuck:
>
>
> Uncompressing Linux... done, booting the kernel.
> [    0.000000] Booting Linux on physical CPU 0
> [    0.000000] Initializing cgroup subsys cpu
> [    0.000000] Linux version 3.5.0-rc6-00017-g52f1412 (will@tiny-lites)
(gcc version 4.5.3 (Gent2
> [    0.000000] CPU: ARM926EJ-S [41069263] revision 3 (ARMv5TEJ),
cr=00053177
> [    0.000000] CPU: VIVT data cache, VIVT instruction cache
> [    0.000000] Machine: ARM-Integrator
> [    0.000000] bootconsole [earlycon0] enabled
> [    0.000000] Memory policy: ECC disabled, Data cache writeback
> [    0.000000] On node 0 totalpages: 32768
> [    0.000000] free_area_init_node: node 0, pgdat c04ad1f0, node_mem_map
c04c9000
> [    0.000000]   Normal zone: 256 pages used for memmap
> [    0.000000]   Normal zone: 0 pages reserved
> [    0.000000]   Normal zone: 32512 pages, LIFO batch:7
> [    0.000000] CPU: found DTCM0 32k @ 00000000, not enabled
> [    0.000000] CPU: moved DTCM0 32k to fffe8000, enabled
> [    0.000000] CPU: found ITCM0 32k @ 00000000, not enabled
> [    0.000000] CPU: moved ITCM0 32k to fffe0000, enabled
> [    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
> [    0.000000] pcpu-alloc: [0] 0
> [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.
 Total pages: 32512
> [    0.000000] Kernel command line: console=ttyAM0 mem=128M earlyprintk
debug user_debug=31 logl9
> [    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
> [    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536
bytes)
> [    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768
bytes)
> [    0.000000] Memory: 128MB = 128MB total
> [    0.000000] Memory: 124968k/124968k available, 6104k reserved, 0K
highmem
> [    0.000000] Virtual kernel memory layout:
> [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
> [    0.000000]     DTCM    : 0xfffe8000 - 0xffff0000   (  32 kB)
> [    0.000000]     ITCM    : 0xfffe0000 - 0xfffe8000   (  32 kB)
> [    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
> [    0.000000]     vmalloc : 0xc8800000 - 0xff000000   ( 872 MB)
> [    0.000000]     lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
> [    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
> [    0.000000]       .text : 0xc0008000 - 0xc036e9b0   (3483 kB)
> [    0.000000]       .init : 0xc036f000 - 0xc048e7a4   (1150 kB)
> [    0.000000]       .data : 0xc0490000 - 0xc04ad920   ( 119 kB)
> [    0.000000]        .bss : 0xc04ae024 - 0xc04c86b4   ( 106 kB)
> [    0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0,
CPUs=1, Nodes=1
> [    0.000000] NR_IRQS:16 nr_irqs:34 34
> [    0.000000] FPGA IRQ chip 0 "SC" @ f1400000, 22 irqs
> [    0.000000] sched_clock: 16 bits at 1500kHz, resolution 666ns, wraps
every 43ms
>
>
> Now, the next line is usually when the VGA text console is poked. Sure
> enough, disabling that (CONFIG_VGA_CONSOLE) is enough to boot with your
> patches and PCI appears to work correctly (I can do basic networking).
>
> I guess there's some mapping race with the VGA code since vga_base =
> PCI_MEMORY_VADDR, but you left the static mapping alone for that region,
> so I'm not sure. Any ideas?

Perhaps pcibios_min_io changing from 6000 to default of 1000 causes probing
for vga?

Rob
Will Deacon July 23, 2012, 12:19 p.m. UTC | #9
On Sun, Jul 22, 2012 at 05:21:33PM +0100, Rob Herring wrote:
> On Jul 22, 2012 11:08 AM, "Will Deacon" <will.deacon@arm.com<mailto:will.deacon@arm.com>> wrote:
> > Now, the next line is usually when the VGA text console is poked. Sure
> > enough, disabling that (CONFIG_VGA_CONSOLE) is enough to boot with your
> > patches and PCI appears to work correctly (I can do basic networking).
> >
> > I guess there's some mapping race with the VGA code since vga_base =
> > PCI_MEMORY_VADDR, but you left the static mapping alone for that region,
> > so I'm not sure. Any ideas?
> 
> Perhaps pcibios_min_io changing from 6000 to default of 1000 causes probing for vga?

I can try changing it back and see it makes a difference sometime this week.
It certainly smells like some probing is going on before the PCI stuff is up
and running and I suspect that the static mapping just leads to a hang rather
than an abort.

Will
Rob Herring July 23, 2012, 2:05 p.m. UTC | #10
On 07/23/2012 07:19 AM, Will Deacon wrote:
> On Sun, Jul 22, 2012 at 05:21:33PM +0100, Rob Herring wrote:
>> On Jul 22, 2012 11:08 AM, "Will Deacon" <will.deacon@arm.com<mailto:will.deacon@arm.com>> wrote:
>>> Now, the next line is usually when the VGA text console is poked. Sure
>>> enough, disabling that (CONFIG_VGA_CONSOLE) is enough to boot with your
>>> patches and PCI appears to work correctly (I can do basic networking).
>>>
>>> I guess there's some mapping race with the VGA code since vga_base =
>>> PCI_MEMORY_VADDR, but you left the static mapping alone for that region,
>>> so I'm not sure. Any ideas?
>>
>> Perhaps pcibios_min_io changing from 6000 to default of 1000 causes probing for vga?
> 
> I can try changing it back and see it makes a difference sometime this week.
> It certainly smells like some probing is going on before the PCI stuff is up
> and running and I suspect that the static mapping just leads to a hang rather
> than an abort.

Now that I have looked at the code. I think it is simply vgacon is
postcore_init and pci setup of the i/o mapping is in subsys_init. It
curious that you don't get an abort and backtrace though.

vgacon is only enabled for footbridge and integrator. I guess the only
way this worked before is if the bootloader has already setup the bus.
So I can add back an early mapping function that these 2 platforms can
call from .map_io. Something like this:

static inline void __init pci_map_io_early(unsigned long pfn)
{
	struct map_desc pci_io_desc = {
		.virtual	= PCI_IO_VIRT_BASE,
		.type		= MT_DEVICE,
		.length		= SZ_64K,
	};
	
	pci_io_desc.pfn = pfn;
	create_mapping(&pci_io_desc);
}

Rob
Linus Walleij July 23, 2012, 2:50 p.m. UTC | #11
On Mon, Jul 23, 2012 at 4:05 PM, Rob Herring <robherring2@gmail.com> wrote:

> Now that I have looked at the code. I think it is simply vgacon is
> postcore_init and pci setup of the i/o mapping is in subsys_init.

Makes perfect sense.

> It curious that you don't get an abort and backtrace though.

I never get that either, it just locks up. Probably some other oddity
in these old boards.

> vgacon is only enabled for footbridge and integrator. I guess the only
> way this worked before is if the bootloader has already setup the bus.

Yes that is the case with most of the "V3 PCI" code, without some
bootloader or "BIOS" (boot monitor) poking, nothing works. Some of
the V3 registers are only just poked once, from the boot monitor or
boot loader.

> So I can add back an early mapping function that these 2 platforms can
> call from .map_io. Something like this:
>
> static inline void __init pci_map_io_early(unsigned long pfn)
> {
>         struct map_desc pci_io_desc = {
>                 .virtual        = PCI_IO_VIRT_BASE,
>                 .type           = MT_DEVICE,
>                 .length         = SZ_64K,
>         };
>
>         pci_io_desc.pfn = pfn;
>         create_mapping(&pci_io_desc);
> }

Wouldn't the same kind of thing be necessary for all x86 systems,
and for any other ARM system that wants to use a VGA console?
How do these system handle it?

BTW: in the integrator_defconfig the VGA console is disabled,
for the very reason that it tends to lock things up if ther is no
graphics card in the machine.

Yours,
Linus Walleij
diff mbox

Patch

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index ac446e3..5d37628 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -261,7 +261,6 @@  config ARCH_INTEGRATOR
 	select GENERIC_CLOCKEVENTS
 	select PLAT_VERSATILE
 	select PLAT_VERSATILE_FPGA_IRQ
-	select NEED_MACH_IO_H
 	select NEED_MACH_MEMORY_H
 	select SPARSE_IRQ
 	select MULTI_IRQ_HANDLER
diff --git a/arch/arm/mach-integrator/include/mach/io.h b/arch/arm/mach-integrator/include/mach/io.h
deleted file mode 100644
index 8de70de..0000000
--- a/arch/arm/mach-integrator/include/mach/io.h
+++ /dev/null
@@ -1,33 +0,0 @@ 
-/*
- *  arch/arm/mach-integrator/include/mach/io.h
- *
- *  Copyright (C) 1999 ARM Limited
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-#ifndef __ASM_ARM_ARCH_IO_H
-#define __ASM_ARM_ARCH_IO_H
-
-/*
- * WARNING: this has to mirror definitions in platform.h
- */
-#define PCI_MEMORY_VADDR        0xe8000000
-#define PCI_CONFIG_VADDR        0xec000000
-#define PCI_V3_VADDR            0xed000000
-#define PCI_IO_VADDR            0xee000000
-
-#define __io(a)			((void __iomem *)(PCI_IO_VADDR + (a)))
-
-#endif
diff --git a/arch/arm/mach-integrator/include/mach/platform.h b/arch/arm/mach-integrator/include/mach/platform.h
index ec467ba..4c03475 100644
--- a/arch/arm/mach-integrator/include/mach/platform.h
+++ b/arch/arm/mach-integrator/include/mach/platform.h
@@ -324,6 +324,10 @@ 
  */
 #define PHYS_PCI_V3_BASE                0x62000000
 
+#define PCI_MEMORY_VADDR		0xe8000000
+#define PCI_CONFIG_VADDR		0xec000000
+#define PCI_V3_VADDR			0xed000000
+
 /* ------------------------------------------------------------------------
  *  Integrator Interrupt Controllers
  * ------------------------------------------------------------------------
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c
index c857501..83bee54 100644
--- a/arch/arm/mach-integrator/integrator_ap.c
+++ b/arch/arm/mach-integrator/integrator_ap.c
@@ -72,7 +72,7 @@ 
  * e8000000	40000000	PCI memory		PHYS_PCI_MEM_BASE	(max 512M)
  * ec000000	61000000	PCI config space	PHYS_PCI_CONFIG_BASE	(max 16M)
  * ed000000	62000000	PCI V3 regs		PHYS_PCI_V3_BASE	(max 64k)
- * ee000000	60000000	PCI IO			PHYS_PCI_IO_BASE	(max 16M)
+ * fee00000	60000000	PCI IO			PHYS_PCI_IO_BASE	(max 16M)
  * ef000000			Cache flush
  * f1000000	10000000	Core module registers
  * f1100000	11000000	System controller registers
@@ -146,11 +146,6 @@  static struct map_desc ap_io_desc[] __initdata = {
 		.pfn		= __phys_to_pfn(PHYS_PCI_V3_BASE),
 		.length		= SZ_64K,
 		.type		= MT_DEVICE
-	}, {
-		.virtual	= PCI_IO_VADDR,
-		.pfn		= __phys_to_pfn(PHYS_PCI_IO_BASE),
-		.length		= SZ_64K,
-		.type		= MT_DEVICE
 	}
 };
 
diff --git a/arch/arm/mach-integrator/pci_v3.c b/arch/arm/mach-integrator/pci_v3.c
index b866880..810f4ec 100644
--- a/arch/arm/mach-integrator/pci_v3.c
+++ b/arch/arm/mach-integrator/pci_v3.c
@@ -374,12 +374,9 @@  static int __init pci_v3_setup_resources(struct pci_sys_data *sys)
 	}
 
 	/*
-	 * the IO resource for this bus
 	 * the mem resource for this bus
 	 * the prefetch mem resource for this bus
 	 */
-	pci_add_resource_offset(&sys->resources,
-				&ioport_resource, sys->io_offset);
 	pci_add_resource_offset(&sys->resources, &non_mem, sys->mem_offset);
 	pci_add_resource_offset(&sys->resources, &pre_mem, sys->mem_offset);