[BACK]Return to vgavar.h CVS log [TXT][DIR] Up to [local] / sys / dev / ic

Annotation of sys/dev/ic/vgavar.h, Revision 1.1.1.1

1.1       nbrk        1: /* $OpenBSD: vgavar.h,v 1.8 2002/07/12 20:17:03 mickey 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 vga_config {
                     44:        struct vga_handle hdl;
                     45:
                     46:        struct device *vc_softc;
                     47:        int vc_type;
                     48:        int nscreens;
                     49:        LIST_HEAD(, vgascreen) screens;
                     50:        struct vgascreen *active; /* current display */
                     51:        const struct wsscreen_descr *currenttype;
                     52:        int currentfontset1, currentfontset2;
                     53:
                     54:        struct vgafont *vc_fonts[8];
                     55:
                     56:        struct vgascreen *wantedscreen;
                     57:        void (*switchcb)(void *, int, int);
                     58:        void *switchcbarg;
                     59:
                     60:        paddr_t (*vc_mmap)(void *, off_t, int);
                     61:
                     62:        struct timeout vc_switch_timeout;
                     63: };
                     64:
                     65: static inline u_int8_t _vga_attr_read(struct vga_handle *, int);
                     66: static inline void _vga_attr_write(struct vga_handle *, int, u_int8_t);
                     67: static inline u_int8_t _vga_ts_read(struct vga_handle *, int);
                     68: static inline void _vga_ts_write(struct vga_handle *, int, u_int8_t);
                     69: static inline u_int8_t _vga_gdc_read(struct vga_handle *, int);
                     70: static inline void _vga_gdc_write(struct vga_handle *, int, u_int8_t);
                     71:
                     72: static inline u_int8_t _vga_attr_read(vh, reg)
                     73:        struct vga_handle *vh;
                     74:        int reg;
                     75: {
                     76:        u_int8_t res;
                     77:
                     78:        /* reset state */
                     79:        (void) bus_space_read_1(vh->vh_iot, vh->vh_ioh_6845, 10);
                     80:
                     81:        bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, VGA_ATC_INDEX, reg);
                     82:        res = bus_space_read_1(vh->vh_iot, vh->vh_ioh_vga, VGA_ATC_DATAR);
                     83:
                     84:        /* reset state XXX unneeded? */
                     85:        (void) bus_space_read_1(vh->vh_iot, vh->vh_ioh_6845, 10);
                     86:
                     87:        /* enable */
                     88:        bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, 0, 0x20);
                     89:
                     90:        return (res);
                     91: }
                     92:
                     93: static inline void _vga_attr_write(vh, reg, val)
                     94:        struct vga_handle *vh;
                     95:        int reg;
                     96:        u_int8_t val;
                     97: {
                     98:        /* reset state */
                     99:        (void) bus_space_read_1(vh->vh_iot, vh->vh_ioh_6845, 10);
                    100:
                    101:        bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, VGA_ATC_INDEX, reg);
                    102:        bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, VGA_ATC_DATAW, val);
                    103:
                    104:        /* reset state XXX unneeded? */
                    105:        (void) bus_space_read_1(vh->vh_iot, vh->vh_ioh_6845, 10);
                    106:
                    107:        /* enable */
                    108:        bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, 0, 0x20);
                    109: }
                    110:
                    111: static inline u_int8_t _vga_ts_read(vh, reg)
                    112:        struct vga_handle *vh;
                    113:        int reg;
                    114: {
                    115:        bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, VGA_TS_INDEX, reg);
                    116:        return (bus_space_read_1(vh->vh_iot, vh->vh_ioh_vga, VGA_TS_DATA));
                    117: }
                    118:
                    119: static inline void _vga_ts_write(vh, reg, val)
                    120:        struct vga_handle *vh;
                    121:        int reg;
                    122:        u_int8_t val;
                    123: {
                    124:        bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, VGA_TS_INDEX, reg);
                    125:        bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, VGA_TS_DATA, val);
                    126: }
                    127:
                    128: static inline u_int8_t _vga_gdc_read(vh, reg)
                    129:        struct vga_handle *vh;
                    130:        int reg;
                    131: {
                    132:        bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, VGA_GDC_INDEX, reg);
                    133:        return (bus_space_read_1(vh->vh_iot, vh->vh_ioh_vga, VGA_GDC_DATA));
                    134: }
                    135:
                    136: static inline void _vga_gdc_write(vh, reg, val)
                    137:        struct vga_handle *vh;
                    138:        int reg;
                    139:        u_int8_t val;
                    140: {
                    141:        bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, VGA_GDC_INDEX, reg);
                    142:        bus_space_write_1(vh->vh_iot, vh->vh_ioh_vga, VGA_GDC_DATA, val);
                    143: }
                    144:
                    145: #define vga_attr_read(vh, reg) \
                    146:        _vga_attr_read(vh, offsetof(struct reg_vgaattr, reg))
                    147: #define vga_attr_write(vh, reg, val) \
                    148:        _vga_attr_write(vh, offsetof(struct reg_vgaattr, reg), val)
                    149: #define vga_ts_read(vh, reg) \
                    150:        _vga_ts_read(vh, offsetof(struct reg_vgats, reg))
                    151: #define vga_ts_write(vh, reg, val) \
                    152:        _vga_ts_write(vh, offsetof(struct reg_vgats, reg), val)
                    153: #define vga_gdc_read(vh, reg) \
                    154:        _vga_gdc_read(vh, offsetof(struct reg_vgagdc, reg))
                    155: #define vga_gdc_write(vh, reg, val) \
                    156:        _vga_gdc_write(vh, offsetof(struct reg_vgagdc, reg), val)
                    157:
                    158: #define vga_6845_read(vh, reg) \
                    159:        pcdisplay_6845_read(&(vh)->vh_ph, reg)
                    160: #define vga_6845_write(vh, reg, val) \
                    161:        pcdisplay_6845_write(&(vh)->vh_ph, reg, val)
                    162:
                    163: int    vga_common_probe(bus_space_tag_t, bus_space_tag_t);
                    164: void   vga_common_attach(struct device *, bus_space_tag_t,
                    165:                               bus_space_tag_t, int);
                    166: void   vga_extended_attach(struct device *, bus_space_tag_t,
                    167:     bus_space_tag_t, int, paddr_t (*)(void *, off_t, int));
                    168: int    vga_is_console(bus_space_tag_t, int);
                    169: int    vga_cnattach(bus_space_tag_t, bus_space_tag_t, int, int);
                    170:
                    171: struct wsscreen_descr;
                    172: void vga_loadchars(struct vga_handle *, int, int, int, int, char *);
                    173: void vga_setfontset(struct vga_handle *, int, int);
                    174: void vga_setscreentype(struct vga_handle *,
                    175:                       const struct wsscreen_descr *);
                    176: #if NVGA_PCI > 0
                    177: int vga_pci_ioctl(void *, u_long, caddr_t, int, struct proc *);
                    178: #endif

CVSweb