1 /* $NetBSD: hpcfbio.h,v 1.1 2001/02/22 18:37:55 uch Exp $ */
5 * Shin Takemura and PocketBSD Project. All rights reserved.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
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.
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
40 #include <sys/types.h>
41 #include <sys/ioccom.h>
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
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 */
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 */
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 */
83 * These bits mean that pack data should be stored in reverse order on
86 * HPCFB_REVORDER_BYTE: 0x00 0x01
90 * HPCFB_REVORDER_WORD: 0x00 0x02
91 * +----+-----+----+----+
93 * +----+-----+----+----+
94 * HPCFB_REVORDER_DWORD: 0x00 0x04
95 * +----+-----+----+----+----+----+----+----+
97 * +----+-----+----+----+----+----+----+----+
98 * HPCFB_REVORDER_QWORD: 0x00 0x08
99 * +----+-----+----+----~----+----+----+----~----+
101 * +----+-----+----+----~----+----+----+----~----+
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)
108 struct hpcfb_fbconf
{
109 short hf_conf_index
; /* configuration index */
110 short hf_nconfs
; /* how many configurations */
112 short hf_class
; /* HPCFB_CLASS_* */
114 char hf_name
[HPCFB_MAXNAMELEN
];
115 /* frame buffer name, null terminated*/
116 char hf_conf_name
[HPCFB_MAXNAMELEN
];
117 /* config name, null terminated */
119 short hf_height
; /* how many lines */
120 short hf_width
; /* how many pixels in a line */
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
; /**/
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 */
132 u_long hf_access_flags
; /* HPCFB_ACCESS_* */
133 u_long hf_order_flags
; /* HPCFB_REVORDER_* */
134 u_long hf_reg_offset
; /* hardware register offset for mmap */
135 u_long hf_reserved
[3];
138 * class dependend data
140 short hf_class_data_length
;
142 char hf_place_holder
[128];
144 u_long hf_flags
; /* reserved for future use */
146 struct hf_indexed_tag
{
147 u_long hf_flags
; /* reserved for future use */
150 u_long hf_flags
; /* reserved for future use */
154 short hf_green_width
;
155 short hf_green_shift
;
158 short hf_alpha_width
;
159 short hf_alpha_shift
;
164 * extended data for future use
166 int hf_ext_size
; /* this value is 0 */
167 void *hf_ext_data
; /* this value is NULL */
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*/
178 #define HPCFB_DSP_DPI_UNKNOWN 0
180 struct hpcfb_dspconf
{
181 short hd_unit_index
; /* display unit index */
182 short hd_nunits
; /* how many display units */
184 short hd_class
; /* HPCFB_DSP_CLASS_* */
185 char hd_name
[HPCFB_MAXNAMELEN
];
188 unsigned long hd_op_flags
;
189 unsigned long hd_reserved
[3];
191 short hd_conf_index
; /* configuration index */
192 short hd_nconfs
; /* how many configurations */
193 char hd_conf_name
[HPCFB_MAXNAMELEN
];
194 /* configuration name */
202 struct hpcfb_dsp_op
{
214 #define HPCFB_DSP_OP_VIEW 0
221 #define HPCFB_DSP_OP_BRIGHT 1
225 * arg0 is power state
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 */
234 * output signal settings
235 * ext_arg is struct hpcfb_dsp_signal
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
{
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 */
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)
261 #endif /* H_HPCFBIO */