Skip to content
  • Hemant Pedanekar's avatar
    davinci: Move IO device mapping macros from io.h to hardware.h · 9eb7115b
    Hemant Pedanekar authored
    
    
    This patch takes out IO mapping macros from mach/io.h and puts them in
    mach/hardware.h avoiding need to include mach/io.h in various files such as
    serial.h, vmalloc.h etc.
    
    The main reason to avoid inclusion of mach/io.h is, when default in/out macros
    are overridden by machine specific functions (e.g., in case of PCI I/O), they
    result into linker error. An example snippet and error snapshot is listed below.
    
    Following code in mach/io.h:
    
    	#define inl(p)  my_inl()
    
    	static inline unsigned int my_inl(unsigned int addr)
    	{
    		if (IS_PCI_IO(addr))
    			return pci_inl ();
    		else
    			return le32_to_cpu(__raw_readl(__typesafe_io(addr)));
    	}
    
    leads to error:
    	LD      arch/arm/boot/compressed/vmlinux
    	arch/arm/boot/compressed/misc.o: In function `my_inl':
    	misc.c:(.text+0x2744): undefined reference to `pci_inl'
    	make[2]: *** [arch/arm/boot/compressed/vmlinux] Error 1
    
    This is because mach/io.h gets included in arch/arm/boot/compressed/misc.c
    through mach/serial.h but pci.c file, which defines 'pci_inl' doesn't get built
    into compressed vmlinux.
    
    Signed-off-by: default avatarHemant Pedanekar <hemantp@ti.com>
    Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
    9eb7115b