 97a29d59fc
			
		
	
	
	97a29d59fc
	
	
	
		
			
			The problem in
commit fea80311a9
Author: Randy Dunlap <rdunlap@xenotime.net>
Date:   Sun Jul 24 11:39:14 2011 -0700
    iomap: make IOPORT/PCI mapping functions conditional
is that if your architecture supplies pci_iomap/pci_iounmap, it expects
always to supply them.  Adding empty body defitions in the !CONFIG_PCI
case, which is what this patch does, breaks the parisc compile because
the functions become doubly defined.  It took us a while to spot this,
because we don't actually build !CONFIG_PCI very often (only if someone
is brave enough to test the snake/asp machines).
Since the note in the commit log says this is to fix a
CONFIG_GENERIC_IOMAP issue (which it does because CONFIG_GENERIC_IOMAP
supplies pci_iounmap only if CONFIG_PCI is set), there should actually
have been a condition upon this.  This should make sure no other
architecture's !CONFIG_PCI compile breaks in the same way as parisc.
The fix had to be updated to take account of the GENERIC_PCI_IOMAP
separation.
Reported-by: Rolf Eike Beer <eike@sf-mail.de>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
		
	
			
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Generic I/O port emulation, based on MN10300 code
 | |
|  *
 | |
|  * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
 | |
|  * Written by David Howells (dhowells@redhat.com)
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU General Public Licence
 | |
|  * as published by the Free Software Foundation; either version
 | |
|  * 2 of the Licence, or (at your option) any later version.
 | |
|  */
 | |
| #ifndef __ASM_GENERIC_PCI_IOMAP_H
 | |
| #define __ASM_GENERIC_PCI_IOMAP_H
 | |
| 
 | |
| struct pci_dev;
 | |
| #ifdef CONFIG_PCI
 | |
| /* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
 | |
| extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
 | |
| /* Create a virtual mapping cookie for a port on a given PCI device.
 | |
|  * Do not call this directly, it exists to make it easier for architectures
 | |
|  * to override */
 | |
| #ifdef CONFIG_NO_GENERIC_PCI_IOPORT_MAP
 | |
| extern void __iomem *__pci_ioport_map(struct pci_dev *dev, unsigned long port,
 | |
| 				      unsigned int nr);
 | |
| #else
 | |
| #define __pci_ioport_map(dev, port, nr) ioport_map((port), (nr))
 | |
| #endif
 | |
| 
 | |
| #elif defined(CONFIG_GENERIC_PCI_IOMAP)
 | |
| static inline void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max)
 | |
| {
 | |
| 	return NULL;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* __ASM_GENERIC_IO_H */
 |