forked from mirrors/linux
		
	MIPS: implement architecture-specific 'pci_remap_iospace()'
To make PCI IO work we need to properly virtually map IO cpu physical address and set this virtual address as the address of the first PCI IO port which is set using function 'set_io_port_base()'. Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com> Link: https://lore.kernel.org/r/20210925203224.10419-6-sergio.paracuellos@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									7c2584faa1
								
							
						
					
					
						commit
						9f76779f24
					
				
					 2 changed files with 16 additions and 0 deletions
				
			
		| 
						 | 
					@ -20,6 +20,8 @@
 | 
				
			||||||
#include <linux/list.h>
 | 
					#include <linux/list.h>
 | 
				
			||||||
#include <linux/of.h>
 | 
					#include <linux/of.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define pci_remap_iospace pci_remap_iospace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CONFIG_PCI_DRIVERS_LEGACY
 | 
					#ifdef CONFIG_PCI_DRIVERS_LEGACY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,3 +46,17 @@ void pcibios_fixup_bus(struct pci_bus *bus)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pci_read_bridge_bases(bus);
 | 
						pci_read_bridge_bases(bus);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						unsigned long vaddr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (res->start != 0) {
 | 
				
			||||||
 | 
							WARN_ONCE(1, "resource start address is not zero\n");
 | 
				
			||||||
 | 
							return -ENODEV;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						vaddr = (unsigned long)ioremap(phys_addr, resource_size(res));
 | 
				
			||||||
 | 
						set_io_port_base(vaddr);
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue