Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
fb.h
Go to the documentation of this file.
1
#ifndef _LINUX_FB_H
2
#define _LINUX_FB_H
3
4
#include <
linux/kgdb.h
>
5
#include <
uapi/linux/fb.h
>
6
7
#define FBIO_CURSOR _IOWR('F', 0x08, struct fb_cursor_user)
8
9
#include <linux/fs.h>
10
#include <
linux/init.h
>
11
#include <
linux/workqueue.h
>
12
#include <
linux/notifier.h
>
13
#include <linux/list.h>
14
#include <
linux/backlight.h
>
15
#include <linux/slab.h>
16
#include <asm/io.h>
17
18
struct
vm_area_struct
;
19
struct
fb_info
;
20
struct
device
;
21
struct
file
;
22
23
/* Definitions below are used in the parsed monitor specs */
24
#define FB_DPMS_ACTIVE_OFF 1
25
#define FB_DPMS_SUSPEND 2
26
#define FB_DPMS_STANDBY 4
27
28
#define FB_DISP_DDI 1
29
#define FB_DISP_ANA_700_300 2
30
#define FB_DISP_ANA_714_286 4
31
#define FB_DISP_ANA_1000_400 8
32
#define FB_DISP_ANA_700_000 16
33
34
#define FB_DISP_MONO 32
35
#define FB_DISP_RGB 64
36
#define FB_DISP_MULTI 128
37
#define FB_DISP_UNKNOWN 256
38
39
#define FB_SIGNAL_NONE 0
40
#define FB_SIGNAL_BLANK_BLANK 1
41
#define FB_SIGNAL_SEPARATE 2
42
#define FB_SIGNAL_COMPOSITE 4
43
#define FB_SIGNAL_SYNC_ON_GREEN 8
44
#define FB_SIGNAL_SERRATION_ON 16
45
46
#define FB_MISC_PRIM_COLOR 1
47
#define FB_MISC_1ST_DETAIL 2
/* First Detailed Timing is preferred */
48
struct
fb_chroma
{
49
__u32
redx
;
/* in fraction of 1024 */
50
__u32
greenx
;
51
__u32
bluex
;
52
__u32
whitex
;
53
__u32
redy
;
54
__u32
greeny
;
55
__u32
bluey
;
56
__u32
whitey
;
57
};
58
59
struct
fb_monspecs
{
60
struct
fb_chroma
chroma
;
61
struct
fb_videomode
*
modedb
;
/* mode database */
62
__u8
manufacturer
[4];
/* Manufacturer */
63
__u8
monitor
[14];
/* Monitor String */
64
__u8
serial_no
[14];
/* Serial Number */
65
__u8
ascii
[14];
/* ? */
66
__u32
modedb_len
;
/* mode database length */
67
__u32
model
;
/* Monitor Model */
68
__u32
serial
;
/* Serial Number - Integer */
69
__u32
year
;
/* Year manufactured */
70
__u32
week
;
/* Week Manufactured */
71
__u32
hfmin
;
/* hfreq lower limit (Hz) */
72
__u32
hfmax
;
/* hfreq upper limit (Hz) */
73
__u32
dclkmin
;
/* pixelclock lower limit (Hz) */
74
__u32
dclkmax
;
/* pixelclock upper limit (Hz) */
75
__u16
input
;
/* display type - see FB_DISP_* */
76
__u16
dpms
;
/* DPMS support - see FB_DPMS_ */
77
__u16
signal
;
/* Signal Type - see FB_SIGNAL_* */
78
__u16
vfmin
;
/* vfreq lower limit (Hz) */
79
__u16
vfmax
;
/* vfreq upper limit (Hz) */
80
__u16
gamma
;
/* Gamma - in fractions of 100 */
81
__u16
gtf
: 1;
/* supports GTF */
82
__u16
misc
;
/* Misc flags - see FB_MISC_* */
83
__u8
version
;
/* EDID version... */
84
__u8
revision
;
/* ...and revision */
85
__u8
max_x
;
/* Maximum horizontal size (cm) */
86
__u8
max_y
;
/* Maximum vertical size (cm) */
87
};
88
89
struct
fb_cmap_user
{
90
__u32
start
;
/* First entry */
91
__u32
len
;
/* Number of entries */
92
__u16
__user
*
red
;
/* Red values */
93
__u16
__user
*
green
;
94
__u16
__user
*
blue
;
95
__u16
__user
*
transp
;
/* transparency, can be NULL */
96
};
97
98
struct
fb_image_user
{
99
__u32
dx
;
/* Where to place image */
100
__u32
dy
;
101
__u32
width
;
/* Size of image */
102
__u32
height
;
103
__u32
fg_color
;
/* Only used when a mono bitmap */
104
__u32
bg_color
;
105
__u8
depth
;
/* Depth of the image */
106
const
char
__user
*
data
;
/* Pointer to image data */
107
struct
fb_cmap_user
cmap
;
/* color map info */
108
};
109
110
struct
fb_cursor_user
{
111
__u16
set
;
/* what to set */
112
__u16
enable
;
/* cursor on/off */
113
__u16
rop
;
/* bitop operation */
114
const
char
__user
*
mask
;
/* cursor mask bits */
115
struct
fbcurpos
hot
;
/* cursor hot spot */
116
struct
fb_image_user
image
;
/* Cursor image */
117
};
118
119
/*
120
* Register/unregister for framebuffer events
121
*/
122
123
/* The resolution of the passed in fb_info about to change */
124
#define FB_EVENT_MODE_CHANGE 0x01
125
/* The display on this fb_info is beeing suspended, no access to the
126
* framebuffer is allowed any more after that call returns
127
*/
128
#define FB_EVENT_SUSPEND 0x02
129
/* The display on this fb_info was resumed, you can restore the display
130
* if you own it
131
*/
132
#define FB_EVENT_RESUME 0x03
133
/* An entry from the modelist was removed */
134
#define FB_EVENT_MODE_DELETE 0x04
135
/* A driver registered itself */
136
#define FB_EVENT_FB_REGISTERED 0x05
137
/* A driver unregistered itself */
138
#define FB_EVENT_FB_UNREGISTERED 0x06
139
/* CONSOLE-SPECIFIC: get console to framebuffer mapping */
140
#define FB_EVENT_GET_CONSOLE_MAP 0x07
141
/* CONSOLE-SPECIFIC: set console to framebuffer mapping */
142
#define FB_EVENT_SET_CONSOLE_MAP 0x08
143
/* A hardware display blank change occurred */
144
#define FB_EVENT_BLANK 0x09
145
/* Private modelist is to be replaced */
146
#define FB_EVENT_NEW_MODELIST 0x0A
147
/* The resolution of the passed in fb_info about to change and
148
all vc's should be changed */
149
#define FB_EVENT_MODE_CHANGE_ALL 0x0B
150
/* A software display blank change occurred */
151
#define FB_EVENT_CONBLANK 0x0C
152
/* Get drawing requirements */
153
#define FB_EVENT_GET_REQ 0x0D
154
/* Unbind from the console if possible */
155
#define FB_EVENT_FB_UNBIND 0x0E
156
/* CONSOLE-SPECIFIC: remap all consoles to new fb - for vga switcheroo */
157
#define FB_EVENT_REMAP_ALL_CONSOLE 0x0F
158
/* A hardware display blank early change occured */
159
#define FB_EARLY_EVENT_BLANK 0x10
160
/* A hardware display blank revert early change occured */
161
#define FB_R_EARLY_EVENT_BLANK 0x11
162
163
struct
fb_event
{
164
struct
fb_info
*
info
;
165
void
*
data
;
166
};
167
168
struct
fb_blit_caps
{
169
u32
x
;
170
u32
y
;
171
u32
len
;
172
u32
flags
;
173
};
174
175
extern
int
fb_register_client
(
struct
notifier_block
*nb);
176
extern
int
fb_unregister_client
(
struct
notifier_block
*nb);
177
extern
int
fb_notifier_call_chain
(
unsigned
long
val
,
void
*
v
);
178
/*
179
* Pixmap structure definition
180
*
181
* The purpose of this structure is to translate data
182
* from the hardware independent format of fbdev to what
183
* format the hardware needs.
184
*/
185
186
#define FB_PIXMAP_DEFAULT 1
/* used internally by fbcon */
187
#define FB_PIXMAP_SYSTEM 2
/* memory is in system RAM */
188
#define FB_PIXMAP_IO 4
/* memory is iomapped */
189
#define FB_PIXMAP_SYNC 256
/* set if GPU can DMA */
190
191
struct
fb_pixmap
{
192
u8
*
addr
;
/* pointer to memory */
193
u32
size
;
/* size of buffer in bytes */
194
u32
offset
;
/* current offset to buffer */
195
u32
buf_align
;
/* byte alignment of each bitmap */
196
u32
scan_align
;
/* alignment per scanline */
197
u32
access_align
;
/* alignment per read/write (bits) */
198
u32
flags
;
/* see FB_PIXMAP_* */
199
u32
blit_x
;
/* supported bit block dimensions (1-32)*/
200
u32
blit_y
;
/* Format: blit_x = 1 << (width - 1) */
201
/* blit_y = 1 << (height - 1) */
202
/* if 0, will be set to 0xffffffff (all)*/
203
/* access methods */
204
void
(*
writeio
)(
struct
fb_info
*
info
,
void
__iomem
*
dst
,
void
*
src
,
unsigned
int
size
);
205
void
(*
readio
) (
struct
fb_info
*
info
,
void
*
dst
,
void
__iomem
*
src
,
unsigned
int
size
);
206
};
207
208
#ifdef CONFIG_FB_DEFERRED_IO
209
struct
fb_deferred_io {
210
/* delay between mkwrite and deferred handler */
211
unsigned
long
delay
;
212
struct
mutex
lock;
/* mutex that protects the page list */
213
struct
list_head
pagelist;
/* list of touched pages */
214
/* callback */
215
void
(*first_io)(
struct
fb_info
*
info
);
216
void
(*deferred_io)(
struct
fb_info
*
info
,
struct
list_head
*pagelist);
217
};
218
#endif
219
220
/*
221
* Frame buffer operations
222
*
223
* LOCKING NOTE: those functions must _ALL_ be called with the console
224
* semaphore held, this is the only suitable locking mechanism we have
225
* in 2.6. Some may be called at interrupt time at this point though.
226
*
227
* The exception to this is the debug related hooks. Putting the fb
228
* into a debug state (e.g. flipping to the kernel console) and restoring
229
* it must be done in a lock-free manner, so low level drivers should
230
* keep track of the initial console (if applicable) and may need to
231
* perform direct, unlocked hardware writes in these hooks.
232
*/
233
234
struct
fb_ops
{
235
/* open/release and usage marking */
236
struct
module
*
owner
;
237
int
(*
fb_open
)(
struct
fb_info
*
info
,
int
user
);
238
int
(*
fb_release
)(
struct
fb_info
*
info
,
int
user
);
239
240
/* For framebuffers with strange non linear layouts or that do not
241
* work with normal memory mapped access
242
*/
243
ssize_t
(*
fb_read
)(
struct
fb_info
*
info
,
char
__user
*
buf
,
244
size_t
count
, loff_t *ppos);
245
ssize_t
(*
fb_write
)(
struct
fb_info
*
info
,
const
char
__user
*
buf
,
246
size_t
count
, loff_t *ppos);
247
248
/* checks var and eventually tweaks it to something supported,
249
* DO NOT MODIFY PAR */
250
int
(*
fb_check_var
)(
struct
fb_var_screeninfo
*var,
struct
fb_info
*
info
);
251
252
/* set the video mode according to info->var */
253
int
(*
fb_set_par
)(
struct
fb_info
*
info
);
254
255
/* set color register */
256
int
(*
fb_setcolreg
)(
unsigned
regno,
unsigned
red
,
unsigned
green
,
257
unsigned
blue
,
unsigned
transp
,
struct
fb_info
*
info
);
258
259
/* set color registers in batch */
260
int
(*
fb_setcmap
)(
struct
fb_cmap
*cmap,
struct
fb_info
*
info
);
261
262
/* blank display */
263
int
(*
fb_blank
)(
int
blank,
struct
fb_info
*
info
);
264
265
/* pan display */
266
int
(*
fb_pan_display
)(
struct
fb_var_screeninfo
*var,
struct
fb_info
*
info
);
267
268
/* Draws a rectangle */
269
void
(*
fb_fillrect
) (
struct
fb_info
*
info
,
const
struct
fb_fillrect
*rect);
270
/* Copy data from area to another */
271
void
(*
fb_copyarea
) (
struct
fb_info
*
info
,
const
struct
fb_copyarea
*
region
);
272
/* Draws a image to the display */
273
void
(*
fb_imageblit
) (
struct
fb_info
*
info
,
const
struct
fb_image
*
image
);
274
275
/* Draws cursor */
276
int
(*
fb_cursor
) (
struct
fb_info
*
info
,
struct
fb_cursor
*cursor);
277
278
/* Rotates the display */
279
void
(*
fb_rotate
)(
struct
fb_info
*
info
,
int
angle
);
280
281
/* wait for blit idle, optional */
282
int
(*
fb_sync
)(
struct
fb_info
*
info
);
283
284
/* perform fb specific ioctl (optional) */
285
int
(*
fb_ioctl
)(
struct
fb_info
*
info
,
unsigned
int
cmd
,
286
unsigned
long
arg
);
287
288
/* Handle 32bit compat ioctl (optional) */
289
int
(*
fb_compat_ioctl
)(
struct
fb_info
*
info
,
unsigned
cmd
,
290
unsigned
long
arg
);
291
292
/* perform fb specific mmap */
293
int
(*
fb_mmap
)(
struct
fb_info
*
info
,
struct
vm_area_struct
*vma);
294
295
/* get capability given var */
296
void
(*
fb_get_caps
)(
struct
fb_info
*
info
,
struct
fb_blit_caps
*
caps
,
297
struct
fb_var_screeninfo
*var);
298
299
/* teardown any resources to do with this framebuffer */
300
void
(*
fb_destroy
)(
struct
fb_info
*
info
);
301
302
/* called at KDB enter and leave time to prepare the console */
303
int
(*
fb_debug_enter
)(
struct
fb_info
*
info
);
304
int
(*
fb_debug_leave
)(
struct
fb_info
*
info
);
305
};
306
307
#ifdef CONFIG_FB_TILEBLITTING
308
#define FB_TILE_CURSOR_NONE 0
309
#define FB_TILE_CURSOR_UNDERLINE 1
310
#define FB_TILE_CURSOR_LOWER_THIRD 2
311
#define FB_TILE_CURSOR_LOWER_HALF 3
312
#define FB_TILE_CURSOR_TWO_THIRDS 4
313
#define FB_TILE_CURSOR_BLOCK 5
314
315
struct
fb_tilemap {
316
__u32
width
;
/* width of each tile in pixels */
317
__u32
height
;
/* height of each tile in scanlines */
318
__u32
depth
;
/* color depth of each tile */
319
__u32
length
;
/* number of tiles in the map */
320
const
__u8
*
data
;
/* actual tile map: a bitmap array, packed
321
to the nearest byte */
322
};
323
324
struct
fb_tilerect {
325
__u32
sx
;
/* origin in the x-axis */
326
__u32
sy;
/* origin in the y-axis */
327
__u32
width
;
/* number of tiles in the x-axis */
328
__u32
height
;
/* number of tiles in the y-axis */
329
__u32
index
;
/* what tile to use: index to tile map */
330
__u32
fg;
/* foreground color */
331
__u32
bg
;
/* background color */
332
__u32
rop;
/* raster operation */
333
};
334
335
struct
fb_tilearea {
336
__u32
sx
;
/* source origin in the x-axis */
337
__u32
sy;
/* source origin in the y-axis */
338
__u32
dx;
/* destination origin in the x-axis */
339
__u32
dy;
/* destination origin in the y-axis */
340
__u32
width
;
/* number of tiles in the x-axis */
341
__u32
height
;
/* number of tiles in the y-axis */
342
};
343
344
struct
fb_tileblit {
345
__u32
sx
;
/* origin in the x-axis */
346
__u32
sy;
/* origin in the y-axis */
347
__u32
width
;
/* number of tiles in the x-axis */
348
__u32
height
;
/* number of tiles in the y-axis */
349
__u32
fg;
/* foreground color */
350
__u32
bg
;
/* background color */
351
__u32
length
;
/* number of tiles to draw */
352
__u32
*indices;
/* array of indices to tile map */
353
};
354
355
struct
fb_tilecursor {
356
__u32
sx
;
/* cursor position in the x-axis */
357
__u32
sy;
/* cursor position in the y-axis */
358
__u32
mode
;
/* 0 = erase, 1 = draw */
359
__u32
shape;
/* see FB_TILE_CURSOR_* */
360
__u32
fg;
/* foreground color */
361
__u32
bg
;
/* background color */
362
};
363
364
struct
fb_tile_ops {
365
/* set tile characteristics */
366
void
(*fb_settile)(
struct
fb_info
*
info
,
struct
fb_tilemap *
map
);
367
368
/* all dimensions from hereon are in terms of tiles */
369
370
/* move a rectangular region of tiles from one area to another*/
371
void
(*fb_tilecopy)(
struct
fb_info
*
info
,
struct
fb_tilearea *area);
372
/* fill a rectangular region with a tile */
373
void
(*fb_tilefill)(
struct
fb_info
*
info
,
struct
fb_tilerect *rect);
374
/* copy an array of tiles */
375
void
(*fb_tileblit)(
struct
fb_info
*
info
,
struct
fb_tileblit *blit);
376
/* cursor */
377
void
(*fb_tilecursor)(
struct
fb_info
*
info
,
378
struct
fb_tilecursor *cursor);
379
/* get maximum length of the tile map */
380
int
(*fb_get_tilemax)(
struct
fb_info
*
info
);
381
};
382
#endif
/* CONFIG_FB_TILEBLITTING */
383
384
/* FBINFO_* = fb_info.flags bit flags */
385
#define FBINFO_MODULE 0x0001
/* Low-level driver is a module */
386
#define FBINFO_HWACCEL_DISABLED 0x0002
387
/* When FBINFO_HWACCEL_DISABLED is set:
388
* Hardware acceleration is turned off. Software implementations
389
* of required functions (copyarea(), fillrect(), and imageblit())
390
* takes over; acceleration engine should be in a quiescent state */
391
392
/* hints */
393
#define FBINFO_VIRTFB 0x0004
/* FB is System RAM, not device. */
394
#define FBINFO_PARTIAL_PAN_OK 0x0040
/* otw use pan only for double-buffering */
395
#define FBINFO_READS_FAST 0x0080
/* soft-copy faster than rendering */
396
397
/* hardware supported ops */
398
/* semantics: when a bit is set, it indicates that the operation is
399
* accelerated by hardware.
400
* required functions will still work even if the bit is not set.
401
* optional functions may not even exist if the flag bit is not set.
402
*/
403
#define FBINFO_HWACCEL_NONE 0x0000
404
#define FBINFO_HWACCEL_COPYAREA 0x0100
/* required */
405
#define FBINFO_HWACCEL_FILLRECT 0x0200
/* required */
406
#define FBINFO_HWACCEL_IMAGEBLIT 0x0400
/* required */
407
#define FBINFO_HWACCEL_ROTATE 0x0800
/* optional */
408
#define FBINFO_HWACCEL_XPAN 0x1000
/* optional */
409
#define FBINFO_HWACCEL_YPAN 0x2000
/* optional */
410
#define FBINFO_HWACCEL_YWRAP 0x4000
/* optional */
411
412
#define FBINFO_MISC_USEREVENT 0x10000
/* event request
413
from userspace */
414
#define FBINFO_MISC_TILEBLITTING 0x20000
/* use tile blitting */
415
416
/* A driver may set this flag to indicate that it does want a set_par to be
417
* called every time when fbcon_switch is executed. The advantage is that with
418
* this flag set you can really be sure that set_par is always called before
419
* any of the functions dependent on the correct hardware state or altering
420
* that state, even if you are using some broken X releases. The disadvantage
421
* is that it introduces unwanted delays to every console switch if set_par
422
* is slow. It is a good idea to try this flag in the drivers initialization
423
* code whenever there is a bug report related to switching between X and the
424
* framebuffer console.
425
*/
426
#define FBINFO_MISC_ALWAYS_SETPAR 0x40000
427
428
/* where the fb is a firmware driver, and can be replaced with a proper one */
429
#define FBINFO_MISC_FIRMWARE 0x80000
430
/*
431
* Host and GPU endianness differ.
432
*/
433
#define FBINFO_FOREIGN_ENDIAN 0x100000
434
/*
435
* Big endian math. This is the same flags as above, but with different
436
* meaning, it is set by the fb subsystem depending FOREIGN_ENDIAN flag
437
* and host endianness. Drivers should not use this flag.
438
*/
439
#define FBINFO_BE_MATH 0x100000
440
441
/* report to the VT layer that this fb driver can accept forced console
442
output like oopses */
443
#define FBINFO_CAN_FORCE_OUTPUT 0x200000
444
445
struct
fb_info
{
446
atomic_t
count
;
447
int
node
;
448
int
flags
;
449
struct
mutex
lock
;
/* Lock for open/release/ioctl funcs */
450
struct
mutex
mm_lock
;
/* Lock for fb_mmap and smem_* fields */
451
struct
fb_var_screeninfo
var
;
/* Current var */
452
struct
fb_fix_screeninfo
fix
;
/* Current fix */
453
struct
fb_monspecs
monspecs
;
/* Current Monitor specs */
454
struct
work_struct
queue
;
/* Framebuffer event queue */
455
struct
fb_pixmap
pixmap
;
/* Image hardware mapper */
456
struct
fb_pixmap
sprite
;
/* Cursor hardware mapper */
457
struct
fb_cmap
cmap
;
/* Current cmap */
458
struct
list_head
modelist
;
/* mode list */
459
struct
fb_videomode
*
mode
;
/* current mode */
460
461
#ifdef CONFIG_FB_BACKLIGHT
462
/* assigned backlight device */
463
/* set before framebuffer registration,
464
remove after unregister */
465
struct
backlight_device
*bl_dev;
466
467
/* Backlight level curve */
468
struct
mutex
bl_curve_mutex;
469
u8
bl_curve[FB_BACKLIGHT_LEVELS];
470
#endif
471
#ifdef CONFIG_FB_DEFERRED_IO
472
struct
delayed_work
deferred_work;
473
struct
fb_deferred_io *fbdefio;
474
#endif
475
476
struct
fb_ops
*
fbops
;
477
struct
device
*
device
;
/* This is the parent */
478
struct
device
*
dev
;
/* This is this fb device */
479
int
class_flag
;
/* private sysfs flags */
480
#ifdef CONFIG_FB_TILEBLITTING
481
struct
fb_tile_ops *tileops;
/* Tile Blitting */
482
#endif
483
char
__iomem
*
screen_base
;
/* Virtual address */
484
unsigned
long
screen_size
;
/* Amount of ioremapped VRAM or 0 */
485
void
*
pseudo_palette
;
/* Fake palette of 16 colors */
486
#define FBINFO_STATE_RUNNING 0
487
#define FBINFO_STATE_SUSPENDED 1
488
u32
state
;
/* Hardware state i.e suspend */
489
void
*
fbcon_par
;
/* fbcon use-only private area */
490
/* From here on everything is device dependent */
491
void
*
par
;
492
/* we need the PCI or similar aperture base/size not
493
smem_start/size as smem_start may just be an object
494
allocated inside the aperture so may not actually overlap */
495
struct
apertures_struct
{
496
unsigned
int
count
;
497
struct
aperture
{
498
resource_size_t
base
;
499
resource_size_t
size
;
500
}
ranges
[0];
501
} *
apertures
;
502
};
503
504
static
inline
struct
apertures_struct *alloc_apertures(
unsigned
int
max_num) {
505
struct
apertures_struct *
a
= kzalloc(
sizeof
(
struct
apertures_struct)
506
+ max_num *
sizeof
(
struct
aperture),
GFP_KERNEL
);
507
if
(!a)
508
return
NULL
;
509
a->count = max_num;
510
return
a
;
511
}
512
513
#ifdef MODULE
514
#define FBINFO_DEFAULT FBINFO_MODULE
515
#else
516
#define FBINFO_DEFAULT 0
517
#endif
518
519
// This will go away
520
#define FBINFO_FLAG_MODULE FBINFO_MODULE
521
#define FBINFO_FLAG_DEFAULT FBINFO_DEFAULT
522
523
/* This will go away
524
* fbset currently hacks in FB_ACCELF_TEXT into var.accel_flags
525
* when it wants to turn the acceleration engine on. This is
526
* really a separate operation, and should be modified via sysfs.
527
* But for now, we leave it broken with the following define
528
*/
529
#define STUPID_ACCELF_TEXT_SHIT
530
531
// This will go away
532
#if defined(__sparc__)
533
534
/* We map all of our framebuffers such that big-endian accesses
535
* are what we want, so the following is sufficient.
536
*/
537
538
// This will go away
539
#define fb_readb sbus_readb
540
#define fb_readw sbus_readw
541
#define fb_readl sbus_readl
542
#define fb_readq sbus_readq
543
#define fb_writeb sbus_writeb
544
#define fb_writew sbus_writew
545
#define fb_writel sbus_writel
546
#define fb_writeq sbus_writeq
547
#define fb_memset sbus_memset_io
548
#define fb_memcpy_fromfb sbus_memcpy_fromio
549
#define fb_memcpy_tofb sbus_memcpy_toio
550
551
#elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || defined(__sh__) || defined(__powerpc__) || defined(__avr32__) || defined(__bfin__)
552
553
#define fb_readb __raw_readb
554
#define fb_readw __raw_readw
555
#define fb_readl __raw_readl
556
#define fb_readq __raw_readq
557
#define fb_writeb __raw_writeb
558
#define fb_writew __raw_writew
559
#define fb_writel __raw_writel
560
#define fb_writeq __raw_writeq
561
#define fb_memset memset_io
562
#define fb_memcpy_fromfb memcpy_fromio
563
#define fb_memcpy_tofb memcpy_toio
564
565
#else
566
567
#define fb_readb(addr) (*(volatile u8 *) (addr))
568
#define fb_readw(addr) (*(volatile u16 *) (addr))
569
#define fb_readl(addr) (*(volatile u32 *) (addr))
570
#define fb_readq(addr) (*(volatile u64 *) (addr))
571
#define fb_writeb(b,addr) (*(volatile u8 *) (addr) = (b))
572
#define fb_writew(b,addr) (*(volatile u16 *) (addr) = (b))
573
#define fb_writel(b,addr) (*(volatile u32 *) (addr) = (b))
574
#define fb_writeq(b,addr) (*(volatile u64 *) (addr) = (b))
575
#define fb_memset memset
576
#define fb_memcpy_fromfb memcpy
577
#define fb_memcpy_tofb memcpy
578
579
#endif
580
581
#define FB_LEFT_POS(p, bpp) (fb_be_math(p) ? (32 - (bpp)) : 0)
582
#define FB_SHIFT_HIGH(p, val, bits) (fb_be_math(p) ? (val) >> (bits) : \
583
(val) << (bits))
584
#define FB_SHIFT_LOW(p, val, bits) (fb_be_math(p) ? (val) << (bits) : \
585
(val) >> (bits))
586
587
/*
588
* `Generic' versions of the frame buffer device operations
589
*/
590
591
extern
int
fb_set_var
(
struct
fb_info
*
info
,
struct
fb_var_screeninfo
*var);
592
extern
int
fb_pan_display
(
struct
fb_info
*
info
,
struct
fb_var_screeninfo
*var);
593
extern
int
fb_blank
(
struct
fb_info
*
info
,
int
blank);
594
extern
void
cfb_fillrect
(
struct
fb_info
*
info
,
const
struct
fb_fillrect
*rect);
595
extern
void
cfb_copyarea
(
struct
fb_info
*
info
,
const
struct
fb_copyarea
*area);
596
extern
void
cfb_imageblit
(
struct
fb_info
*
info
,
const
struct
fb_image
*
image
);
597
/*
598
* Drawing operations where framebuffer is in system RAM
599
*/
600
extern
void
sys_fillrect
(
struct
fb_info
*
info
,
const
struct
fb_fillrect
*rect);
601
extern
void
sys_copyarea
(
struct
fb_info
*
info
,
const
struct
fb_copyarea
*area);
602
extern
void
sys_imageblit
(
struct
fb_info
*
info
,
const
struct
fb_image
*
image
);
603
extern
ssize_t
fb_sys_read
(
struct
fb_info
*
info
,
char
__user *
buf
,
604
size_t
count
, loff_t *ppos);
605
extern
ssize_t
fb_sys_write
(
struct
fb_info
*
info
,
const
char
__user *
buf
,
606
size_t
count
, loff_t *ppos);
607
608
/* drivers/video/fbmem.c */
609
extern
int
register_framebuffer
(
struct
fb_info
*
fb_info
);
610
extern
int
unregister_framebuffer
(
struct
fb_info
*
fb_info
);
611
extern
int
unlink_framebuffer
(
struct
fb_info
*
fb_info
);
612
extern
void
remove_conflicting_framebuffers
(
struct
apertures_struct *
a
,
613
const
char
*
name
,
bool
primary
);
614
extern
int
fb_prepare_logo
(
struct
fb_info
*
fb_info
,
int
rotate);
615
extern
int
fb_show_logo
(
struct
fb_info
*
fb_info
,
int
rotate);
616
extern
char
*
fb_get_buffer_offset
(
struct
fb_info
*
info
,
struct
fb_pixmap
*
buf
,
u32
size
);
617
extern
void
fb_pad_unaligned_buffer
(
u8
*
dst
,
u32
d_pitch,
u8
*
src
,
u32
idx
,
618
u32
height
,
u32
shift_high,
u32
shift_low,
u32
mod
);
619
extern
void
fb_pad_aligned_buffer
(
u8
*
dst
,
u32
d_pitch,
u8
*
src
,
u32
s_pitch,
u32
height
);
620
extern
void
fb_set_suspend
(
struct
fb_info
*
info
,
int
state
);
621
extern
int
fb_get_color_depth
(
struct
fb_var_screeninfo
*var,
622
struct
fb_fix_screeninfo
*fix);
623
extern
int
fb_get_options
(
char
*
name
,
char
**
option
);
624
extern
int
fb_new_modelist
(
struct
fb_info
*
info
);
625
626
extern
struct
fb_info
*
registered_fb
[
FB_MAX
];
627
extern
int
num_registered_fb
;
628
extern
struct
class
*
fb_class
;
629
630
extern
int
lock_fb_info
(
struct
fb_info
*
info
);
631
632
static
inline
void
unlock_fb_info(
struct
fb_info
*
info
)
633
{
634
mutex_unlock
(&info->
lock
);
635
}
636
637
static
inline
void
__fb_pad_aligned_buffer(
u8
*
dst
,
u32
d_pitch,
638
u8
*
src
,
u32
s_pitch,
u32
height
)
639
{
640
int
i
,
j
;
641
642
d_pitch -= s_pitch;
643
644
for
(i = height; i--; ) {
645
/* s_pitch is a few bytes at the most, memcpy is suboptimal */
646
for
(j = 0; j < s_pitch; j++)
647
*dst++ = *src++;
648
dst += d_pitch;
649
}
650
}
651
652
/* drivers/video/fb_defio.c */
653
extern
void
fb_deferred_io_init
(
struct
fb_info
*
info
);
654
extern
void
fb_deferred_io_open
(
struct
fb_info
*
info
,
655
struct
inode
*
inode
,
656
struct
file
*
file
);
657
extern
void
fb_deferred_io_cleanup
(
struct
fb_info
*
info
);
658
extern
int
fb_deferred_io_fsync
(
struct
file
*
file
, loff_t
start
,
659
loff_t
end
,
int
datasync);
660
661
static
inline
bool
fb_be_math(
struct
fb_info
*
info
)
662
{
663
#ifdef CONFIG_FB_FOREIGN_ENDIAN
664
#if defined(CONFIG_FB_BOTH_ENDIAN)
665
return
info->
flags
&
FBINFO_BE_MATH
;
666
#elif defined(CONFIG_FB_BIG_ENDIAN)
667
return
true
;
668
#elif defined(CONFIG_FB_LITTLE_ENDIAN)
669
return
false
;
670
#endif
/* CONFIG_FB_BOTH_ENDIAN */
671
#else
672
#ifdef __BIG_ENDIAN
673
return
true
;
674
#else
675
return
false
;
676
#endif
/* __BIG_ENDIAN */
677
#endif
/* CONFIG_FB_FOREIGN_ENDIAN */
678
}
679
680
/* drivers/video/fbsysfs.c */
681
extern
struct
fb_info
*
framebuffer_alloc
(
size_t
size
,
struct
device
*
dev
);
682
extern
void
framebuffer_release
(
struct
fb_info
*
info
);
683
extern
int
fb_init_device
(
struct
fb_info
*
fb_info
);
684
extern
void
fb_cleanup_device
(
struct
fb_info
*
head
);
685
extern
void
fb_bl_default_curve
(
struct
fb_info
*
fb_info
,
u8
off,
u8
min
,
u8
max
);
686
687
/* drivers/video/fbmon.c */
688
#define FB_MAXTIMINGS 0
689
#define FB_VSYNCTIMINGS 1
690
#define FB_HSYNCTIMINGS 2
691
#define FB_DCLKTIMINGS 3
692
#define FB_IGNOREMON 0x100
693
694
#define FB_MODE_IS_UNKNOWN 0
695
#define FB_MODE_IS_DETAILED 1
696
#define FB_MODE_IS_STANDARD 2
697
#define FB_MODE_IS_VESA 4
698
#define FB_MODE_IS_CALCULATED 8
699
#define FB_MODE_IS_FIRST 16
700
#define FB_MODE_IS_FROM_VAR 32
701
702
extern
int
fbmon_dpms
(
const
struct
fb_info
*
fb_info
);
703
extern
int
fb_get_mode
(
int
flags
,
u32
val
,
struct
fb_var_screeninfo
*
var
,
704
struct
fb_info
*
info
);
705
extern
int
fb_validate_mode
(
const
struct
fb_var_screeninfo
*
var
,
706
struct
fb_info
*
info
);
707
extern
int
fb_parse_edid
(
unsigned
char
*
edid
,
struct
fb_var_screeninfo
*
var
);
708
extern
const
unsigned
char
*
fb_firmware_edid
(
struct
device
*
device
);
709
extern
void
fb_edid_to_monspecs
(
unsigned
char
*
edid
,
710
struct
fb_monspecs
*specs);
711
extern
void
fb_edid_add_monspecs
(
unsigned
char
*
edid
,
712
struct
fb_monspecs
*specs);
713
extern
void
fb_destroy_modedb
(
struct
fb_videomode
*modedb);
714
extern
int
fb_find_mode_cvt
(
struct
fb_videomode
*
mode
,
int
margins,
int
rb
);
715
extern
unsigned
char
*
fb_ddc_read
(
struct
i2c_adapter
*
adapter
);
716
717
/* drivers/video/modedb.c */
718
#define VESA_MODEDB_SIZE 34
719
extern
void
fb_var_to_videomode
(
struct
fb_videomode
*
mode
,
720
const
struct
fb_var_screeninfo
*
var
);
721
extern
void
fb_videomode_to_var
(
struct
fb_var_screeninfo
*
var
,
722
const
struct
fb_videomode
*
mode
);
723
extern
int
fb_mode_is_equal
(
const
struct
fb_videomode
*mode1,
724
const
struct
fb_videomode
*mode2);
725
extern
int
fb_add_videomode
(
const
struct
fb_videomode
*
mode
,
726
struct
list_head
*
head
);
727
extern
void
fb_delete_videomode
(
const
struct
fb_videomode
*
mode
,
728
struct
list_head
*
head
);
729
extern
const
struct
fb_videomode
*
fb_match_mode
(
const
struct
fb_var_screeninfo
*var,
730
struct
list_head
*
head
);
731
extern
const
struct
fb_videomode
*
fb_find_best_mode
(
const
struct
fb_var_screeninfo
*var,
732
struct
list_head
*
head
);
733
extern
const
struct
fb_videomode
*
fb_find_nearest_mode
(
const
struct
fb_videomode
*
mode
,
734
struct
list_head
*
head
);
735
extern
void
fb_destroy_modelist
(
struct
list_head
*
head
);
736
extern
void
fb_videomode_to_modelist
(
const
struct
fb_videomode
*modedb,
int
num,
737
struct
list_head
*
head
);
738
extern
const
struct
fb_videomode
*
fb_find_best_display
(
const
struct
fb_monspecs
*specs,
739
struct
list_head
*
head
);
740
741
/* drivers/video/fbcmap.c */
742
extern
int
fb_alloc_cmap
(
struct
fb_cmap
*cmap,
int
len,
int
transp
);
743
extern
int
fb_alloc_cmap_gfp
(
struct
fb_cmap
*cmap,
int
len,
int
transp
,
gfp_t
flags
);
744
extern
void
fb_dealloc_cmap
(
struct
fb_cmap
*cmap);
745
extern
int
fb_copy_cmap
(
const
struct
fb_cmap
*
from
,
struct
fb_cmap
*to);
746
extern
int
fb_cmap_to_user
(
const
struct
fb_cmap
*
from
,
struct
fb_cmap_user
*to);
747
extern
int
fb_set_cmap
(
struct
fb_cmap
*cmap,
struct
fb_info
*
fb_info
);
748
extern
int
fb_set_user_cmap
(
struct
fb_cmap_user
*cmap,
struct
fb_info
*
fb_info
);
749
extern
const
struct
fb_cmap
*
fb_default_cmap
(
int
len
);
750
extern
void
fb_invert_cmaps
(
void
);
751
752
struct
fb_videomode
{
753
const
char
*
name
;
/* optional */
754
u32
refresh
;
/* optional */
755
u32
xres
;
756
u32
yres
;
757
u32
pixclock
;
758
u32
left_margin
;
759
u32
right_margin
;
760
u32
upper_margin
;
761
u32
lower_margin
;
762
u32
hsync_len
;
763
u32
vsync_len
;
764
u32
sync
;
765
u32
vmode
;
766
u32
flag
;
767
};
768
769
extern
const
char
*
fb_mode_option
;
770
extern
const
struct
fb_videomode
vesa_modes
[];
771
extern
const
struct
fb_videomode
cea_modes
[64];
772
773
struct
fb_modelist
{
774
struct
list_head
list
;
775
struct
fb_videomode
mode
;
776
};
777
778
extern
int
fb_find_mode
(
struct
fb_var_screeninfo
*var,
779
struct
fb_info
*
info
,
const
char
*mode_option,
780
const
struct
fb_videomode
*db,
781
unsigned
int
dbsize,
782
const
struct
fb_videomode
*default_mode,
783
unsigned
int
default_bpp);
784
785
#endif
/* _LINUX_FB_H */
Generated on Thu Jan 10 2013 12:49:36 for Linux Kernel by
1.8.2