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

Annotation of src/sys/dev/hpc/hpcfbio.h, Revision 1.3

1.3     ! andvar      1: /*     $NetBSD: hpcfbio.h,v 1.2 2001/07/22 09:56:41 takemura Exp $     */
1.1       uch         2:
                      3: /*-
                      4:  * Copyright (c) 1999
                      5:  *         Shin Takemura and PocketBSD Project. All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  * 3. All advertising materials mentioning features or use of this software
                     16:  *    must display the following acknowledgement:
                     17:  *     This product includes software developed by the PocketBSD project
                     18:  *     and its contributors.
                     19:  * 4. Neither the name of the project nor the names of its contributors
                     20:  *    may be used to endorse or promote products derived from this software
                     21:  *    without specific prior written permission.
                     22:  *
                     23:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     24:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     25:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     26:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     27:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     28:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     29:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     30:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     31:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     32:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     33:  * SUCH DAMAGE.
                     34:  *
                     35:  */
                     36:
                     37: #ifndef H_HPCFBIO
                     38: #define        H_HPCFBIO
                     39:
                     40: #include <sys/types.h>
                     41: #include <sys/ioccom.h>
                     42:
                     43: #define HPCFB_MAXNAMELEN       32
                     44: #define HPCFB_DEFAULT_CONFIG   0
                     45: #define HPCFB_CURRENT_CONFIG   -1
                     46: #define HPCFB_DEFAULT_UNIT     0
                     47: #define HPCFB_CURRENT_UNIT     -1
                     48:
                     49: #define HPCFB_CLASS_UNKNOWN    0       /* unknown class                */
                     50: #define HPCFB_CLASS_GRAYSCALE  1       /* gray scale (maybe monochrome)*/
                     51: #define HPCFB_CLASS_INDEXCOLOR 2       /* index color                  */
                     52: #define HPCFB_CLASS_RGBCOLOR   3       /* RGB color                    */
                     53:
                     54: #define        HPCFB_ACCESS_CACHEABLE  (1<<0)  /* cacheable                    */
                     55: #define        HPCFB_ACCESS_BYTE       (1<<1)  /* permit 8 bit access          */
                     56: #define        HPCFB_ACCESS_WORD       (1<<2)  /* permit 16 bit access         */
                     57: #define        HPCFB_ACCESS_3BYTE      (1<<3)  /* permit 3 bytes access        */
                     58: #define        HPCFB_ACCESS_DWORD      (1<<4)  /* permit 32 bit access         */
                     59: #define        HPCFB_ACCESS_5BYTE      (1<<5)  /* permit 5 bytes access        */
                     60: #define        HPCFB_ACCESS_6BYTE      (1<<6)  /* permit 6 bytes access        */
                     61: #define        HPCFB_ACCESS_7BYTE      (1<<7)  /* permit 7 bytes access        */
                     62: #define        HPCFB_ACCESS_QWORD      (1<<8)  /* permit 64 bit access         */
                     63: #define        HPCFB_ACCESS_9BYTE      (1<<9)  /* permit 9 bytes access        */
                     64: #define        HPCFB_ACCESS_10BYTE     (1<<10) /* permit 10 bytes access       */
                     65: #define        HPCFB_ACCESS_11BYTE     (1<<11) /* permit 11 bytes access       */
                     66: #define        HPCFB_ACCESS_12BYTE     (1<<12) /* permit 12 bytes access       */
                     67: #define        HPCFB_ACCESS_13BYTE     (1<<13) /* permit 13 bytes access       */
                     68: #define        HPCFB_ACCESS_14BYTE     (1<<14) /* permit 14 bytes access       */
                     69: #define        HPCFB_ACCESS_15BYTE     (1<<15) /* permit 15 bytes access       */
                     70: #define        HPCFB_ACCESS_OWORD      (1<<16) /* permit 128 bit access        */
                     71:
                     72: #define        HPCFB_ACCESS_LSB_TO_MSB (1<<17) /* first pixel is at LSB side   */
                     73: #define        HPCFB_ACCESS_R_TO_L     (1<<18) /* pixel order is right to left */
                     74: #define        HPCFB_ACCESS_B_TO_T     (1<<19) /* pixel order is bottom to top */
                     75: #define HPCFB_ACCESS_Y_TO_X    (1<<20) /* pixel ordef is Y to X        */
                     76: #define        HPCFB_ACCESS_STATIC     (1<<21) /* no translation table         */
                     77: #define        HPCFB_ACCESS_REVERSE    (1<<22) /* value 0 means white          */
                     78: #define        HPCFB_ACCESS_PACK_BLANK (1<<23) /* pack has a blank at MSB      */
                     79: #define        HPCFB_ACCESS_PIXEL_BLANK (1<<24)/* pixel has a blank at MSB     */
                     80: #define        HPCFB_ACCESS_ALPHA_REVERSE (1<<25) /* alpha value 0 means thick */
                     81:
