linux/arch/alpha/include/asm/vga.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 *      Access to VGA videoram
   4 *
   5 *      (c) 1998 Martin Mares <mj@ucw.cz>
   6 */
   7
   8#ifndef _LINUX_ASM_VGA_H_
   9#define _LINUX_ASM_VGA_H_
  10
  11#include <asm/io.h>
  12
  13#define VT_BUF_HAVE_RW
  14#define VT_BUF_HAVE_MEMSETW
  15#define VT_BUF_HAVE_MEMCPYW
  16
  17static inline void scr_writew(u16 val, volatile u16 *addr)
  18{
  19        if (__is_ioaddr(addr))
  20                __raw_writew(val, (volatile u16 __iomem *) addr);
  21        else
  22                *addr = val;
  23}
  24
  25static inline u16 scr_readw(volatile const u16 *addr)
  26{
  27        if (__is_ioaddr(addr))
  28                return __raw_readw((volatile const u16 __iomem *) addr);
  29        else
  30                return *addr;
  31}
  32
  33static inline void scr_memsetw(u16 *s, u16 c, unsigned int count)
  34{
  35        if (__is_ioaddr(s))
  36                memsetw_io((u16 __iomem *) s, c, count);
  37        else
  38                memset16(s, c, count / 2);
  39}
  40
  41/* Do not trust that the usage will be correct; analyze the arguments.  */
  42extern void scr_memcpyw(u16 *d, const u16 *s, unsigned int count);
  43
  44/* ??? These are currently only used for downloading character sets.  As
  45   such, they don't need memory barriers.  Is this all they are intended
  46   to be used for?  */
  47#define vga_readb(a)    readb((u8 __iomem *)(a))
  48#define vga_writeb(v,a) writeb(v, (u8 __iomem *)(a))
  49
  50#ifdef CONFIG_VGA_HOSE
  51#include <linux/ioport.h>
  52#include <linux/pci.h>
  53
  54extern struct pci_controller *pci_vga_hose;
  55
  56# define __is_port_vga(a)       \
  57        (((a) >= 0x3b0) && ((a) < 0x3e0) && \
  58         ((a) != 0x3b3) && ((a) != 0x3d3))
  59
  60# define __is_mem_vga(a) \
  61        (((a) >= 0xa0000) && ((a) <= 0xc0000))
  62
  63# define FIXUP_IOADDR_VGA(a) do {                       \
  64        if (pci_vga_hose && __is_port_vga(a))     \
  65                (a) += pci_vga_hose->io_space->start;     \
  66 } while(0)
  67
  68# define FIXUP_MEMADDR_VGA(a) do {                       \
  69        if (pci_vga_hose && __is_mem_vga(a))     \
  70                (a) += pci_vga_hose->mem_space->start; \
  71 } while(0)
  72
  73#else /* CONFIG_VGA_HOSE */
  74# define pci_vga_hose 0
  75# define __is_port_vga(a) 0
  76# define __is_mem_vga(a) 0
  77# define FIXUP_IOADDR_VGA(a)
  78# define FIXUP_MEMADDR_VGA(a)
  79#endif /* CONFIG_VGA_HOSE */
  80
  81#define VGA_MAP_MEM(x,s)        ((unsigned long) ioremap(x, s))
  82
  83#endif
  84