Annotation of XNU/osfmk/ppc/screen.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /*
        !            23:  * @OSF_COPYRIGHT@
        !            24:  */
        !            25: /* 
        !            26:  * Mach Operating System
        !            27:  * Copyright (c) 1991,1990,1989 Carnegie Mellon University
        !            28:  * All Rights Reserved.
        !            29:  * 
        !            30:  * Permission to use, copy, modify and distribute this software and its
        !            31:  * documentation is hereby granted, provided that both the copyright
        !            32:  * notice and this permission notice appear in all copies of the
        !            33:  * software, derivative works or modified versions, and any portions
        !            34:  * thereof, and that both notices appear in supporting documentation.
        !            35:  * 
        !            36:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
        !            37:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
        !            38:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
        !            39:  * 
        !            40:  * Carnegie Mellon requests users of this software to return to
        !            41:  * 
        !            42:  *  Software Distribution Coordinator  or  [email protected]
        !            43:  *  School of Computer Science
        !            44:  *  Carnegie Mellon University
        !            45:  *  Pittsburgh PA 15213-3890
        !            46:  * 
        !            47:  * any improvements or extensions that they make and grant Carnegie Mellon
        !            48:  * the rights to redistribute these changes.
        !            49:  */
        !            50: /*
        !            51:  */
        !            52: /*
        !            53:  *     File: screen.h
        !            54:  *     Author: Alessandro Forin, Carnegie Mellon University
        !            55:  *     Date:   9/90
        !            56:  *
        !            57:  *     Definitions for the Generic Screen Driver.
        !            58:  */
        !            59: 
        !            60: #ifndef _SCREEN_H_
        !            61: #define _SCREEN_H_
        !            62: 
        !            63: /*
        !            64:  * Most of these structures are defined so that the
        !            65:  * resulting structure mapped to user space appears
        !            66:  * to be compatible with the one used by the DEC X
        !            67:  * servers (pm_info..). Keep it that way and the
        !            68:  * X servers will keep on running.
        !            69:  */
        !            70: 
        !            71: /*
        !            72:  * Generic structures and defines
        !            73:  */
        !            74: 
        !            75: /* colors */
        !            76: typedef struct {
        !            77:        unsigned short  red;
        !            78:        unsigned short  green;
        !            79:        unsigned short  blue;
        !            80: } color_map_t;
        !            81: 
        !            82: typedef struct {
        !            83:        short           unused;
        !            84:        unsigned short  index;
        !            85:        color_map_t     value;
        !            86: } color_map_entry_t;
        !            87: 
        !            88: typedef struct {
        !            89:        unsigned int    Bg_rgb[3];
        !            90:        unsigned int    Fg_rgb[3];
        !            91: } cursor_color_t;
        !            92: 
        !            93: /* generic input event */
        !            94: typedef struct {
        !            95:         short          x;              /* x position */
        !            96:         short          y;              /* y position */
        !            97:         unsigned int    time;          /* 1 millisecond units */
        !            98: 
        !            99:         unsigned char   type;          /* button up/down/raw or motion */
        !           100: #      define  EVT_BUTTON_UP           0
        !           101: #      define  EVT_BUTTON_DOWN         1
        !           102: #      define  EVT_BUTTON_RAW          2
        !           103: #      define  EVT_PTR_MOTION          3
        !           104: 
        !           105:         unsigned char   key;           /* the key (button only) */
        !           106: #      define  KEY_LEFT_BUTTON         1
        !           107: #      define  KEY_MIDDLE_BUTTON       2
        !           108: #      define  KEY_RIGHT_BUTTON        3
        !           109: #      define  KEY_TBL_LEFT_BUTTON     0
        !           110: #      define  KEY_TBL_FRONT_BUTTON    1
        !           111: #      define  KEY_TBL_RIGHT_BUTTON    2
        !           112: #      define  KEY_TBL_BACK_BUTTON     3
        !           113: 
        !           114:         unsigned char   index;         /* which instance of device */
        !           115: 
        !           116:         unsigned char   device;                /* which device */
        !           117: #      define  DEV_NULL                0
        !           118: #      define  DEV_MOUSE               1
        !           119: #      define  DEV_KEYBD               2
        !           120: #      define  DEV_TABLET              3
        !           121: #      define  DEV_AUX                 4
        !           122: #      define  DEV_CONSOLE             5
        !           123: #      define  DEV_KNOB                8
        !           124: #      define  DEV_JOYSTICK            9
        !           125: 
        !           126: } screen_event_t;
        !           127: 
        !           128: /* timed coordinate info */
        !           129: typedef struct {
        !           130:        unsigned int    time;
        !           131:        short           x, y;
        !           132: } screen_timed_point_t;
        !           133: 
        !           134: /* queue of input events, and ring of mouse motions track */
        !           135: typedef struct {
        !           136:        screen_event_t  *events;
        !           137:        unsigned int    q_size;
        !           138:         unsigned int    q_head;
        !           139:         unsigned int    q_tail;
        !           140:        unsigned        long    timestamp;
        !           141:        screen_timed_point_t    *track;
        !           142:        unsigned int    t_size;
        !           143:        unsigned int    t_next;
        !           144: } screen_evque_t;
        !           145: 
        !           146: /* mouse/cursor position */
        !           147: typedef struct {
        !           148:         short x;
        !           149:         short y;
        !           150: } screen_point_t;
        !           151: 
        !           152: /* mouse motion bounding boxes */
        !           153: typedef struct {
        !           154:         short bottom;
        !           155:         short right;
        !           156:         short left;
        !           157:         short top;
        !           158: } screen_rect_t;
        !           159: 
        !           160: /*
        !           161:  * Here it is, each field is marked as
        !           162:  *
        !           163:  * Kset        : kernel sets it unconditionally
        !           164:  * Kuse : kernel uses it, safely
        !           165:  * Kdep : kernel might depend on it
        !           166:  */
        !           167: typedef struct {
        !           168:   screen_evque_t       evque;          /* Kset, Kuse */
        !           169:   short                        mouse_buttons;  /* Kset */
        !           170:   screen_point_t       xx3     /*tablet*/;
        !           171:   short                        xx4     /*tswitches*/;
        !           172:   screen_point_t       cursor;         /* Kset */
        !           173:   short                        row;            /* Kdep */
        !           174:   short                        col;            /* Kdep */
        !           175:   short                        max_row;        /* Kdep */
        !           176:   short                        max_col;        /* Kdep */
        !           177:   short                        max_x;          /* Kset */
        !           178:   short                        max_y;          /* Kset */
        !           179:   short                        max_cur_x;      /* Kdep */
        !           180:   short                        max_cur_y;      /* Kdep */
        !           181:   int                  version;        /* Kset */
        !           182:   union {
        !           183:     struct {
        !           184:        unsigned char * bitmap;         /* Kset */
        !           185:        short *         x16     /*scanmap*/;
        !           186:        short *         x17     /*cursorbits*/;
        !           187:        short *         x18     /*pmaddr*/;
        !           188:        unsigned char * planemask;      /* Kset */
        !           189:     } pm;
        !           190:     struct {
        !           191:        int             x15     /* flags */;
        !           192:        int *           gram    /* Kset */;
        !           193:        int *           rb_addr /* Kset */;
        !           194:        int             rb_phys /* Kset */;
        !           195:        int             rb_size /* Kset */;
        !           196:     } gx;
        !           197:   } dev_dep_1;
        !           198:   screen_point_t       mouse_loc;      /* Kdep */
        !           199:   screen_rect_t                mouse_box;      /* Kdep */
        !           200:   short                        mouse_threshold;/* Kuse */
        !           201:   short                        mouse_scale;    /* Kuse */
        !           202:   short                        min_cur_x;      /* Kdep */
        !           203:   short                        min_cur_y;      /* Kdep */
        !           204:   union {
        !           205:     struct {
        !           206:        int             x26     /*dev_type*/;
        !           207:        char *          x27     /*framebuffer*/;
        !           208:        char *          x28     /*volatile struct bt459 *bt459*/;
        !           209:        int             x29     /*slot*/;
        !           210:        char            cursor_sprite[1024];/* Kset */
        !           211:        unsigned char   Bg_color[3];    /* Kset */
        !           212:        unsigned char   Fg_color[3];    /* Kset */
        !           213:        int             tablet_scale_x; /* Kuse */
        !           214:        int             tablet_scale_y; /* Kuse */
        !           215:     } pm;
        !           216:     struct {
        !           217:        char *          gxo             /* Kset */;
        !           218:        char            stamp_width     /* Kset */;
        !           219:        char            stamp_height    /* Kset */;
        !           220:        char            nplanes         /* Kset */;
        !           221:        char            x27_4   /* n10_present */;
        !           222:        char            x28_1   /* dplanes */;
        !           223:        char            zplanes         /* Kset */;
        !           224:        char            zzplanes        /* Kset */;
        !           225:        unsigned char   cursor_sprite[1024]     /* Kuse */;
        !           226:        char            x285_0          /* padding for next, which was int */;
        !           227:        unsigned char   Fg_color[4]     /* Kuse */;
        !           228:        unsigned char   Bg_color[4]     /* Kuse */;
        !           229:        unsigned short  cmap_index      /* Kuse */;
        !           230:        unsigned short  cmap_count      /* Kuse */;
        !           231:        unsigned int    colormap[256]   /* Kuse */;
        !           232:        int *           stic_dma_rb     /* Kset */;
        !           233:        int *           stic_reg        /* Kset */;
        !           234:        int             ptpt_phys       /* Kdep */;
        !           235:        int             ptpt_size       /* Kdep */;
        !           236:        int *           ptpt_pgin       /* Kset */;
        !           237:     } gx;
        !           238:   } dev_dep_2;
        !           239:   short                frame_scanline_width;   /* in pixels, Kset */
        !           240:   short                frame_height;           /* in scanlines, Kset */
        !           241:   /*
        !           242:    * Event queues are allocated right after that
        !           243:    */
        !           244: #define        MAX_EVENTS      64
        !           245: #define        MAX_TRACK       100
        !           246:   screen_event_t       event_queue[MAX_EVENTS]; /* Kset */
        !           247:   screen_timed_point_t point_track[MAX_TRACK];  /* Kset */
        !           248:   /*
        !           249:    * Some like it hot
        !           250:    */
        !           251:   unsigned int         event_id;
        !           252:   int                  interrupt_info;
        !           253: } user_info_t;
        !           254: 
        !           255: 
        !           256: /*
        !           257:  * Screen get_status codes and arguments
        !           258:  */
        !           259: #include <sys/ioctl.h>
        !           260: 
        !           261:        /* Get size (and offset) of mapped info */
        !           262: #define        SCREEN_GET_OFFSETS      _IOR('q', 6, unsigned **)
        !           263: 
        !           264:        /* Get screen status flags */
        !           265: #define SCREEN_STATUS_FLAGS    _IOR('q', 22, int *)
        !           266: #      define  MONO_SCREEN     0x01
        !           267: #      define  COLOR_SCREEN    0x02
        !           268: #      define  SCREEN_BEING_UPDATED 0x04
        !           269: 
        !           270: /*
        !           271:  * Screen set_status codes and arguments
        !           272:  */
        !           273: 
        !           274:        /* start/stop screen saver, control fading interval */
        !           275: #define        SCREEN_FADE             _IOW('q', 114, int)     /* fade screen */
        !           276: #      define  NO_FADE         -1
        !           277: 
        !           278:        /* Turn video on/off manually */
        !           279: #define SCREEN_ON              _IO('q', 10)
        !           280: #define        SCREEN_OFF              _IO('q', 11)
        !           281: 
        !           282:        /* Fixup pointers inside mapped info structure */
        !           283: #define        SCREEN_ADJ_MAPPED_INFO  _IOR('q', 1, user_info_t *)
        !           284: 
        !           285:        /* Initialize anything that needs to, hw-wise */
        !           286: #define SCREEN_INIT            _IO('q', 4)
        !           287: 
        !           288:        /* Position cursor to a specific spot */
        !           289: #define SCREEN_SET_CURSOR      _IOW('q', 2, screen_point_t)
        !           290: 
        !           291:        /* Load Bg/Fg colors for cursor */
        !           292: #define        SCREEN_SET_CURSOR_COLOR _IOW('q', 3, cursor_color_t)
        !           293: 
        !           294:        /* Load cursor sprite, small cursor form */
        !           295: typedef unsigned short cursor_sprite_t[32];
        !           296: 
        !           297: #define        SCREEN_LOAD_CURSOR      _IOW('q', 7, cursor_sprite_t)
        !           298: 
        !           299:        /* Load cursor sprite, large 64x64 cursor form */
        !           300: typedef char cursor_sprite_long_t[1024];
        !           301: 
        !           302: #define        SCREEN_LOAD_CURSOR_LONG _IOW('q', 13, cursor_sprite_long_t)
        !           303: 
        !           304:        /* Modify a given entry in the color map (VDAC) */
        !           305: #define        SCREEN_SET_CMAP_ENTRY   _IOW('q', 12, color_map_entry_t)
        !           306: 
        !           307:        /* Return some other information about hardware (optional) */
        !           308: typedef struct {
        !           309:        int     frame_width;
        !           310:        int     frame_height;
        !           311:        int     frame_visible_width;
        !           312:        int     frame_visible_height;
        !           313: } screen_hw_info_t;
        !           314: #define        SCREEN_HARDWARE_INFO    _IOR('q', 23, screen_hw_info_t)
        !           315: 
        !           316:        /* Screen-dependent, unspecified (and despised) */
        !           317: #define        SCREEN_HARDWARE_DEP     _IO('q', 24)
        !           318: 
        !           319: #endif /* _SCREEN_H_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.