Developer World
Spresense SDK Library v3.2.0-ebc0364
fb.h
1/****************************************************************************
2 * include/nuttx/video/fb.h
3 *
4 * Licensed to the Apache Software Foundation (ASF) under one or more
5 * contributor license agreements. See the NOTICE file distributed with
6 * this work for additional information regarding copyright ownership. The
7 * ASF licenses this file to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance with the
9 * License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16 * License for the specific language governing permissions and limitations
17 * under the License.
18 *
19 ****************************************************************************/
20
21#ifndef __INCLUDE_NUTTX_VIDEO_FB_H
22#define __INCLUDE_NUTTX_VIDEO_FB_H
23
24/****************************************************************************
25 * Included Files
26 ****************************************************************************/
27
28#include <nuttx/config.h>
29
30#include <sys/types.h>
31#include <stdint.h>
32
33#include <nuttx/fs/ioctl.h>
34
35/****************************************************************************
36 * Pre-processor definitions
37 ****************************************************************************/
38
39/* Color format definitions. This pretty much defines the color pixel
40 * processing organization of the video controller.
41 */
42
43/* Monochrome Formats *******************************************************/
44
45#define FB_FMT_Y1 0 /* BPP=1, monochrome */
46#define FB_FMT_Y2 1 /* BPP=2, 2-bit uncompressed greyscale */
47#define FB_FMT_Y4 2 /* BPP=4, 4-bit uncompressed greyscale */
48#define FB_FMT_Y8 3 /* BPP=8, 8-bit uncompressed greyscale */
49#define FB_FMT_Y16 4 /* BPP=16, 16-bit uncompressed greyscale */
50#define FB_FMT_GREY FB_FMT_Y8 /* BPP=8 */
51#define FB_FMT_Y800 FB_FMT_Y8 /* BPP=8 */
52
53#define FB_ISMONO(f) (((f) >= FB_FMT_Y1) && (f) <= FB_FMT_Y16)
54
55/* RGB video formats ********************************************************/
56
57/* Standard RGB */
58
59#define FB_FMT_RGB4 5 /* BPP=4 */
60#define FB_FMT_RGB8 6 /* BPP=8 RGB palette index */
61#define FB_FMT_RGB8_222 7 /* BPP=8 R=2, G=2, B=2 */
62#define FB_FMT_RGB8_332 8 /* BPP=8 R=3, G=3, B=2 */
63#define FB_FMT_RGB12_444 9 /* BPP=12 R=4, G=4, B=4 */
64#define FB_FMT_RGB16_555 10 /* BPP=16 R=5, G=5, B=5 (1 unused bit) */
65#define FB_FMT_RGB16_565 11 /* BPP=16 R=5, G=6, B=5 */
66#define FB_FMT_RGB24 12 /* BPP=24 */
67#define FB_FMT_RGB32 13 /* BPP=32 */
68
69/* Run length encoded RGB */
70
71#define FB_FMT_RGBRLE4 14 /* BPP=4 */
72#define FB_FMT_RGBRLE8 15 /* BPP=8 */
73
74/* Raw RGB */
75
76#define FB_FMT_RGBRAW 16 /* BPP=? */
77
78/* Raw RGB with arbitrary sample packing within a pixel. Packing and
79 * precision of R, G and B components is determined by bit masks for each.
80 */
81
82#define FB_FMT_RGBBTFLD16 17 /* BPP=16 */
83#define FB_FMT_RGBBTFLD24 18 /* BPP=24 */
84#define FB_FMT_RGBBTFLD32 19 /* BPP=32 */
85#define FB_FMT_RGBA16 20 /* BPP=16 Raw RGB with alpha */
86#define FB_FMT_RGBA32 21 /* BPP=32 Raw RGB with alpha */
87
88/* Raw RGB with a transparency field. Layout is as for standard RGB at 16 and
89 * 32 bits per pixel but the msb in each pixel indicates whether the pixel is
90 * transparent or not.
91 */
92
93#define FB_FMT_RGBT16 22 /* BPP=16 */
94#define FB_FMT_RGBT32 23 /* BPP=32 */
95
96#define FB_ISRGB(f) (((f) >= FB_FMT_RGB4) && (f) <= FB_FMT_RGBT32)
97
98/* Packed YUV Formats *******************************************************/
99
100#define FB_FMT_AYUV 24 /* BPP=32 Combined YUV and alpha */
101#define FB_FMT_CLJR 25 /* BPP=8 4 pixels packed into a uint32_t.
102 * YUV 4:1:1 with l< 8 bits
103 * per YUV sample */
104#define FB_FMT_CYUV 26 /* BPP=16 UYVY except that height is
105 * reversed */
106#define FB_FMT_IRAW 27 /* BPP=? Intel uncompressed YUV */
107#define FB_FMT_IUYV 28 /* BPP=16 Interlaced UYVY (line order
108 * 0,2,4,.., 1,3,5...) */
109#define FB_FMT_IY41 29 /* BPP=12 Interlaced Y41P (line order
110 * 0,2,4,.., 1,3,5...) */
111#define FB_FMT_IYU2 30 /* BPP=24 */
112#define FB_FMT_HDYC 31 /* BPP=16 UYVY except uses the BT709
113 * color space */
114#define FB_FMT_UYVP 32 /* BPP=24? YCbCr 4:2:2, 10-bits per
115 * component in U0Y0V0Y1 order */
116#define FB_FMT_UYVY 33 /* BPP=16 YUV 4:2:2 */
117#define FB_FMT_UYNV FB_FMT_UYVY /* BPP=16 */
118#define FB_FMT_Y422 FB_FMT_UYVY /* BPP=16 */
119#define FB_FMT_V210 34 /* BPP=32 10-bit 4:2:2 YCrCb */
120#define FB_FMT_V422 35 /* BPP=16 Upside down version of UYVY */
121#define FB_FMT_V655 36 /* BPP=16? 16-bit YUV 4:2:2 */
122#define FB_FMT_VYUY 37 /* BPP=? ATI Packed YUV Data */
123#define FB_FMT_YUYV 38 /* BPP=16 YUV 4:2:2 */
124#define FB_FMT_YUY2 FB_FMT_YUYV /* BPP=16 YUV 4:2:2 */
125#define FB_FMT_YUNV FB_FMT_YUYV /* BPP=16 YUV 4:2:2 */
126#define FB_FMT_YVYU 39 /* BPP=16 YUV 4:2:2 */
127#define FB_FMT_Y41P 40 /* BPP=12 YUV 4:1:1 */
128#define FB_FMT_Y411 41 /* BPP=12 YUV 4:1:1 */
129#define FB_FMT_Y211 42 /* BPP=8 */
130#define FB_FMT_Y41T 43 /* BPP=12 Y41P LSB for transparency */
131#define FB_FMT_Y42T 44 /* BPP=16 UYVY LSB for transparency */
132#define FB_FMT_YUVP 45 /* BPP=24? YCbCr 4:2:2 Y0U0Y1V0 order */
133
134#define FB_ISYUVPACKED(f) (((f) >= FB_FMT_AYUV) && (f) <= FB_FMT_YUVP)
135
136/* Packed Planar YUV Formats ************************************************/
137
138#define FB_FMT_YVU9 46 /* BPP=9 8-bit Y followed by 8-bit
139 * 4x4 VU */
140#define FB_FMT_YUV9 47 /* BPP=9? */
141#define FB_FMT_IF09 48 /* BPP=9.5 YVU9 + 4x4 plane of delta
142 * relative to tframe. */
143#define FB_FMT_YV16 49 /* BPP=16 8-bit Y followed by 8-bit
144 * 2x1 VU */
145#define FB_FMT_YV12 50 /* BPP=12 8-bit Y followed by 8-bit
146 * 2x2 VU */
147#define FB_FMT_I420 51 /* BPP=12 8-bit Y followed by 8-bit
148 * 2x2 UV */
149#define FB_FMT_IYUV FB_FMT_I420 /* BPP=12 */
150#define FB_FMT_NV12 52 /* BPP=12 8-bit Y followed by an
151 * interleaved 2x2 UV */
152#define FB_FMT_NV21 53 /* BPP=12 NV12 with UV reversed */
153#define FB_FMT_IMC1 54 /* BPP=12 YV12 except UV planes same
154 * stride as Y */
155#define FB_FMT_IMC2 55 /* BPP=12 IMC1 except UV lines
156 * interleaved at half stride
157 * boundaries */
158#define FB_FMT_IMC3 56 /* BPP=12 As IMC1 except that UV
159 * swapped */
160#define FB_FMT_IMC4 57 /* BPP=12 As IMC2 except that UV
161 * swapped */
162#define FB_FMT_CLPL 58 /* BPP=12 YV12 but including a level
163 * of indirection. */
164#define FB_FMT_Y41B 59 /* BPP=12? 4:1:1 planar. */
165#define FB_FMT_Y42B 60 /* BPP=16? YUV 4:2:2 planar. */
166#define FB_FMT_CXY1 61 /* BPP=12 */
167#define FB_FMT_CXY2 62 /* BPP=16 */
168
169#define FB_ISYUVPLANAR(f) (((f) >= FB_FMT_YVU9) && (f) <= FB_FMT_CXY2)
170#define FB_ISYUV(f) (FB_ISYUVPACKED(f) || FB_ISYUVPLANAR(f))
171
172/* Hardware cursor control **************************************************/
173
174#ifdef CONFIG_FB_HWCURSOR
175# define FB_CUR_ENABLE 0x01 /* Enable the cursor */
176# define FB_CUR_SETIMAGE 0x02 /* Set the cursor image */
177# define FB_CUR_SETPOSITION 0x04 /* Set the position of the cursor */
178# define FB_CUR_SETSIZE 0x08 /* Set the size of the cursor */
179# define FB_CUR_XOR 0x10 /* Use XOR vs COPY ROP on image */
180#endif
181
182/* Hardware overlay acceleration ********************************************/
183
184#define FB_NO_OVERLAY -1
185
186#ifdef CONFIG_FB_OVERLAY
187# define FB_ACCL_TRANSP 0x01 /* Hardware tranparency support */
188# define FB_ACCL_CHROMA 0x02 /* Hardware chromakey support */
189# define FB_ACCL_COLOR 0x04 /* Hardware color support */
190# define FB_ACCL_AREA 0x08 /* Hardware support area selection */
191
192#ifdef CONFIG_FB_OVERLAY_BLIT
193# define FB_ACCL_BLIT 0x10 /* Hardware blit support */
194# define FB_ACCL_BLEND 0x20 /* Hardware blend support */
195#endif
196
197/* Overlay transparency mode ************************************************/
198
199# define FB_CONST_ALPHA 0x00 /* Transparency by alpha value */
200# define FB_PIXEL_ALPHA 0x01 /* Transparency by pixel alpha value */
201
202#endif /* CONFIG_FB_OVERLAY */
203
204/* FB character driver IOCTL commands ***************************************/
205
206/* ioctls */
207
208#define FBIOGET_VIDEOINFO _FBIOC(0x0001) /* Get color plane info */
209 /* Argument: writable struct
210 * fb_videoinfo_s */
211#define FBIOGET_PLANEINFO _FBIOC(0x0002) /* Get video plane info */
212 /* Argument: writable struct
213 * fb_planeinfo_s */
214
215#ifdef CONFIG_FB_CMAP
216# define FBIOGET_CMAP _FBIOC(0x0003) /* Get RGB color mapping */
217 /* Argument: writable struct
218 * fb_cmap_s */
219# define FBIOPUT_CMAP _FBIOC(0x0004) /* Put RGB color mapping */
220 /* Argument: read-only struct
221 * fb_cmap_s */
222#endif
223
224#ifdef CONFIG_FB_HWCURSOR
225# define FBIOGET_CURSOR _FBIOC(0x0005) /* Get cursor attributes */
226 /* Argument: writable struct
227 * fb_cursorattrib_s */
228# define FBIOPUT_CURSOR _FBIOC(0x0006) /* Set cursor attributes */
229 /* Argument: read-only struct
230 * fb_setcursor_s */
231#endif
232
233#ifdef CONFIG_FB_UPDATE
234# define FBIO_UPDATE _FBIOC(0x0007) /* Update a rectangular region in
235 * the framebuffer
236 * Argument: read-only struct
237 * fb_area_s */
238#endif
239
240#ifdef CONFIG_FB_SYNC
241# define FBIO_WAITFORVSYNC _FBIOC(0x0008) /* Wait for vertical sync */
242#endif
243
244#ifdef CONFIG_FB_OVERLAY
245# define FBIOGET_OVERLAYINFO _FBIOC(0x0009) /* Get video overlay info */
246 /* Argument: writable struct
247 * fb_overlayinfo_s */
248# define FBIO_SELECT_OVERLAY _FBIOC(0x000a) /* Select overlay */
249 /* Argument: read-only
250 * unsigned long */
251# define FBIOSET_TRANSP _FBIOC(0x000b) /* Set opacity or transparency
252 * Argument: read-only struct
253 * fb_overlayinfo_s */
254# define FBIOSET_CHROMAKEY _FBIOC(0x000c) /* Set chroma key
255 * Argument: read-only struct
256 * fb_overlayinfo_s */
257# define FBIOSET_COLOR _FBIOC(0x000d) /* Set color
258 * Aƕgument: read-only struct
259 * fb_overlayinfo_s */
260# define FBIOSET_BLANK _FBIOC(0x000e) /* Blank or unblank
261 * Argument: read-only struct
262 * fb_overlayinfo_s */
263# define FBIOSET_AREA _FBIOC(0x000f) /* Set active overlay area
264 * Argument: read-only struct
265 * fb_overlayinfo_s */
266# define FBIOSET_DESTAREA _FBIOC(0x0010) /* Set destination area on
267 * primary FB.
268 * Argument: read-only struct
269 * fb_overlayinfo_s */
270
271#ifdef CONFIG_FB_OVERLAY_BLIT
272# define FBIOSET_BLIT _FBIOC(0x0011) /* Blit area between overlays
273 * Argument: read-only struct
274 * fb_overlayblit_s */
275# define FBIOSET_BLEND _FBIOC(0x0012) /* Blend area between overlays
276 * Argument: read-only struct
277 * fb_overlayblend_s */
278#endif
279
280#define FBIOPAN_OVERLAY _FBIOC(0x0013) /* Pan display for overlay
281 * Argument: read-only struct
282 * fb_overlayinfo_s */
283
284#endif /* CONFIG_FB_OVERLAY */
285
286/* Specific Controls ********************************************************/
287
288#define FBIOSET_POWER _FBIOC(0x0014) /* Set panel power
289 * Argument: int */
290#define FBIOGET_POWER _FBIOC(0x0015) /* Get panel current power
291 * Argument: int* */
292#define FBIOSET_FRAMERATE _FBIOC(0x0016) /* Set frame rate
293 * Argument: int */
294#define FBIOGET_FRAMERATE _FBIOC(0x0017) /* Get frame rate
295 * Argument: int* */
296
297#define FBIOPAN_DISPLAY _FBIOC(0x0018) /* Pan display
298 * Argument: read-only struct
299 * fb_planeinfo_s* */
300
301#define FBIOSET_VSYNCOFFSET _FBIOC(0x0019) /* Set VSync offset in usec
302 * Argument: int */
303
304/* Linux Support ************************************************************/
305
306#define FBIOGET_VSCREENINFO _FBIOC(0x001a) /* Get video variable info */
307 /* Argument: writable struct
308 * fb_var_screeninfo */
309#define FBIOGET_FSCREENINFO _FBIOC(0x001b) /* Get video fix info */
310 /* Argument: writable struct
311 * fb_fix_screeninfo */
312
313#define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */
314#define FB_TYPE_PLANES 1 /* Non interleaved planes */
315#define FB_TYPE_INTERLEAVED_PLANES 2 /* Interleaved planes */
316#define FB_TYPE_TEXT 3 /* Text/attributes */
317#define FB_TYPE_VGA_PLANES 4 /* EGA/VGA planes */
318#define FB_TYPE_FOURCC 5 /* Type identified by a V4L2 FOURCC */
319
320#define FB_AUX_TEXT_MDA 0 /* Monochrome text */
321#define FB_AUX_TEXT_CGA 1 /* CGA/EGA/VGA Color text */
322#define FB_AUX_TEXT_S3_MMIO 2 /* S3 MMIO fasttext */
323#define FB_AUX_TEXT_MGA_STEP16 3 /* MGA Millenium I: text, attr, */
324 /* 14 reserved bytes */
325#define FB_AUX_TEXT_MGA_STEP8 4 /* other MGAs: text, attr, */
326 /* 6 reserved bytes */
327#define FB_AUX_TEXT_SVGA_GROUP 8 /* 8-15: SVGA tileblit */
328 /* compatible modes */
329#define FB_AUX_TEXT_SVGA_MASK 7 /* lower three bits says step */
330#define FB_AUX_TEXT_SVGA_STEP2 8 /* SVGA text mode: text, attr */
331#define FB_AUX_TEXT_SVGA_STEP4 9 /* SVGA text mode: text, attr, */
332 /* 2 reserved bytes */
333#define FB_AUX_TEXT_SVGA_STEP8 10 /* SVGA text mode: text, attr, */
334 /* 6 reserved bytes */
335#define FB_AUX_TEXT_SVGA_STEP16 11 /* SVGA text mode: text, attr, */
336 /* 14 reserved bytes */
337#define FB_AUX_TEXT_SVGA_LAST 15 /* reserved up to 15 */
338
339#define FB_AUX_VGA_PLANES_VGA4 0 /* 16 color planes (EGA/VGA) */
340#define FB_AUX_VGA_PLANES_CFB4 1 /* CFB4 in planes (VGA) */
341#define FB_AUX_VGA_PLANES_CFB8 2 /* CFB8 in planes (VGA) */
342
343#define FB_VISUAL_MONO01 0 /* Monochr. 1=Black 0=White */
344#define FB_VISUAL_MONO10 1 /* Monochr. 1=White 0=Black */
345#define FB_VISUAL_TRUECOLOR 2 /* True color */
346#define FB_VISUAL_PSEUDOCOLOR 3 /* Pseudo color (like atari) */
347#define FB_VISUAL_DIRECTCOLOR 4 /* Direct color */
348#define FB_VISUAL_STATIC_PSEUDOCOLOR 5 /* Pseudo color readonly */
349#define FB_VISUAL_FOURCC 6 /* Visual identified by */
350 /* a V4L2 FOURCC */
351
352#define FB_ACCEL_NONE 0 /* no hardware accelerator */
353#define FB_ACCEL_ATARIBLITT 1 /* Atari Blitter */
354#define FB_ACCEL_AMIGABLITT 2 /* Amiga Blitter */
355#define FB_ACCEL_S3_TRIO64 3 /* Cybervision64 (S3 Trio64) */
356#define FB_ACCEL_NCR_77C32BLT 4 /* RetinaZ3 (NCR 77C32BLT) */
357#define FB_ACCEL_S3_VIRGE 5 /* Cybervision64/3D (S3 ViRGE) */
358#define FB_ACCEL_ATI_MACH64GX 6 /* ATI Mach 64GX family */
359#define FB_ACCEL_DEC_TGA 7 /* DEC 21030 TGA */
360#define FB_ACCEL_ATI_MACH64CT 8 /* ATI Mach 64CT family */
361#define FB_ACCEL_ATI_MACH64VT 9 /* ATI Mach 64CT family VT class */
362#define FB_ACCEL_ATI_MACH64GT 10 /* ATI Mach 64CT family GT class */
363#define FB_ACCEL_SUN_CREATOR 11 /* Sun Creator/Creator3D */
364#define FB_ACCEL_SUN_CGSIX 12 /* Sun cg6 */
365#define FB_ACCEL_SUN_LEO 13 /* Sun leo/zx */
366#define FB_ACCEL_IMS_TWINTURBO 14 /* IMS Twin Turbo */
367#define FB_ACCEL_3DLABS_PERMEDIA2 15 /* 3Dlabs Permedia 2 */
368#define FB_ACCEL_MATROX_MGA2064W 16 /* Matrox MGA2064W (Millenium) */
369#define FB_ACCEL_MATROX_MGA1064SG 17 /* Matrox MGA1064SG (Mystique) */
370#define FB_ACCEL_MATROX_MGA2164W 18 /* Matrox MGA2164W (Millenium II) */
371#define FB_ACCEL_MATROX_MGA2164W_AGP 19 /* Matrox MGA2164W (Millenium II) */
372#define FB_ACCEL_MATROX_MGAG100 20 /* Matrox G100 (Productiva G100) */
373#define FB_ACCEL_MATROX_MGAG200 21 /* Matrox G200 (Myst, Mill, ...) */
374#define FB_ACCEL_SUN_CG14 22 /* Sun cgfourteen */
375#define FB_ACCEL_SUN_BWTWO 23 /* Sun bwtwo */
376#define FB_ACCEL_SUN_CGTHREE 24 /* Sun cgthree */
377#define FB_ACCEL_SUN_TCX 25 /* Sun tcx */
378#define FB_ACCEL_MATROX_MGAG400 26 /* Matrox G400 */
379#define FB_ACCEL_NV3 27 /* nVidia RIVA 128 */
380#define FB_ACCEL_NV4 28 /* nVidia RIVA TNT */
381#define FB_ACCEL_NV5 29 /* nVidia RIVA TNT2 */
382#define FB_ACCEL_CT_6555x 30 /* C&T 6555x */
383#define FB_ACCEL_3DFX_BANSHEE 31 /* 3Dfx Banshee */
384#define FB_ACCEL_ATI_RAGE128 32 /* ATI Rage128 family */
385#define FB_ACCEL_IGS_CYBER2000 33 /* CyberPro 2000 */
386#define FB_ACCEL_IGS_CYBER2010 34 /* CyberPro 2010 */
387#define FB_ACCEL_IGS_CYBER5000 35 /* CyberPro 5000 */
388#define FB_ACCEL_SIS_GLAMOUR 36 /* SiS 300/630/540 */
389#define FB_ACCEL_3DLABS_PERMEDIA3 37 /* 3Dlabs Permedia 3 */
390#define FB_ACCEL_ATI_RADEON 38 /* ATI Radeon family */
391#define FB_ACCEL_I810 39 /* Intel 810/815 */
392#define FB_ACCEL_SIS_GLAMOUR_2 40 /* SiS 315, 650, 740 */
393#define FB_ACCEL_SIS_XABRE 41 /* SiS 330 ("Xabre") */
394#define FB_ACCEL_I830 42 /* Intel 830M/845G/85x/865G */
395#define FB_ACCEL_NV_10 43 /* nVidia Arch 10 */
396#define FB_ACCEL_NV_20 44 /* nVidia Arch 20 */
397#define FB_ACCEL_NV_30 45 /* nVidia Arch 30 */
398#define FB_ACCEL_NV_40 46 /* nVidia Arch 40 */
399#define FB_ACCEL_XGI_VOLARI_V 47 /* XGI Volari V3XT, V5, V8 */
400#define FB_ACCEL_XGI_VOLARI_Z 48 /* XGI Volari Z7 */
401#define FB_ACCEL_OMAP1610 49 /* TI OMAP16xx */
402#define FB_ACCEL_TRIDENT_TGUI 50 /* Trident TGUI */
403#define FB_ACCEL_TRIDENT_3DIMAGE 51 /* Trident 3DImage */
404#define FB_ACCEL_TRIDENT_BLADE3D 52 /* Trident Blade3D */
405#define FB_ACCEL_TRIDENT_BLADEXP 53 /* Trident BladeXP */
406#define FB_ACCEL_CIRRUS_ALPINE 53 /* Cirrus Logic 543x/544x/5480 */
407#define FB_ACCEL_NEOMAGIC_NM2070 90 /* NeoMagic NM2070 */
408#define FB_ACCEL_NEOMAGIC_NM2090 91 /* NeoMagic NM2090 */
409#define FB_ACCEL_NEOMAGIC_NM2093 92 /* NeoMagic NM2093 */
410#define FB_ACCEL_NEOMAGIC_NM2097 93 /* NeoMagic NM2097 */
411#define FB_ACCEL_NEOMAGIC_NM2160 94 /* NeoMagic NM2160 */
412#define FB_ACCEL_NEOMAGIC_NM2200 95 /* NeoMagic NM2200 */
413#define FB_ACCEL_NEOMAGIC_NM2230 96 /* NeoMagic NM2230 */
414#define FB_ACCEL_NEOMAGIC_NM2360 97 /* NeoMagic NM2360 */
415#define FB_ACCEL_NEOMAGIC_NM2380 98 /* NeoMagic NM2380 */
416#define FB_ACCEL_PXA3XX 99 /* PXA3xx */
417
418#define FB_ACCEL_SAVAGE4 0x80 /* S3 Savage4 */
419#define FB_ACCEL_SAVAGE3D 0x81 /* S3 Savage3D */
420#define FB_ACCEL_SAVAGE3D_MV 0x82 /* S3 Savage3D-MV */
421#define FB_ACCEL_SAVAGE2000 0x83 /* S3 Savage2000 */
422#define FB_ACCEL_SAVAGE_MX_MV 0x84 /* S3 Savage/MX-MV */
423#define FB_ACCEL_SAVAGE_MX 0x85 /* S3 Savage/MX */
424#define FB_ACCEL_SAVAGE_IX_MV 0x86 /* S3 Savage/IX-MV */
425#define FB_ACCEL_SAVAGE_IX 0x87 /* S3 Savage/IX */
426#define FB_ACCEL_PROSAVAGE_PM 0x88 /* S3 ProSavage PM133 */
427#define FB_ACCEL_PROSAVAGE_KM 0x89 /* S3 ProSavage KM133 */
428#define FB_ACCEL_S3TWISTER_P 0x8a /* S3 Twister */
429#define FB_ACCEL_S3TWISTER_K 0x8b /* S3 TwisterK */
430#define FB_ACCEL_SUPERSAVAGE 0x8c /* S3 Supersavage */
431#define FB_ACCEL_PROSAVAGE_DDR 0x8d /* S3 ProSavage DDR */
432#define FB_ACCEL_PROSAVAGE_DDRK 0x8e /* S3 ProSavage DDR-K */
433
434#define FB_ACCEL_PUV3_UNIGFX 0xa0 /* PKUnity-v3 Unigfx */
435
436#define FB_NONSTD_HAM 1 /* Hold-And-Modify (HAM) */
437#define FB_NONSTD_REV_PIX_IN_B 2 /* Order of pixels in each byte */
438 /* is reversed */
439
440#define FB_ACTIVATE_NOW 0 /* Set values immediately (or vbl) */
441#define FB_ACTIVATE_NXTOPEN 1 /* Activate on next open */
442#define FB_ACTIVATE_TEST 2 /* Don't set, round up impossible */
443#define FB_ACTIVATE_MASK 15 /* values */
444#define FB_ACTIVATE_VBL 16 /* Activate values on next vbl */
445#define FB_CHANGE_CMAP_VBL 32 /* Change colormap on vbl */
446#define FB_ACTIVATE_ALL 64 /* Change all VCs on this fb */
447#define FB_ACTIVATE_FORCE 128 /* Force apply even when no change */
448#define FB_ACTIVATE_INV_MODE 256 /* Invalidate videomode */
449
450#define FB_ACCELF_TEXT 1 /* (OBSOLETE) See fb_info.flags */
451 /* and vc_mode */
452
453#define FB_SYNC_HOR_HIGH_ACT 1 /* Horizontal sync high active */
454#define FB_SYNC_VERT_HIGH_ACT 2 /* Vertical sync high active */
455#define FB_SYNC_EXT 4 /* External sync */
456#define FB_SYNC_COMP_HIGH_ACT 8 /* Composite sync high active */
457#define FB_SYNC_BROADCAST 16 /* Broadcast video timings */
458 /* vtotal = 144d/288n/576i => PAL */
459 /* vtotal = 121d/242n/484i => NTSC */
460#define FB_SYNC_ON_GREEN 32 /* Sync on green */
461
462#define FB_VMODE_NONINTERLACED 0 /* Non interlaced */
463#define FB_VMODE_INTERLACED 1 /* Interlaced */
464#define FB_VMODE_DOUBLE 2 /* Double scan */
465#define FB_VMODE_ODD_FLD_FIRST 4 /* Interlaced: top line first */
466#define FB_VMODE_MASK 255
467
468#define FB_VMODE_YWRAP 256 /* Ywrap instead of panning */
469#define FB_VMODE_SMOOTH_XPAN 512 /* Smooth xpan possible */
470 /* (internally used) */
471#define FB_VMODE_CONUPDATE 512 /* Don't update x/yoffset */
472
473#define FB_ROTATE_UR 0
474#define FB_ROTATE_CW 1
475#define FB_ROTATE_UD 2
476#define FB_ROTATE_CCW 3
477
478/****************************************************************************
479 * Public Types
480 ****************************************************************************/
481
482/* If any dimension of the display exceeds 65,536 pixels, then the following
483 * type will need to change:
484 */
485
486typedef uint16_t fb_coord_t;
487
488/* This structure describes the overall video controller */
489
490struct fb_videoinfo_s
491{
492 uint8_t fmt; /* see FB_FMT_* */
493 fb_coord_t xres; /* Horizontal resolution in pixel columns */
494 fb_coord_t yres; /* Vertical resolution in pixel rows */
495 uint8_t nplanes; /* Number of color planes supported */
496#ifdef CONFIG_FB_OVERLAY
497 uint8_t noverlays; /* Number of overlays supported */
498#endif
499#ifdef CONFIG_FB_MODULEINFO
500 uint8_t moduleinfo[128]; /* Module information filled by vendor */
501#endif
502};
503
504/* This structure describes one color plane. Some YUV formats may support
505 * up to 4 planes
506 */
507
508struct fb_planeinfo_s
509{
510 FAR void *fbmem; /* Start of frame buffer memory */
511 size_t fblen; /* Length of frame buffer memory in bytes */
512 fb_coord_t stride; /* Length of a line in bytes */
513 uint8_t display; /* Display number */
514 uint8_t bpp; /* Bits per pixel */
515 uint32_t xres_virtual; /* Virtual Horizontal resolution in pixel columns */
516 uint32_t yres_virtual; /* Virtual Vertical resolution in pixel rows */
517 uint32_t xoffset; /* Offset from virtual to visible resolution */
518 uint32_t yoffset; /* Offset from virtual to visible resolution */
519};
520
521/* This structure describes an area. */
522
523struct fb_area_s
524{
525 fb_coord_t x; /* x-offset of the area */
526 fb_coord_t y; /* y-offset of the area */
527 fb_coord_t w; /* Width of the area */
528 fb_coord_t h; /* Height of the area */
529};
530
531#ifdef CONFIG_FB_OVERLAY
532/* This structure describes the transparency. */
533
534struct fb_transp_s
535{
536 uint8_t transp; /* Transparency */
537 uint8_t transp_mode; /* Transparency mode */
538};
539
540/* This structure describes one overlay. */
541
542struct fb_overlayinfo_s
543{
544 FAR void *fbmem; /* Start of frame buffer memory */
545 size_t fblen; /* Length of frame buffer memory in bytes */
546 fb_coord_t stride; /* Length of a line in bytes */
547 uint8_t overlay; /* Overlay number */
548 uint8_t bpp; /* Bits per pixel */
549 uint32_t xres; /* Horizontal resolution in pixel columns */
550 uint32_t yres; /* Vertical resolution in pixel rows */
551 uint32_t xres_virtual; /* Virtual Horizontal resolution in pixel columns */
552 uint32_t yres_virtual; /* Virtual Vertical resolution in pixel rows */
553 uint32_t xoffset; /* Offset from virtual to visible resolution */
554 uint32_t yoffset; /* Offset from virtual to visible resolution */
555 uint8_t blank; /* Blank or unblank */
556 uint32_t chromakey; /* Chroma key argb8888 formatted */
557 uint32_t color; /* Color argb8888 formatted */
558 struct fb_transp_s transp; /* Transparency */
559 struct fb_area_s sarea; /* Selected area within the overlay */
560 struct fb_area_s darea; /* Destination area on the primary FB */
561 uint32_t accl; /* Supported hardware acceleration */
562};
563
564#ifdef CONFIG_FB_OVERLAY_BLIT
565/* This structure describes an overlay area within a whole overlay */
566
567struct fb_overlayarea_s
568{
569 uint8_t overlay; /* Number overlay */
570 struct fb_area_s area; /* Overlay area */
571};
572
573/* This structure describes blit operation */
574
575struct fb_overlayblit_s
576{
577 struct fb_overlayarea_s dest; /* The destination overlay area */
578 struct fb_overlayarea_s src; /* The source overlay area */
579};
580
581/* This structure describes blend operation */
582
583struct fb_overlayblend_s
584{
585 struct fb_overlayarea_s dest; /* The destination overlay area */
586 struct fb_overlayarea_s foreground; /* The foreground overlay area */
587 struct fb_overlayarea_s background; /* The background overlay area */
588};
589#endif
590#endif /* CONFIG_FB_OVERLAY */
591
592/* On video controllers that support mapping of a pixel palette value
593 * to an RGB encoding, the following structure may be used to define
594 * that mapping.
595 */
596
597#ifdef CONFIG_FB_CMAP
598struct fb_cmap_s
599{
600 uint16_t first; /* Offset offset first color entry in tables */
601 uint16_t len; /* Number of color entries in tables */
602
603 /* Tables of color component. Any may be NULL if not used */
604
605 uint8_t *red; /* Table of 8-bit red values */
606 uint8_t *green; /* Table of 8-bit green values */
607 uint8_t *blue; /* Table of 8-bit blue values */
608#ifdef CONFIG_FB_TRANSPARENCY
609 uint8_t *transp; /* Table of 8-bit transparency */
610#endif
611};
612#endif
613
614#ifdef CONFIG_FB_HWCURSOR
615#ifdef CONFIG_FB_HWCURSORIMAGE
616/* If the video controller hardware supports a hardware cursor and
617 * that hardware cursor supports user-provided images, then the
618 * following structure may be used to provide the cursor image
619 */
620
621struct fb_cursorimage_s
622{
623 fb_coord_t width; /* Width of the cursor image in pixels */
624 fb_coord_t height /* Height of the cursor image in pixels */
625 const uint8_t *image; /* Pointer to image data */
626};
627#endif
628
629/* The following structure defines the cursor position/size */
630
631struct fb_cursorpos_s
632{
633 fb_coord_t x; /* X position in pixels */
634 fb_coord_t y; /* Y position in rows */
635};
636
637/* If the hardware supports setting the cursor size, then this structure
638 * is used to provide the size.
639 */
640
641#ifdef CONFIG_FB_HWCURSORSIZE
642struct fb_cursorsize_s
643{
644 fb_coord_t h; /* Height in rows */
645 fb_coord_t w; /* Width in pixels */
646};
647#endif
648
649/* The following are used to get/set the cursor attributes via IOCTL
650 * command.
651 */
653struct fb_cursorattrib_s
654{
655#ifdef CONFIG_FB_HWCURSORIMAGE
656 uint8_t fmt; /* Video format of cursor */
657#endif
658 struct fb_cursorpos_s pos; /* Current cursor position */
659#ifdef CONFIG_FB_HWCURSORSIZE
660 struct fb_cursorsize_s mxsize; /* Maximum cursor size */
661 struct fb_cursorsize_s size; /* Current size */
662#endif
663};
665struct fb_setcursor_s
666{
667 uint8_t flags; /* See FB_CUR_* definitions */
668 struct fb_cursorpos_s pos; /* Cursor position */
669#ifdef CONFIG_FB_HWCURSORSIZE
670 struct fb_cursorsize_s size; /* Cursor size */
671#endif
672#ifdef CONFIG_FB_HWCURSORIMAGE
673 struct fb_cursorimage_s img; /* Cursor image */
674#endif
675};
676#endif
677
678union fb_paninfo_u
679{
680 struct fb_planeinfo_s planeinfo;
681#ifdef CONFIG_FB_OVERLAY
682 struct fb_overlayinfo_s overlayinfo;
683#endif
684};
685
686/* The framebuffer "object" is accessed through within the OS via
687 * the following vtable:
688 */
689
690struct fb_vtable_s
691{
692 /* Get information about the video controller configuration and the
693 * configuration of each color plane.
694 */
695
696 int (*getvideoinfo)(FAR struct fb_vtable_s *vtable,
697 FAR struct fb_videoinfo_s *vinfo);
698 int (*getplaneinfo)(FAR struct fb_vtable_s *vtable, int planeno,
699 FAR struct fb_planeinfo_s *pinfo);
700
701 /* open/close window. */
702
703 int (*open)(FAR struct fb_vtable_s *vtable);
704 int (*close)(FAR struct fb_vtable_s *vtable);
705
706#ifdef CONFIG_FB_CMAP
707 /* The following are provided only if the video hardware supports RGB
708 * color mapping
709 */
710
711 int (*getcmap)(FAR struct fb_vtable_s *vtable,
712 FAR struct fb_cmap_s *cmap);
713 int (*putcmap)(FAR struct fb_vtable_s *vtable,
714 FAR const struct fb_cmap_s *cmap);
715#endif
716
717#ifdef CONFIG_FB_HWCURSOR
718 /* The following are provided only if the video hardware supports a
719 * hardware cursor.
720 */
721
722 int (*getcursor)(FAR struct fb_vtable_s *vtable,
723 FAR struct fb_cursorattrib_s *attrib);
724 int (*setcursor)(FAR struct fb_vtable_s *vtable,
725 FAR struct fb_setcursor_s *settings);
726#endif
727
728#ifdef CONFIG_FB_UPDATE
729 /* The following are provided only if the video hardware need extera
730 * notification to update display content.
731 */
732
733 int (*updatearea)(FAR struct fb_vtable_s *vtable,
734 FAR const struct fb_area_s *area);
735#endif
736
737#ifdef CONFIG_FB_SYNC
738 /* The following are provided only if the video hardware signals
739 * vertical sync.
740 */
741
742 int (*waitforvsync)(FAR struct fb_vtable_s *vtable);
743#endif
744
745#ifdef CONFIG_FB_OVERLAY
746 /* Get information about the video controller configuration and the
747 * configuration of each overlay.
748 */
749
750 int (*getoverlayinfo)(FAR struct fb_vtable_s *vtable, int overlayno,
751 FAR struct fb_overlayinfo_s *oinfo);
752
753 /* The following are provided only if the video hardware supports
754 * transparency
755 */
756
757 int (*settransp)(FAR struct fb_vtable_s *vtable,
758 FAR const struct fb_overlayinfo_s *oinfo);
759
760 /* The following are provided only if the video hardware supports
761 * chromakey
762 */
763
764 int (*setchromakey)(FAR struct fb_vtable_s *vtable,
765 FAR const struct fb_overlayinfo_s *oinfo);
766
767 /* The following are provided only if the video hardware supports
768 * filling the overlay with a color.
769 */
770
771 int (*setcolor)(FAR struct fb_vtable_s *vtable,
772 FAR const struct fb_overlayinfo_s *oinfo);
773
774 /* The following allows to switch the overlay on or off */
775
776 int (*setblank)(FAR struct fb_vtable_s *vtable,
777 FAR const struct fb_overlayinfo_s *oinfo);
778
779 /* The following allows to set the active area for subsequently overlay
780 * operations.
781 */
782
783 int (*setarea)(FAR struct fb_vtable_s *vtable,
784 FAR const struct fb_overlayinfo_s *oinfo);
785
786 /* The following allows to set the display area for subsequently overlay
787 * operations.
788 */
789
790 int (*setdestarea)(FAR struct fb_vtable_s *vtable,
791 FAR const struct fb_overlayinfo_s *oinfo);
792
793# ifdef CONFIG_FB_OVERLAY_BLIT
794 /* The following are provided only if the video hardware supports
795 * blit operation between overlays.
796 */
797
798 int (*blit)(FAR struct fb_vtable_s *vtable,
799 FAR const struct fb_overlayblit_s *blit);
800
801 /* The following are provided only if the video hardware supports
802 * blend operation between overlays.
803 */
804
805 int (*blend)(FAR struct fb_vtable_s *vtable,
806 FAR const struct fb_overlayblend_s *blend);
807# endif
808
809 /* The following allows to pan display for multiple buffers.
810 */
811
812 int (*panoverlay)(FAR struct fb_vtable_s *vtable,
813 FAR const struct fb_overlayinfo_s *oinfo);
814
815#endif
816
817 /* Pan display for multiple buffers. */
818
819 int (*pandisplay)(FAR struct fb_vtable_s *vtable,
820 FAR struct fb_planeinfo_s *pinfo);
821
822 /* Specific Controls ******************************************************/
823
824 /* Set the frequency of the framebuffer update panel (0: disable refresh) */
826 int (*setframerate)(FAR struct fb_vtable_s *vtable, int rate);
827
828 /* Get the frequency of the framebuffer update panel (0: disable refresh) */
829
830 int (*getframerate)(FAR struct fb_vtable_s *vtable);
831
832 /* Get the panel power status (0: full off). */
833
834 int (*getpower)(FAR struct fb_vtable_s *vtable);
835
836 /* Enable/disable panel power (0: full off). */
837
838 int (*setpower)(FAR struct fb_vtable_s *vtable, int power);
839
840 /* Passthrough the unknown ioctl commands. */
841
842 int (*ioctl)(FAR struct fb_vtable_s *vtable, int cmd, unsigned long arg);
843
844 /* Pointer to framebuffer device private data. */
845
846 FAR void *priv;
847};
848
849/* Linux Support ************************************************************/
850
852{
853 char id[16]; /* Identification string eg "TT Builtin" */
854 unsigned long smem_start; /* Start of frame buffer mem */
855 /* (physical address) */
856 uint32_t smem_len; /* Length of frame buffer mem */
857 uint32_t type; /* See FB_TYPE_* */
858 uint32_t type_aux; /* Interleave for interleaved Planes */
859 uint32_t visual; /* See FB_VISUAL_* */
860 uint16_t xpanstep; /* Zero if no hardware panning */
861 uint16_t ypanstep; /* Zero if no hardware panning */
862 uint16_t ywrapstep; /* Zero if no hardware ywrap */
863 uint32_t line_length; /* Length of a line in bytes */
864 unsigned long mmio_start; /* Start of Memory Mapped I/O */
865 /* (physical address) */
866 uint32_t mmio_len; /* Length of Memory Mapped I/O */
867 uint32_t accel; /* Indicate to driver which */
868 /* specific chip/card we have */
869 uint16_t capabilities; /* See FB_CAP_* */
870 uint16_t reserved[2]; /* Reserved for future compatibility */
871};
872
873/* Interpretation of offset for color fields: All offsets are from the right,
874 * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you
875 * can use the offset as right argument to <<). A pixel afterwards is a bit
876 * stream and is written to video memory as that unmodified.
877 *
878 * For pseudocolor: offset and length should be the same for all color
879 * components. Offset specifies the position of the least significant bit
880 * of the pallette index in a pixel value. Length indicates the number
881 * of available palette entries (i.e. # of entries = 1 << length).
882 */
883
884struct fb_bitfield
885{
886 uint32_t offset; /* Beginning of bitfield */
887 uint32_t length; /* Length of bitfield */
888 uint32_t msb_right; /* != 0 : Most significant bit is right */
889};
890
892{
893 uint32_t xres; /* Visible resolution */
894 uint32_t yres;
895 uint32_t xres_virtual; /* Virtual resolution */
896 uint32_t yres_virtual;
897 uint32_t xoffset; /* Offset from virtual to visible */
898 uint32_t yoffset; /* Resolution */
899 uint32_t bits_per_pixel; /* Guess what */
900 uint32_t grayscale; /* 0 = color, 1 = grayscale, >1 = FOURCC */
901 struct fb_bitfield red; /* Bitfield in fb mem if true color, */
902 struct fb_bitfield green; /* else only length is significant */
903 struct fb_bitfield blue;
904 struct fb_bitfield transp; /* Transparency */
905 uint32_t nonstd; /* != 0 Non standard pixel format */
906 uint32_t activate; /* See FB_ACTIVATE_* */
907 uint32_t height; /* Height of picture in mm */
908 uint32_t width; /* Width of picture in mm */
909 uint32_t accel_flags; /* (OBSOLETE) See fb_info.flags */
910
911 /* Timing: All values in pixclocks, except pixclock (of course) */
912
913 uint32_t pixclock; /* Pixel clock in ps (pico seconds) */
914 uint32_t left_margin; /* Time from sync to picture */
915 uint32_t right_margin; /* Time from picture to sync */
916 uint32_t upper_margin; /* Time from sync to picture */
917 uint32_t lower_margin;
918 uint32_t hsync_len; /* Length of horizontal sync */
919 uint32_t vsync_len; /* Length of vertical sync */
920 uint32_t sync; /* See FB_SYNC_* */
921 uint32_t vmode; /* See FB_VMODE_* */
922 uint32_t rotate; /* Angle we rotate counter clockwise */
923 uint32_t colorspace; /* Colorspace for FOURCC-based modes */
924 uint32_t reserved[4]; /* Reserved for future compatibility */
925};
926
927/****************************************************************************
928 * Public Data
929 ****************************************************************************/
930
931#ifdef __cplusplus
932#define EXTERN extern "C"
933extern "C"
934{
935#else
936#define EXTERN extern
937#endif
938
939/****************************************************************************
940 * Public Function Prototypes
941 ****************************************************************************/
942
943/****************************************************************************
944 * If an architecture supports a framebuffer, then it must provide the
945 * following APIs to access the framebuffer.
946 ****************************************************************************/
947
948/****************************************************************************
949 * Name: up_fbinitialize
950 *
951 * Description:
952 * Initialize the framebuffer video hardware associated with the display.
953 *
954 * There are multiple logic paths that may call up_fbinitialize() so any
955 * implementation of up_fbinitialize() should be tolerant of being called
956 * multiple times.
957 *
958 * Input Parameters:
959 * display - In the case of hardware with multiple displays, this
960 * specifies the display. Normally this is zero.
961 *
962 * Returned Value:
963 * Zero is returned on success; a negated errno value is returned on any
964 * failure.
965 *
966 ****************************************************************************/
967
968int up_fbinitialize(int display);
969
970/****************************************************************************
971 * Name: up_fbgetvplane
972 *
973 * Description:
974 * Return a a reference to the framebuffer object for the specified video
975 * plane of the specified plane. Many OSDs support multiple planes of
976 * video.
977 *
978 * Input Parameters:
979 * display - In the case of hardware with multiple displays, this
980 * specifies the display. Normally this is zero.
981 * vplane - Identifies the plane being queried.
982 *
983 * Returned Value:
984 * A non-NULL pointer to the frame buffer access structure is returned on
985 * success; NULL is returned on any failure.
986 *
987 ****************************************************************************/
988
989FAR struct fb_vtable_s *up_fbgetvplane(int display, int vplane);
990
991/****************************************************************************
992 * Name: up_fbuninitialize
993 *
994 * Description:
995 * Uninitialize the framebuffer support for the specified display.
996 *
997 * Input Parameters:
998 * display - In the case of hardware with multiple displays, this
999 * specifies the display. Normally this is zero.
1000 *
1001 * Returned Value:
1002 * None
1003 *
1004 ****************************************************************************/
1005
1006void up_fbuninitialize(int display);
1007
1008/****************************************************************************
1009 * Name: fb_peek_paninfo
1010 * Description:
1011 * Peek a frame from pan info queue of the specified overlay.
1012 *
1013 * Input Parameters:
1014 * vtable - Pointer to framebuffer's virtual table.
1015 * info - Pointer to pan info.
1016 * overlay - Overlay index.
1017 *
1018 * Returned Value:
1019 * Zero is returned on success; a negated errno value is returned on any
1020 * failure.
1021 ****************************************************************************/
1022
1023int fb_peek_paninfo(FAR struct fb_vtable_s *vtable,
1024 FAR union fb_paninfo_u *info,
1025 int overlay);
1026
1027/****************************************************************************
1028 * Name: fb_remove_paninfo
1029 * Description:
1030 * Remove a frame from pan info queue of the specified overlay.
1031 *
1032 * Input Parameters:
1033 * vtable - Pointer to framebuffer's virtual table.
1034 * overlay - Overlay index.
1035 *
1036 * Returned Value:
1037 * Zero is returned on success; a negated errno value is returned on any
1038 * failure.
1039 ****************************************************************************/
1040
1041int fb_remove_paninfo(FAR struct fb_vtable_s *vtable, int overlay);
1042
1043/****************************************************************************
1044 * Name: fb_paninfo_count
1045 * Description:
1046 * Get pan info count of specified overlay pan info queue.
1047 *
1048 * Input Parameters:
1049 * vtable - Pointer to framebuffer's virtual table.
1050 * overlay - Overlay index.
1051 *
1052 * Returned Value:
1053 * a non-negative value is returned on success; a negated errno value is
1054 * returned on any failure.
1055 ****************************************************************************/
1056
1057int fb_paninfo_count(FAR struct fb_vtable_s *vtable, int overlay);
1058
1059/****************************************************************************
1060 * Name: fb_register
1061 *
1062 * Description:
1063 * Register the framebuffer character device at /dev/fbN where N is the
1064 * display number if the devices supports only a single plane. If the
1065 * hardware supports multiple color planes, then the device will be
1066 * registered at /dev/fbN.M where N is the again display number but M
1067 * is the display plane.
1068 *
1069 * Input Parameters:
1070 * display - The display number for the case of boards supporting multiple
1071 * displays or for hardware that supports multiple
1072 * layers (each layer is consider a display). Typically zero.
1073 * plane - Identifies the color plane on hardware that supports separate
1074 * framebuffer "planes" for each color component.
1075 *
1076 * Returned Value:
1077 * Zero (OK) is returned success; a negated errno value is returned on any
1078 * failure.
1079 *
1080 ****************************************************************************/
1081
1082int fb_register(int display, int plane);
1083
1084#undef EXTERN
1085#ifdef __cplusplus
1086}
1087#endif
1088
1089#endif /* __INCLUDE_NUTTX_VIDEO_FB_H */
Definition: fb.h:498
Definition: fb.h:859
Definition: fb.h:826
Definition: fb.h:483
Definition: fb.h:866
Definition: fb.h:465
Definition: fb.h:665
Definition: fb.h:653