Skip to contentSkip to conversation

ARM: integrator: pciv3: do not remap IO so early

PATCH New Linus Walleij 3 participants 5 messages Jun 25, 2013 – Jun 26, 2013

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 3/3 ARM: integrator: pciv3: do not remap IO so early

Instead of remapping the IO memory very early with pci_map_io_early(), use pci_ioremap_io() when setting up resources as most PCI bridges do. Also request this resource properly.

---
 arch/arm/mach-integrator/pci_v3.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
arch/arm/mach-integrator/pci_v3.c +7 -1
index bef1005..029d670 100644
@@ -538,6 +538,13 @@ static int __init pci_v3_setup_resources(struct pci_sys_data *sys)
 		       "memory region\n");
 		return -EBUSY;
 	}
+	if (request_resource(&iomem_resource, &io_mem)) {
+		release_resource(&io_mem);
+		printk(KERN_ERR "PCI: unable to allocate I/O "
+		       "memory region\n");
+		return -EBUSY;
+	}
+	pci_ioremap_io(0, io_mem.start);
 
 	/*
 	 * the mem resource for this bus
@@ -1039,6 +1046,5 @@ int __init pci_v3_early_init(void)
 {
 	iotable_init(pci_v3_io_desc, ARRAY_SIZE(pci_v3_io_desc));
 	vga_base = (unsigned long)PCI_MEMORY_VADDR;
-	pci_map_io_early(__phys_to_pfn(PHYS_PCI_IO_BASE));
 	return 0;
 }
Signature · 1 line
1.8.1.4
#1 lore raw

PATCH 3/3 ARM: integrator: pciv3: do not remap IO so early

Quoted 4 lines · Linus Walleij

Instead of remapping the IO memory very early with pci_map_io_early(), use pci_ioremap_io() when setting up resources as most PCI bridges do. Also request this resource properly.

What impact does this have with a VGA card plugged in?

#2 lore raw

PATCH 3/3 ARM: integrator: pciv3: do not remap IO so early

Quoted 7 lines · Russell King - ARM Linux
Quoted 4 lines · Linus Walleij

Instead of remapping the IO memory very early with pci_map_io_early(), use pci_ioremap_io() when setting up resources as most PCI bridges do. Also request this resource properly.

What impact does this have with a VGA card plugged in?

It probably won't work. It's my fault for misreading the driver:
I saw it didn't do the pci_ioremap_io, but didn't remember the *_early call being present in the platform.

Arnd

#3 lore raw

PATCH 3/3 ARM: integrator: pciv3: do not remap IO so early

Quoted 7 lines · Arnd Bergmann
Quoted 6 lines · Russell King - ARM Linux
Quoted 4 lines · Linus Walleij

Instead of remapping the IO memory very early with pci_map_io_early(), use pci_ioremap_io() when setting up resources as most PCI bridges do. Also request this resource properly.

Quoted 5 lines
Quoted 1 line

What impact does this have with a VGA card plugged in?

It probably won't work. It's my fault for misreading the driver:
I saw it didn't do the pci_ioremap_io, but didn't remember the *_early call being present in the platform.

I haven't got the VGA working (hacking on the biosemu in U-boot from time to time, will get there I hope). So keep this patch out for now.

However I don't see how the VGA console is using iospace? We set vga_base to the start of non-prefetched memory, and assume the first slot is the VGA card, then it goes poking into the screen memory or something... but maybe it's poking the ioports in some runpath I can't see :-P

Yours,
Linus Walleij

#4 lore raw

PATCH 3/3 ARM: integrator: pciv3: do not remap IO so early

Quoted 18 lines · Linus Walleij
Quoted 7 lines · Arnd Bergmann
Quoted 6 lines · Russell King - ARM Linux
Quoted 4 lines · Linus Walleij

Instead of remapping the IO memory very early with pci_map_io_early(), use pci_ioremap_io() when setting up resources as most PCI bridges do. Also request this resource properly.

Quoted 5 lines
Quoted 1 line

What impact does this have with a VGA card plugged in?

It probably won't work. It's my fault for misreading the driver:
I saw it didn't do the pci_ioremap_io, but didn't remember the *_early call being present in the platform.

I haven't got the VGA working (hacking on the biosemu in U-boot from time to time, will get there I hope). So keep this patch out for now.

Quoted 6 lines

However I don't see how the VGA console is using iospace? We set vga_base to the start of non-prefetched memory, and assume the first slot is the VGA card, then it goes poking into the screen memory or something... but maybe it's poking the ioports in some runpath I can't see :-P

I think you are looking for vga_io_w()/vga_io_r() in case of vga16fb. vgacon uses inb_p/outb_p directly.

Arnd