diff options
Diffstat (limited to 'include/asm-alpha')
-rw-r--r-- | include/asm-alpha/core_titan.h | 7 | ||||
-rw-r--r-- | include/asm-alpha/core_tsunami.h | 15 | ||||
-rw-r--r-- | include/asm-alpha/vga.h | 31 |
3 files changed, 35 insertions, 18 deletions
diff --git a/include/asm-alpha/core_titan.h b/include/asm-alpha/core_titan.h index a64ccbff7d98..a17f6f33b68e 100644 --- a/include/asm-alpha/core_titan.h +++ b/include/asm-alpha/core_titan.h @@ -380,12 +380,7 @@ struct el_PRIVATEER_envdata_mcheck { /* * Memory functions. all accesses are done through linear space. */ - -__EXTERN_INLINE void __iomem *titan_ioportmap(unsigned long addr) -{ - return (void __iomem *)(addr + TITAN_IO_BIAS); -} - +extern void __iomem *titan_ioportmap(unsigned long addr); extern void __iomem *titan_ioremap(unsigned long addr, unsigned long size); extern void titan_iounmap(volatile void __iomem *addr); diff --git a/include/asm-alpha/core_tsunami.h b/include/asm-alpha/core_tsunami.h index 44e635d2c571..58d4fe48742c 100644 --- a/include/asm-alpha/core_tsunami.h +++ b/include/asm-alpha/core_tsunami.h @@ -2,6 +2,7 @@ #define __ALPHA_TSUNAMI__H__ #include <linux/types.h> +#include <linux/pci.h> #include <asm/compiler.h> /* @@ -302,18 +303,8 @@ struct el_TSUNAMI_sysdata_mcheck { /* * Memory functions. all accesses are done through linear space. */ - -__EXTERN_INLINE void __iomem *tsunami_ioportmap(unsigned long addr) -{ - return (void __iomem *)(addr + TSUNAMI_IO_BIAS); -} - -__EXTERN_INLINE void __iomem *tsunami_ioremap(unsigned long addr, - unsigned long size) -{ - return (void __iomem *)(addr + TSUNAMI_MEM_BIAS); -} - +extern void __iomem *tsunami_ioportmap(unsigned long addr); +extern void __iomem *tsunami_ioremap(unsigned long addr, unsigned long size); __EXTERN_INLINE int tsunami_is_ioaddr(unsigned long addr) { return addr >= TSUNAMI_BASE; diff --git a/include/asm-alpha/vga.h b/include/asm-alpha/vga.h index ed06f59b544d..e8df1e7aae6b 100644 --- a/include/asm-alpha/vga.h +++ b/include/asm-alpha/vga.h @@ -46,6 +46,37 @@ extern void scr_memcpyw(u16 *d, const u16 *s, unsigned int count); #define vga_readb(a) readb((u8 __iomem *)(a)) #define vga_writeb(v,a) writeb(v, (u8 __iomem *)(a)) +#ifdef CONFIG_VGA_HOSE +#include <linux/ioport.h> +#include <linux/pci.h> + +extern struct pci_controller *pci_vga_hose; + +# define __is_port_vga(a) \ + (((a) >= 0x3b0) && ((a) < 0x3e0) && \ + ((a) != 0x3b3) && ((a) != 0x3d3)) + +# define __is_mem_vga(a) \ + (((a) >= 0xa0000) && ((a) <= 0xc0000)) + +# define FIXUP_IOADDR_VGA(a) do { \ + if (pci_vga_hose && __is_port_vga(a)) \ + (a) += pci_vga_hose->io_space->start; \ + } while(0) + +# define FIXUP_MEMADDR_VGA(a) do { \ + if (pci_vga_hose && __is_mem_vga(a)) \ + (a) += pci_vga_hose->mem_space->start; \ + } while(0) + +#else /* CONFIG_VGA_HOSE */ +# define pci_vga_hose 0 +# define __is_port_vga(a) 0 +# define __is_mem_vga(a) 0 +# define FIXUP_IOADDR_VGA(a) +# define FIXUP_MEMADDR_VGA(a) +#endif /* CONFIG_VGA_HOSE */ + #define VGA_MAP_MEM(x,s) ((unsigned long) ioremap(x, s)) #endif |