[BACK]Return to wsdisplayvar.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / dev / wscons

Annotation of src/sys/dev/wscons/wsdisplayvar.h, Revision 1.17

1.17    ! lukem       1: /* $NetBSD: wsdisplayvar.h,v 1.16 2000/09/10 09:39:58 takemura Exp $ */
1.1       drochner    2:
                      3: /*
                      4:  * Copyright (c) 1996, 1997 Christopher G. Demetriou.  All rights reserved.
                      5:  *
                      6:  * Redistribution and use in source and binary forms, with or without
                      7:  * modification, are permitted provided that the following conditions
                      8:  * are met:
                      9:  * 1. Redistributions of source code must retain the above copyright
                     10:  *    notice, this list of conditions and the following disclaimer.
                     11:  * 2. Redistributions in binary form must reproduce the above copyright
                     12:  *    notice, this list of conditions and the following disclaimer in the
                     13:  *    documentation and/or other materials provided with the distribution.
                     14:  * 3. All advertising materials mentioning features or use of this software
                     15:  *    must display the following acknowledgement:
                     16:  *      This product includes software developed by Christopher G. Demetriou
                     17:  *     for the NetBSD Project.
                     18:  * 4. The name of the author may not be used to endorse or promote products
                     19:  *    derived from this software without specific prior written permission
                     20:  *
                     21:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     22:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     23:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     24:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     25:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     26:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     27:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     28:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     29:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     30:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     31:  */
                     32:
                     33: struct device;
                     34:
                     35: /*
                     36:  * WSDISPLAY interfaces
                     37:  */
                     38:
                     39: /*
                     40:  * Emulation functions, for displays that can support glass-tty terminal
                     41:  * emulations.  These are character oriented, with row and column
                     42:  * numbers starting at zero in the upper left hand corner of the
                     43:  * screen.
                     44:  *
                     45:  * These are used only when emulating a terminal.  Therefore, displays
                     46:  * drivers which cannot emulate terminals do not have to provide them.
                     47:  *
                     48:  * There is a "void *" cookie provided by the display driver associated
                     49:  * with these functions, which is passed to them when they are invoked.
                     50:  */
                     51: struct wsdisplay_emulops {
                     52:        void    (*cursor) __P((void *c, int on, int row, int col));
1.11      drochner   53:        int     (*mapchar) __P((void *, int, unsigned int *));
1.4       drochner   54:        void    (*putchar) __P((void *c, int row, int col,
                     55:                                u_int uc, long attr));
1.1       drochner   56:        void    (*copycols) __P((void *c, int row, int srccol, int dstcol,
                     57:                    int ncols));
                     58:        void    (*erasecols) __P((void *c, int row, int startcol,
1.2       drochner   59:                    int ncols, long));
1.1       drochner   60:        void    (*copyrows) __P((void *c, int srcrow, int dstrow,
                     61:                    int nrows));
1.2       drochner   62:        void    (*eraserows) __P((void *c, int row, int nrows, long));
                     63:        int     (*alloc_attr) __P((void *c, int fg, int bg, int flags, long *));
                     64: /* fg / bg values. Made identical to ANSI terminal color codes. */
                     65: #define WSCOL_BLACK    0
                     66: #define WSCOL_RED      1
                     67: #define WSCOL_GREEN    2
                     68: #define WSCOL_BROWN    3
                     69: #define WSCOL_BLUE     4
                     70: #define WSCOL_MAGENTA  5
                     71: #define WSCOL_CYAN     6
                     72: #define WSCOL_WHITE    7
                     73: /* flag values: */
                     74: #define WSATTR_REVERSE 1
                     75: #define WSATTR_HILIT   2
                     76: #define WSATTR_BLINK   4
                     77: #define WSATTR_UNDERLINE 8
                     78: #define WSATTR_WSCOLORS 16
                     79:        /* XXX need a free_attr() ??? */
1.1       drochner   80: };
                     81:
                     82: struct wsscreen_descr {
                     83:        char *name;
                     84:        int ncols, nrows;
                     85:        const struct wsdisplay_emulops *textops;
                     86:        int fontwidth, fontheight;
1.2       drochner   87:        int capabilities;
                     88: #define WSSCREEN_WSCOLORS      1       /* minimal color capability */
                     89: #define WSSCREEN_REVERSE       2       /* can display reversed */
                     90: #define WSSCREEN_HILIT         4       /* can highlight (however) */
                     91: #define WSSCREEN_BLINK         8       /* can blink */
                     92: #define WSSCREEN_UNDERLINE     16      /* can underline */
1.1       drochner   93: };
                     94:
