LCOV - code coverage report
Current view: top level - dev/ic - vgavar.h (source / functions) Hit Total Coverage
Test: 6.4 Lines: 0 28 0.0 %
Date: 2018-10-19 03:25:38 Functions: 0 6 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* $OpenBSD: vgavar.h,v 1.13 2015/07/26 03:17:07 miod Exp $ */
       2             : /* $NetBSD: vgavar.h,v 1.4 2000/06/17 07:11:50 soda Exp $ */
       3             : 
       4             : /*
       5             :  * Copyright (c) 1995, 1996 Carnegie-Mellon University.
       6             :  * All rights reserved.
       7             :  *
       8             :  * Author: Chris G. Demetriou
       9             :  * 
      10             :  * Permission to use, copy, modify and distribute this software and
      11             :  * its documentation is hereby granted, provided that both the copyright
      12             :  * notice and this permission notice appear in all copies of the
      13             :  * software, derivative works or modified versions, and any portions
      14             :  * thereof, and that both notices appear in supporting documentation.
      15             :  * 
      16             :  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 
      17             :  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND 
      18             :  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
      19             :  * 
      20             :  * Carnegie Mellon requests users of this software to return to
      21             :  *
      22             :  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
      23             :  *  School of Computer Science
      24             :  *  Carnegie Mellon University
      25             :  *  Pittsburgh PA 15213-3890
      26             :  *
      27             :  * any improvements or extensions that they make and grant Carnegie the
      28             :  * rights to redistribute these changes.
      29             :  */
      30             : 
      31             : #include <sys/timeout.h>
      32             : 
      33             : struct vga_handle {
      34             :         struct pcdisplay_handle vh_ph;
      35             :         bus_space_handle_t vh_ioh_vga, vh_allmemh;
      36             :         int vh_mono;
      37             : };
      38             : #define vh_iot vh_ph.ph_iot
      39             : #define vh_memt vh_ph.ph_memt
      40             : #define vh_ioh_6845 vh_ph.ph_ioh_6845
      41             : #define vh_memh vh_ph.ph_memh
      42             : 
      43             : struct vgascreen {
      44             :         struct pcdisplayscreen pcs;
      45             :         LIST_ENTRY(vgascreen) next;
      46             : 
      47             :         /* videostate */
      48             :         struct vga_config *cfg;
      49             :         /* font data */
      50             :         struct vgafont *fontset1, *fontset2;
      51             : 
      52             :         int mindispoffset, maxdispoffset;
      53             :         int vga_rollover;
      54             : };
      55             : 
      56             : struct vga_config {
      57             :         struct vga_handle hdl;
      58             : 
      59             :         struct device *vc_softc;
      60             :         int vc_type;
      61             :         int nscreens;
      62             :         LIST_HEAD(, vgascreen) screens;
      63             :         struct vgascreen *active; /* current display */
      64             :         const struct wsscreen_descr *currenttype;
      65             :         int currentfontset1, currentfontset2;
      66             : 
      67             : #define VGA_MAXFONT 8
      68             :         struct vgafont *vc_fonts[VGA_MAXFONT];
      69             :         uint8_t vc_palette[256 * 3];
      70             : 
      71             :         struct vgascreen *wantedscreen;
      72             :         void (*switchcb)(void *, int, int);
      73             :         void *switchcbarg;
      74             : 
      75             :         paddr_t (*vc_mmap)(void *, off_t, int);
      76             : 
      77             :         struct timeout vc_switch_timeout;
      78             : 
      79             : #ifdef __alpha__
      80             :         /* placeholder for a custom wsscreen_descr for odd resolutions */
      81             :         struct wsscreen_descr custom_scr;
      82             :         struct wsscreen_descr *custom_scrlist[1];
      83             :         struct wsscreen_list custom_list;
      84             : #endif
      85             : };
      86             : 
      87             : static inline u_int8_t _vga_attr_read(struct vga_handle *, int);
      88             : static inline void _vga_attr_write(struct vga_handle *, int, u_int8_t);
      89             : static inline u_int8_t _vga_ts_read(struct vga_handle *, int);
      90             : static inline void _vga_ts_write(struct vga_handle *, int, u_int8_t);
      91             : static inline u_int8_t _vga_gdc_read(struct vga_handle *, int);
      92             : static inline void _vga_gdc_write(struct vga_handle *, int, u_int8_t);
      93             : 
      94             : #define vga_raw_read(vh, reg) \
      95             :         bus_space_read_1(vh->vh_iot, vh->vh_ioh_vga, reg)
      96             : #define vga_raw_write(vh, reg, value) \
      97             :         bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, reg, value)
      98             : 
      99             : #define vga_enable(vh) \
     100             :         vga_raw_write(vh, 0, 0x20);
     101             : 
     102             : static inline u_int8_t
     103           0 : _vga_attr_read(struct vga_handle *vh, int reg)
     104             : {
     105             :         u_int8_t res;
     106             : 
     107             :         /* reset state */
     108           0 :         (void) bus_space_read_1(vh->vh_iot, vh->vh_ioh_6845, 10);
     109             : 
     110           0 :         vga_raw_write(vh, VGA_ATC_INDEX, reg);
     111           0 :         res = vga_raw_read(vh, VGA_ATC_DATAR);
     112             : 
     113             :         /* reset state XXX unneeded? */
     114           0 :         (void) bus_space_read_1(vh->vh_iot, vh->vh_ioh_6845, 10);
     115             : 
     116           0 :         vga_enable(vh);
     117             : 
     118           0 :         return (res);
     119             : }
     120             : 
     121             : static inline void
     122           0 : _vga_attr_write(struct vga_handle *vh, int reg, u_int8_t val)
     123             : {
     124             :         /* reset state */
     125           0 :         (void) bus_space_read_1(vh->vh_iot, vh->vh_ioh_6845, 10);
     126             : 
     127           0 :         vga_raw_write(vh, VGA_ATC_INDEX, reg);
     128           0 :         vga_raw_write(vh, VGA_ATC_DATAW, val);
     129             : 
     130             :         /* reset state XXX unneeded? */
     131           0 :         (void) bus_space_read_1(vh->vh_iot, vh->vh_ioh_6845, 10);
     132             : 
     133           0 :         vga_enable(vh);
     134           0 : }
     135             : 
     136             : static inline u_int8_t
     137           0 : _vga_ts_read(struct vga_handle *vh, int reg)
     138             : {
     139           0 :         vga_raw_write(vh, VGA_TS_INDEX, reg);
     140           0 :         return (vga_raw_read(vh, VGA_TS_DATA));
     141             : }
     142             : 
     143             : static inline void
     144           0 : _vga_ts_write(struct vga_handle *vh, int reg, u_int8_t val)
     145             : {
     146           0 :         vga_raw_write(vh, VGA_TS_INDEX, reg);
     147           0 :         vga_raw_write(vh, VGA_TS_DATA, val);
     148           0 : }
     149             : 
     150             : static inline u_int8_t
     151           0 : _vga_gdc_read(struct vga_handle *vh, int reg)
     152             : {
     153           0 :         vga_raw_write(vh, VGA_GDC_INDEX, reg);
     154           0 :         return (vga_raw_read(vh, VGA_GDC_DATA));
     155             : }
     156             : 
     157             : static inline void
     158           0 : _vga_gdc_write(struct vga_handle *vh, int reg, u_int8_t val)
     159             : {
     160           0 :         vga_raw_write(vh, VGA_GDC_INDEX, reg);
     161           0 :         vga_raw_write(vh, VGA_GDC_DATA, val);
     162           0 : }
     163             : 
     164             : #define vga_attr_read(vh, reg) \
     165             :         _vga_attr_read(vh, offsetof(struct reg_vgaattr, reg))
     166             : #define vga_attr_write(vh, reg, val) \
     167             :         _vga_attr_write(vh, offsetof(struct reg_vgaattr, reg), val)
     168             : #define vga_ts_read(vh, reg) \
     169             :         _vga_ts_read(vh, offsetof(struct reg_vgats, reg))
     170             : #define vga_ts_write(vh, reg, val) \
     171             :         _vga_ts_write(vh, offsetof(struct reg_vgats, reg), val)
     172             : #define vga_gdc_read(vh, reg) \
     173             :         _vga_gdc_read(vh, offsetof(struct reg_vgagdc, reg))
     174             : #define vga_gdc_write(vh, reg, val) \
     175             :         _vga_gdc_write(vh, offsetof(struct reg_vgagdc, reg), val)
     176             : 
     177             : #define vga_6845_read(vh, reg) \
     178             :         pcdisplay_6845_read(&(vh)->vh_ph, reg)
     179             : #define vga_6845_write(vh, reg, val) \
     180             :         pcdisplay_6845_write(&(vh)->vh_ph, reg, val)
     181             : 
     182             : int     vga_common_probe(bus_space_tag_t, bus_space_tag_t);
     183             : struct vga_config *
     184             :         vga_common_attach(struct device *, bus_space_tag_t, bus_space_tag_t,
     185             :             int);
     186             : struct vga_config *
     187             :         vga_extended_attach(struct device *, bus_space_tag_t, bus_space_tag_t,
     188             :             int, paddr_t (*)(void *, off_t, int));
     189             : int     vga_is_console(bus_space_tag_t, int);
     190             : int     vga_cnattach(bus_space_tag_t, bus_space_tag_t, int, int);
     191             : 
     192             : struct wsscreen_descr;
     193             : void    vga_loadchars(struct vga_handle *, int, int, int, int, char *);
     194             : void    vga_restore_fonts(struct vga_config *);
     195             : void    vga_restore_palette(struct vga_config *);
     196             : void    vga_save_palette(struct vga_config *);
     197             : void    vga_setfontset(struct vga_handle *, int, int);
     198             : void    vga_setscreentype(struct vga_handle *, const struct wsscreen_descr *);
     199             : #if NVGA_PCI > 0
     200             : int     vga_pci_ioctl(void *, u_long, caddr_t, int, struct proc *); 
     201             : #endif

Generated by: LCOV version 1.13