1.2       takemura   82: /*
                     83:  * These bits mean that pack data should be stored in reverse order on
                     84:  * memory.
                     85:  *
                     86:  * HPCFB_REVORDER_BYTE:  0x00 0x01
                     87:  *                       +----+-----+
                     88:  *                       |7..0|15..8|
                     89:  *                       +----+-----+
                     90:  * HPCFB_REVORDER_WORD:  0x00       0x02
                     91:  *                       +----+-----+----+----+
                     92:  *                       |15..0     |31..15   |
                     93:  *                       +----+-----+----+----+
                     94:  * HPCFB_REVORDER_DWORD: 0x00                 0x04
                     95:  *                       +----+-----+----+----+----+----+----+----+
                     96:  *                       |31..0               |63..32             |
                     97:  *                       +----+-----+----+----+----+----+----+----+
                     98:  * HPCFB_REVORDER_QWORD: 0x00                      0x08
                     99:  *                       +----+-----+----+----~----+----+----+----~----+
                    100:  *                       |63..0                    |127..64            |
                    101:  *                       +----+-----+----+----~----+----+----+----~----+
                    102:  */
                    103: #define        HPCFB_REVORDER_BYTE     (1<<0)
                    104: #define        HPCFB_REVORDER_WORD     (1<<1)
                    105: #define        HPCFB_REVORDER_DWORD    (1<<2)
                    106: #define        HPCFB_REVORDER_QWORD    (1<<3)
