The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/ic/vgavar.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* $NetBSD: vgavar.h,v 1.33 2015/01/14 17:45:27 chs Exp $ */
    2 
    3 /*
    4  * Copyright (c) 1995, 1996 Carnegie-Mellon University.
    5  * All rights reserved.
    6  *
    7  * Author: Chris G. Demetriou
    8  *
    9  * Permission to use, copy, modify and distribute this software and
   10  * its documentation is hereby granted, provided that both the copyright
   11  * notice and this permission notice appear in all copies of the
   12  * software, derivative works or modified versions, and any portions
   13  * thereof, and that both notices appear in supporting documentation.
   14  *
   15  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
   16  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
   17  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
   18  *
   19  * Carnegie Mellon requests users of this software to return to
   20  *
   21  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
   22  *  School of Computer Science
   23  *  Carnegie Mellon University
   24  *  Pittsburgh PA 15213-3890
   25  *
   26  * any improvements or extensions that they make and grant Carnegie the
   27  * rights to redistribute these changes.
   28  */
   29 
   30 #include <sys/callout.h>
   31 
   32 #ifdef _KERNEL_OPT
   33 #include "opt_vga.h"
   34 #endif
   35 
   36 struct vga_handle {
   37         struct pcdisplay_handle vh_ph;
   38         bus_space_handle_t vh_ioh_vga, vh_allmemh;
   39         int vh_mono;
   40 };
   41 #define vh_iot          vh_ph.ph_iot
   42 #define vh_memt         vh_ph.ph_memt
   43 #define vh_ioh_6845     vh_ph.ph_ioh_6845
   44 #define vh_memh         vh_ph.ph_memh
   45 
   46 struct vga_funcs {
   47         int (*vf_ioctl)(void *, u_long, void *, int, struct lwp *);
   48         paddr_t (*vf_mmap)(void *, off_t, int);
   49 };
   50 
   51 struct vga_config {
   52         struct vga_handle hdl;
   53         struct vga_softc *softc;
   54 
   55         int nscreens;
   56         LIST_HEAD(, vgascreen) screens;
   57         struct vgascreen *active; /* current display */
   58         const struct wsscreen_descr *currenttype;
   59 
   60         struct vgascreen *wantedscreen;
   61         void (*switchcb)(void *, int, int);
   62         void *switchcbarg;
   63 
   64         struct callout vc_switch_callout;
   65         int vc_quirks;
   66         int vc_type;
   67         const struct vga_funcs *vc_funcs;
   68 
   69         u_int8_t palette[256 * 3];
   70 #ifndef VGA_RASTERCONSOLE
   71         int currentfontset1, currentfontset2;
   72         int vc_nfontslots;
   73         struct egavga_font *vc_fonts[8]; /* currently loaded */
   74         TAILQ_HEAD(, egavga_font) vc_fontlist; /* LRU queue */
   75 #else
   76         int nfonts;
   77         LIST_HEAD(, vga_raster_font) vc_fontlist;
   78 #endif /* !VGA_RASTERCONSOLE */
   79 };
   80 
   81 struct vga_softc {
   82         device_t sc_dev;
   83         struct vga_config *sc_vc;
   84 };
   85 
   86 static __inline u_int8_t        _vga_attr_read(struct vga_handle *, int);
   87 static __inline void    _vga_attr_write(struct vga_handle *, int, u_int8_t);
   88 static __inline u_int8_t        _vga_ts_read(struct vga_handle *, int);
   89 static __inline void    _vga_ts_write(struct vga_handle *, int, u_int8_t);
   90 static __inline u_int8_t        _vga_gdc_read(struct vga_handle *, int);
   91 static __inline void    _vga_gdc_write(struct vga_handle *, int, u_int8_t);
   92 
   93 #define vga_raw_read(vh, reg) \
   94     bus_space_read_1(vh->vh_iot, vh->vh_ioh_vga, reg)
   95 #define vga_raw_write(vh, reg, value) \
   96     bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, reg, value)
   97 
   98 #define vga_enable(vh) \
   99     vga_raw_write(vh, 0, 0x20)
  100 
  101 #define vga_reset_state(vh) \
  102     (void) bus_space_read_1(vh->vh_iot, vh->vh_ioh_6845, 10)
  103 
  104 static __inline u_int8_t
  105 _vga_attr_read(struct vga_handle *vh, int reg)
  106 {
  107         u_int8_t res;
  108 
  109         /* reset state */
  110         vga_reset_state(vh);
  111 
  112         vga_raw_write(vh, VGA_ATC_INDEX, reg);
  113         res = vga_raw_read(vh, VGA_ATC_DATAR);
  114 
  115         /* XXX unneeded? */
  116         vga_reset_state(vh);
  117 
  118         vga_enable(vh);
  119 
  120         return res;
  121 }
  122 
  123 static __inline void
  124 _vga_attr_write(struct vga_handle *vh, int reg, u_int8_t val)
  125 {
  126 
  127         vga_reset_state(vh);
  128 
  129         vga_raw_write(vh, VGA_ATC_INDEX, reg);
  130         vga_raw_write(vh, VGA_ATC_DATAW, val);
  131 
  132         /* XXX unneeded? */
  133         vga_reset_state(vh);
  134 
  135         vga_enable(vh);
  136 }
  137 
  138 static __inline u_int8_t
  139 _vga_ts_read(struct vga_handle *vh, int reg)
  140 {
  141 
  142         vga_raw_write(vh, VGA_TS_INDEX, reg);
  143         return vga_raw_read(vh, VGA_TS_DATA);
  144 }
  145 
  146 static __inline void
  147 _vga_ts_write(struct vga_handle *vh, int reg, u_int8_t val)
  148 {
  149 
  150         vga_raw_write(vh, VGA_TS_INDEX, reg);
  151         vga_raw_write(vh, VGA_TS_DATA, val);
  152 }
  153 
  154 static __inline u_int8_t
  155 _vga_gdc_read(struct vga_handle *vh, int reg)
  156 {
  157 
  158         vga_raw_write(vh, VGA_GDC_INDEX, reg);
  159         return vga_raw_read(vh, VGA_GDC_DATA);
  160 }
  161 
  162 static __inline void
  163 _vga_gdc_write(struct vga_handle *vh, int reg, u_int8_t val)
  164 {
  165 
  166         vga_raw_write(vh, VGA_GDC_INDEX, reg);
  167         vga_raw_write(vh, VGA_GDC_DATA, val);
  168 }
  169 
  170 #define vga_attr_read(vh, reg) \
  171         _vga_attr_read(vh, offsetof(struct reg_vgaattr, reg))
  172 #define vga_attr_write(vh, reg, val) \
  173         _vga_attr_write(vh, offsetof(struct reg_vgaattr, reg), val)
  174 #define vga_ts_read(vh, reg) \
  175         _vga_ts_read(vh, offsetof(struct reg_vgats, reg))
  176 #define vga_ts_write(vh, reg, val) \
  177         _vga_ts_write(vh, offsetof(struct reg_vgats, reg), val)
  178 #define vga_gdc_read(vh, reg) \
  179         _vga_gdc_read(vh, offsetof(struct reg_vgagdc, reg))
  180 #define vga_gdc_write(vh, reg, val) \
  181         _vga_gdc_write(vh, offsetof(struct reg_vgagdc, reg), val)
  182 
  183 #define vga_6845_read(vh, reg) \
  184         pcdisplay_6845_read(&(vh)->vh_ph, reg)
  185 #define vga_6845_write(vh, reg, val) \
  186         pcdisplay_6845_write(&(vh)->vh_ph, reg, val)
  187 #define _vga_6845_read(vh, reg) \
  188         _pcdisplay_6845_read(&(vh)->vh_ph, reg)
  189 #define _vga_6845_write(vh, reg, val) \
  190         _pcdisplay_6845_write(&(vh)->vh_ph, reg, val)
  191 
  192 int     vga_common_probe(bus_space_tag_t, bus_space_tag_t);
  193 void    vga_common_attach(struct vga_softc *, bus_space_tag_t,
  194                           bus_space_tag_t, int, int, const struct vga_funcs *);
  195 #define VGA_QUIRK_ONEFONT       0x01
  196 #define VGA_QUIRK_NOFASTSCROLL  0x02
  197 int     vga_is_console(bus_space_tag_t, int);
  198 
  199 int     vga_cnattach(bus_space_tag_t, bus_space_tag_t, int, int);
  200 int     vga_cndetach(void);
  201 
  202 void    vga_resume(struct vga_softc *);
  203 
  204 #ifndef VGA_RASTERCONSOLE
  205 struct wsscreen_descr;
  206 void    vga_loadchars(struct vga_handle *, int, int, int, int, const char *);
  207 void    vga_readoutchars(struct vga_handle *, int, int, int, int, char *);
  208 #ifdef VGA_CONSOLE_ATI_BROKEN_FONTSEL
  209 void    vga_copyfont01(struct vga_handle *);
  210 #endif
  211 void    vga_setfontset(struct vga_handle *, int, int);
  212 void    vga_setscreentype(struct vga_handle *, const struct wsscreen_descr *);
  213 #else /* !VGA_RASTERCONSOLE */
  214 void    vga_load_builtinfont(struct vga_handle *, u_int8_t *, int, int);
  215 #endif /* !VGA_RASTERCONSOLE */
  216 void    vga_reset(struct vga_handle *, void (*)(struct vga_handle *));
  217 void    vga_initregs(struct vga_handle *);
  218 
  219 extern int vga_no_builtinfont;

Cache object: a4f59c92ae7e7baa6fb4a64c9de1c192


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.