-#define vucp volatile unsigned char *
-#define vusp volatile unsigned short *
-#define vuip volatile unsigned int *
-#define vulp volatile unsigned long *
-
-#ifdef CONFIG_VGA_HOSE
-extern struct pci_controller *pci_vga_hose;
-
-# define __marvel_is_port_vga(a) \
- (((a) >= 0x3b0) && ((a) < 0x3e0) && ((a) != 0x3b3) && ((a) != 0x3d3))
-# define __marvel_is_mem_vga(a) (((a) >= 0xa0000) && ((a) <= 0xc0000))
-# define FIXUP_IOADDR_VGA(a) do { \
- if (pci_vga_hose && __marvel_is_port_vga(a)) \
- a += pci_vga_hose->io_space->start; \
- } while(0)
-#else
-# define FIXUP_IOADDR_VGA(a)
-#endif
-
-#define __marvel_is_port_kbd(a) (((a) == 0x60) || ((a) == 0x64))
-#define __marvel_is_port_rtc(a) (((a) == 0x70) || ((a) == 0x71))
-
-#define FIXUP_IOADDR_LEGACY(a)
-
-#define FIXUP_IOADDR(a) do { \
- FIXUP_IOADDR_VGA(a); \
- FIXUP_IOADDR_LEGACY(a); \
- } while(0)
-
-#if 0
-# define IOBUG(x) printk x
-# define IOBUG_FILTER_IOADDR(a, x) \
- if (!__marvel_is_port_kbd(a) && !__marvel_is_port_rtc(a)) IOBUG(x)
-#else
-# define IOBUG(x)
-# define IOBUG_FILTER_IOADDR(a, x)
-#endif
-
-extern u8 __marvel_rtc_io(int write, u8 b, unsigned long addr);
-#define __marvel_rtc_inb(a) __marvel_rtc_io(0, 0, (a))
-#define __marvel_rtc_outb(b, a) __marvel_rtc_io(1, (b), (a))
-
-__EXTERN_INLINE int marvel_is_ioaddr(unsigned long addr)
-{
- return (addr & (1UL << 40)) != 0; /*FIXME - hardwire*/
-}
-
-__EXTERN_INLINE u8 marvel_inb(unsigned long addr)
-{
- FIXUP_IOADDR(addr);
- if (!marvel_is_ioaddr(addr)) {
- if (__marvel_is_port_kbd(addr))
- return (u8)0;
- if (__marvel_is_port_rtc(addr))
- return __marvel_rtc_inb(addr);
- IOBUG_FILTER_IOADDR(addr,
- ("Bad IO addr %lx - reading -1\n", addr));
- return (u8)-1;
- }
- return __kernel_ldbu(*(vucp)addr);
-}
-
-__EXTERN_INLINE void marvel_outb(u8 b, unsigned long addr)
-{
- FIXUP_IOADDR(addr);
- if (!marvel_is_ioaddr(addr)) {
- if (__marvel_is_port_rtc(addr))
- return (void)__marvel_rtc_outb(b, addr);
- IOBUG_FILTER_IOADDR(addr,
- ("Bad IO addr %lx - reading -1\n", addr));
- return;
- }
- __kernel_stb(b, *(vucp)addr);
- mb();
-}
-
-__EXTERN_INLINE u16 marvel_inw(unsigned long addr)
-{
- FIXUP_IOADDR(addr);
- if (!marvel_is_ioaddr(addr)) {
- IOBUG_FILTER_IOADDR(addr,
- ("Bad IO addr %lx - reading -1\n", addr));
- return (u16)-1;
- }
- return __kernel_ldwu(*(vusp)addr);
-}
-
-__EXTERN_INLINE void marvel_outw(u16 w, unsigned long addr)
-{
- FIXUP_IOADDR(addr);
- if (!marvel_is_ioaddr(addr)) {
- IOBUG_FILTER_IOADDR(addr,
- ("Bad IO addr %lx - reading -1\n", addr));
- return;
- }
- __kernel_stw(w, *(vusp)addr);
- mb();
-}
-
-__EXTERN_INLINE u32 marvel_inl(unsigned long addr)
-{
- FIXUP_IOADDR(addr);
- if (!marvel_is_ioaddr(addr)) {
- IOBUG_FILTER_IOADDR(addr,
- ("Bad IO addr %lx - reading -1\n", addr));
- return (u32)-1;
- }
- return *(vuip)addr;
-}
-
-__EXTERN_INLINE void marvel_outl(u32 l, unsigned long addr)
-{
- FIXUP_IOADDR(addr);
- if (!marvel_is_ioaddr(addr)) {
- IOBUG_FILTER_IOADDR(addr,
- ("Bad IO addr %lx - reading -1\n", addr));
- return;
- }
- *(vuip)addr = l;
- mb();
-}
-