1.1       uch       107:
                    108: struct hpcfb_fbconf {
                    109:        short   hf_conf_index;          /* configuration index          */
                    110:        short   hf_nconfs;              /* how many configurations      */
                    111:
                    112:        short   hf_class;               /* HPCFB_CLASS_*                */
                    113:
                    114:        char    hf_name[HPCFB_MAXNAMELEN];
                    115:                                        /* frame buffer name, null terminated*/
                    116:        char    hf_conf_name[HPCFB_MAXNAMELEN];
                    117:                                        /* config name, null terminated */
                    118:
                    119:        short   hf_height;              /* how many lines               */
                    120:        short   hf_width;               /* how many pixels in a line    */
                    121:
                    122:        u_long  hf_baseaddr;            /* frame buffer start address   */
                    123:        u_long  hf_offset;              /* frame buffer start offset for mmap*/
                    124:        short   hf_bytes_per_line;      /**/
                    125:        short   hf_nplanes;             /**/
                    126:        long    hf_bytes_per_plane;     /**/
                    127:
                    128:        short   hf_pack_width;          /* how many bits in a pack      */
                    129:        short   hf_pixels_per_pack;     /* how many pixels in a pack    */
                    130:        short   hf_pixel_width;         /* effective bits width         */
                    131:
                    132:        u_long  hf_access_flags;        /* HPCFB_ACCESS_*               */
1.2       takemura  133:        u_long  hf_order_flags;         /* HPCFB_REVORDER_*             */
1.1       uch       134:        u_long  hf_reg_offset;          /* hardware register offset for mmap */
                    135:        u_long  hf_reserved[3];
                    136:
                    137:        /*
1.3     ! andvar    138:         * class dependent data
1.1       uch       139:         */
                    140:        short   hf_class_data_length;
                    141:        union {
                    142:                char    hf_place_holder[128];
                    143:                struct hf_gray_tag {
                    144:                        u_long  hf_flags;       /* reserved for future use */
                    145:                } hf_gray;
                    146:                struct hf_indexed_tag {
                    147:                        u_long  hf_flags;       /* reserved for future use */
                    148:                } hf_indexed;
                    149:                struct hf_rgb_tag {
                    150:                        u_long  hf_flags;       /* reserved for future use */
                    151:
                    152:                        short   hf_red_width;
                    153:                        short   hf_red_shift;
                    154:                        short   hf_green_width;
                    155:                        short   hf_green_shift;
                    156:                        short   hf_blue_width;
                    157:                        short   hf_blue_shift;
                    158:                        short   hf_alpha_width;
                    159:                        short   hf_alpha_shift;
                    160:                } hf_rgb;
                    161:        } hf_u;
                    162:
                    163:        /*
                    164:         * extended data for future use
                    165:         */
                    166:        int     hf_ext_size;                    /* this value is 0      */
                    167:        void    *hf_ext_data;                   /* this value is NULL   */
                    168: };
                    169:
                    170: #define HPCFB_DSP_CLASS_UNKNOWN                0       /* unknown display type */
                    171: #define HPCFB_DSP_CLASS_COLORCRT       1       /* color CRT            */
                    172: #define HPCFB_DSP_CLASS_COLORLCD       2       /* color LCD            */
                    173: #define HPCFB_DSP_CLASS_GRAYCRT                3       /* gray or mono CRT     */
                    174: #define HPCFB_DSP_CLASS_GRAYLCD                4       /* gray or mono LCD     */
                    175: #define HPCFB_DSP_CLASS_EXTERNAL       5       /* external output      */
                    176: #define HPCFB_DSP_CLASS_VIDEO          6       /* external video output*/
                    177:
                    178: #define HPCFB_DSP_DPI_UNKNOWN          0
                    179:
                    180: struct hpcfb_dspconf {
                    181:        short   hd_unit_index;          /* display unit index           */
                    182:        short   hd_nunits;              /* how many display units       */
                    183:
                    184:        short   hd_class;               /* HPCFB_DSP_CLASS_*            */
                    185:        char    hd_name[HPCFB_MAXNAMELEN];
                    186:                                        /* display name                 */
                    187:
                    188:        unsigned long   hd_op_flags;
                    189:        unsigned long   hd_reserved[3];
                    190:
                    191:        short   hd_conf_index;          /* configuration index          */
                    192:        short   hd_nconfs;              /* how many configurations      */
                    193:        char    hd_conf_name[HPCFB_MAXNAMELEN];
                    194:                                        /* configuration name           */
                    195:        short   hd_width;
                    196:        short   hd_height;
                    197:        short   hd_xdpi;
                    198:        short   hd_ydpi;
                    199:
                    200: };
                    201:
                    202: struct hpcfb_dsp_op {
                    203:        short   op;
                    204:        long    args[4];
                    205:        short   ext_size;
                    206:        void    *ext_arg;
                    207: };
                    208:
                    209: /*
                    210:  * view port postion
                    211:  * arg0 is x_offset
                    212:  * arg1 is y_offset
                    213:  */
                    214: #define HPCFB_DSP_OP_VIEW      0
                    215:
                    216: /*
                    217:  * display settings
                    218:  * arg0 is bright;
                    219:  * arg1 is contrast;
                    220:  */
                    221: #define HPCFB_DSP_OP_BRIGHT            1
                    222:
                    223: /*
                    224:  * power state
                    225:  * arg0 is power state
                    226:  */
                    227: #define HPCFB_DSP_OP_POWER             2
                    228: #define HPCFB_DSP_PW_ON                0       /* full power                   */
                    229: #define HPCFB_DSP_PW_SAVE      10      /* power save mode, but not blank */
                    230: #define HPCFB_DSP_PW_CUT       20      /* power save mode, screen is blank */
                    231: #define HPCFB_DSP_PW_OFF       30      /* power off                    */
                    232:
                    233: /*
                    234:  * output signal settings
                    235:  * ext_arg is struct hpcfb_dsp_signal
                    236:  */
                    237: #define HPCFB_DSP_OP_SIGNAL            3
                    238: #define HPCFB_DSP_SIG_H_SYNC_HIGH      (1<<0)
                    239: #define HPCFB_DSP_SIG_V_SYNC_HIGH      (1<<1)
                    240: #define HPCFB_DSP_SIG_C_SYNC_HIGH      (1<<2)
                    241: #define HPCFB_DSP_SIG_SYNC_EXT         (1<<3)
                    242: #define HPCFB_DSP_SIG_SYNC_GREEN       (1<<4)
                    243: struct hpcfb_dsp_signal {
                    244:        unsigned long   flags;
                    245:        long    pixclock;       /* pixel clock in pico seconds  */
                    246:        long    left_margin;    /* time from H sync to picture  */
                    247:        long    right_margin;   /* time from picture to H sync  */
                    248:        long    upper_margin;   /* time from V sync to picture  */
                    249:        long    lower_margin;   /* time from picture to V sync  */
                    250:        long    hsync_len;      /* length of H sync             */
                    251:        long    vsync_len;      /* length of V sync             */
                    252: };
                    253:
                    254: #define        HPCFBIO_GCONF           _IOWR('H', 0, struct hpcfb_fbconf)
                    255: #define        HPCFBIO_SCONF           _IOW('H', 1, struct hpcfb_fbconf)
                    256: #define        HPCFBIO_GDSPCONF        _IOWR('H', 2, struct hpcfb_dspconf)
                    257: #define        HPCFBIO_SDSPCONF        _IOW('H', 3, struct hpcfb_dspconf)
                    258: #define        HPCFBIO_GOP             _IOR('H', 4, struct hpcfb_dsp_op)
                    259: #define        HPCFBIO_SOP             _IOWR('H', 5, struct hpcfb_dsp_op)
                    260:
                    261: #endif /* H_HPCFBIO */

CVSweb <webmaster@jp.NetBSD.org>