1.9       drochner   95: struct wsdisplay_font;
1.1       drochner   96: /*
                     97:  * Display access functions, invoked by user-land programs which require
                     98:  * direct device access, such as X11.
                     99:  *
                    100:  * There is a "void *" cookie provided by the display driver associated
                    101:  * with these functions, which is passed to them when they are invoked.
                    102:  */
                    103: struct wsdisplay_accessops {
                    104:        int     (*ioctl) __P((void *v, u_long cmd, caddr_t data, int flag,
                    105:                    struct proc *p));
1.15      simonb    106:        paddr_t (*mmap) __P((void *v, off_t off, int prot));
1.1       drochner  107:        int     (*alloc_screen) __P((void *, const struct wsscreen_descr *,
1.2       drochner  108:                                     void **, int *, int *, long *));
1.1       drochner  109:        void    (*free_screen) __P((void *, void *));
1.14      drochner  110:        int     (*show_screen) __P((void *, void *, int,
                    111:                                    void (*) (void *, int, int), void *));
1.9       drochner  112:        int     (*load_font) __P((void *, void *, struct wsdisplay_font *));
1.1       drochner  113: };
                    114:
                    115: /*
                    116:  * Attachment information provided by wsdisplaydev devices when attaching
                    117:  * wsdisplay units.
                    118:  */
                    119: struct wsdisplaydev_attach_args {
                    120:        const struct wsdisplay_accessops *accessops;    /* access ops */
                    121:        void    *accesscookie;                          /* access cookie */
                    122: };
                    123:
                    124: /* passed to wscons by the video driver to tell about its capabilities */
                    125: struct wsscreen_list {
                    126:        int nscreens;
                    127:        const struct wsscreen_descr **screens;
                    128: };
                    129:
                    130: /*
                    131:  * Attachment information provided by wsemuldisplaydev devices when attaching
                    132:  * wsdisplay units.
                    133:  */
                    134: struct wsemuldisplaydev_attach_args {
                    135:        int     console;                                /* is it console? */
1.2       drochner  136:        const struct wsscreen_list *scrdata;            /* screen cfg info */
1.1       drochner  137:        const struct wsdisplay_accessops *accessops;    /* access ops */
                    138:        void    *accesscookie;                          /* access cookie */
                    139: };
                    140:
1.6       augustss  141: #include "locators.h"
                    142:
                    143: #define        wsemuldisplaydevcf_console      cf_loc[WSEMULDISPLAYDEVCF_CONSOLE]      /* spec'd as console? */
                    144: #define        WSEMULDISPLAYDEVCF_CONSOLE_UNK  (WSEMULDISPLAYDEVCF_CONSOLE_DEFAULT)
1.1       drochner  145:
1.3       drochner  146: struct wscons_syncops {
1.10      drochner  147:        int (*detach) __P((void *, int, void (*)(void *, int, int), void *));
                    148:        int (*attach) __P((void *, int, void (*)(void *, int, int), void *));
1.3       drochner  149:        int (*check) __P((void *));
                    150:        void (*destroy) __P((void *));
                    151: };
                    152:
1.1       drochner  153: /*
                    154:  * Autoconfiguration helper functions.
                    155:  */
                    156: void   wsdisplay_cnattach __P((const struct wsscreen_descr *, void *,
1.2       drochner  157:                                int, int, long));
1.1       drochner  158: int    wsdisplaydevprint __P((void *, const char *));
                    159: int    wsemuldisplaydevprint __P((void *, const char *));
                    160:
                    161: /*
                    162:  * Console interface.
                    163:  */
                    164: void   wsdisplay_cnputc __P((dev_t dev, int i));
1.3       drochner  165:
                    166: /*
                    167:  * for use by compatibility code
                    168:  */
                    169: struct wsdisplay_softc;
                    170: struct wsscreen;
                    171: int wsscreen_attach_sync __P((struct wsscreen *,
                    172:                              const struct wscons_syncops *, void *));
                    173: int wsscreen_detach_sync __P((struct wsscreen *));
                    174: int wsscreen_lookup_sync __P((struct wsscreen *,
                    175:                              const struct wscons_syncops *, void **));
                    176:
                    177: int wsdisplay_maxscreenidx __P((struct wsdisplay_softc *));
                    178: int wsdisplay_screenstate __P((struct wsdisplay_softc *, int));
                    179: int wsdisplay_getactivescreen __P((struct wsdisplay_softc *));
                    180: int wsscreen_switchwait __P((struct wsdisplay_softc *, int));
                    181:
                    182: int wsdisplay_internal_ioctl __P((struct wsdisplay_softc *sc,
                    183:                                  struct wsscreen *,
                    184:                                  u_long cmd, caddr_t data,
                    185:                                  int flag, struct proc *p));
                    186:
1.13      mycroft   187: int wsdisplay_usl_ioctl1 __P((struct wsdisplay_softc *,
                    188:                             u_long, caddr_t, int, struct proc *));
                    189:
                    190: int wsdisplay_usl_ioctl2 __P((struct wsdisplay_softc *, struct wsscreen *,
1.3       drochner  191:                             u_long, caddr_t, int, struct proc *));
1.8       drochner  192:
                    193: int wsdisplay_cfg_ioctl __P((struct wsdisplay_softc *sc,
                    194:                             u_long cmd, caddr_t data,
                    195:                             int flag, struct proc *p));
1.12      jdolecek  196:
                    197: /*
                    198:  * for general use
                    199:  */
1.16      takemura  200: #define WSDISPLAY_NULLSCREEN   -1
1.12      jdolecek  201: void wsdisplay_switchtoconsole __P((void));
1.17    ! lukem     202: const struct wsscreen_descr *
        !           203:     wsdisplay_screentype_pick __P((const struct wsscreen_list *, const char *));

CVSweb <webmaster@jp.NetBSD.org>