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
18struct vm_area_struct;
19struct fb_info;
20struct device;
21struct file;
22struct videomode;
23struct device_node;
24
25
26#define FB_DPMS_ACTIVE_OFF 1
27#define FB_DPMS_SUSPEND 2
28#define FB_DPMS_STANDBY 4
29
30#define FB_DISP_DDI 1
31#define FB_DISP_ANA_700_300 2
32#define FB_DISP_ANA_714_286 4
33#define FB_DISP_ANA_1000_400 8
34#define FB_DISP_ANA_700_000 16
35
36#define FB_DISP_MONO 32
37#define FB_DISP_RGB 64
38#define FB_DISP_MULTI 128
39#define FB_DISP_UNKNOWN 256
40
41#define FB_SIGNAL_NONE 0
42#define FB_SIGNAL_BLANK_BLANK 1
43#define FB_SIGNAL_SEPARATE 2
44#define FB_SIGNAL_COMPOSITE 4
45#define FB_SIGNAL_SYNC_ON_GREEN 8
46#define FB_SIGNAL_SERRATION_ON 16
47
48#define FB_MISC_PRIM_COLOR 1
49#define FB_MISC_1ST_DETAIL 2
50#define FB_MISC_HDMI 4
51struct fb_chroma {
52 __u32 redx;
53 __u32 greenx;
54 __u32 bluex;
55 __u32 whitex;
56 __u32 redy;
57 __u32 greeny;
58 __u32 bluey;
59 __u32 whitey;
60};
61
62struct fb_monspecs {
63 struct fb_chroma chroma;
64 struct fb_videomode *modedb;
65 __u8 manufacturer[4];
66 __u8 monitor[14];
67 __u8 serial_no[14];
68 __u8 ascii[14];
69 __u32 modedb_len;
70 __u32 model;
71 __u32 serial;
72 __u32 year;
73 __u32 week;
74 __u32 hfmin;
75 __u32 hfmax;
76 __u32 dclkmin;
77 __u32 dclkmax;
78 __u16 input;
79 __u16 dpms;
80 __u16 signal;
81 __u16 vfmin;
82 __u16 vfmax;
83 __u16 gamma;
84 __u16 gtf : 1;
85 __u16 misc;
86 __u8 version;
87 __u8 revision;
88 __u8 max_x;
89 __u8 max_y;
90};
91
92struct fb_cmap_user {
93 __u32 start;
94 __u32 len;
95 __u16 __user *red;
96 __u16 __user *green;
97 __u16 __user *blue;
98 __u16 __user *transp;
99};
100
101struct fb_image_user {
102 __u32 dx;
103 __u32 dy;
104 __u32 width;
105 __u32 height;
106 __u32 fg_color;
107 __u32 bg_color;
108 __u8 depth;
109 const char __user *data;
110 struct fb_cmap_user cmap;
111};
112
113struct fb_cursor_user {
114 __u16 set;
115 __u16 enable;
116 __u16 rop;
117 const char __user *mask;
118 struct fbcurpos hot;
119 struct fb_image_user image;
120};
121
122
123
124
125
126
127#define FB_EVENT_MODE_CHANGE 0x01
128
129
130
131#define FB_EVENT_SUSPEND 0x02
132
133
134
135#define FB_EVENT_RESUME 0x03
136
137#define FB_EVENT_MODE_DELETE 0x04
138
139#define FB_EVENT_FB_REGISTERED 0x05
140
141#define FB_EVENT_FB_UNREGISTERED 0x06
142
143#define FB_EVENT_GET_CONSOLE_MAP 0x07
144
145#define FB_EVENT_SET_CONSOLE_MAP 0x08
146
147#define FB_EVENT_BLANK 0x09
148
149#define FB_EVENT_NEW_MODELIST 0x0A
150
151
152#define FB_EVENT_MODE_CHANGE_ALL 0x0B
153
154#define FB_EVENT_CONBLANK 0x0C
155
156#define FB_EVENT_GET_REQ 0x0D
157
158#define FB_EVENT_FB_UNBIND 0x0E
159
160#define FB_EVENT_REMAP_ALL_CONSOLE 0x0F
161
162#define FB_EARLY_EVENT_BLANK 0x10
163
164#define FB_R_EARLY_EVENT_BLANK 0x11
165
166struct fb_event {
167 struct fb_info *info;
168 void *data;
169};
170
171struct fb_blit_caps {
172 u32 x;
173 u32 y;
174 u32 len;
175 u32 flags;
176};
177
178#ifdef CONFIG_FB_NOTIFY
179extern int fb_register_client(struct notifier_block *nb);
180extern int fb_unregister_client(struct notifier_block *nb);
181extern int fb_notifier_call_chain(unsigned long val, void *v);
182#else
183static inline int fb_register_client(struct notifier_block *nb)
184{
185 return 0;
186};
187
188static inline int fb_unregister_client(struct notifier_block *nb)
189{
190 return 0;
191};
192
193static inline int fb_notifier_call_chain(unsigned long val, void *v)
194{
195 return 0;
196};
197#endif
198
199
200
201
202
203
204
205
206
207#define FB_PIXMAP_DEFAULT 1
208#define FB_PIXMAP_SYSTEM 2
209#define FB_PIXMAP_IO 4
210#define FB_PIXMAP_SYNC 256
211
212struct fb_pixmap {
213 u8 *addr;
214 u32 size;
215 u32 offset;
216 u32 buf_align;
217 u32 scan_align;
218 u32 access_align;
219 u32 flags;
220 u32 blit_x;
221 u32 blit_y;
222
223
224
225 void (*writeio)(struct fb_info *info, void __iomem *dst, void *src, unsigned int size);
226 void (*readio) (struct fb_info *info, void *dst, void __iomem *src, unsigned int size);
227};
228
229#ifdef CONFIG_FB_DEFERRED_IO
230struct fb_deferred_io {
231
232 unsigned long delay;
233 struct mutex lock;
234 struct list_head pagelist;
235
236 void (*first_io)(struct fb_info *info);
237 void (*deferred_io)(struct fb_info *info, struct list_head *pagelist);
238};
239#endif
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255struct fb_ops {
256
257 struct module *owner;
258 int (*fb_open)(struct fb_info *info, int user);
259 int (*fb_release)(struct fb_info *info, int user);
260
261
262
263
264 ssize_t (*fb_read)(struct fb_info *info, char __user *buf,
265 size_t count, loff_t *ppos);
266 ssize_t (*fb_write)(struct fb_info *info, const char __user *buf,
267 size_t count, loff_t *ppos);
268
269
270
271 int (*fb_check_var)(struct fb_var_screeninfo *var, struct fb_info *info);
272
273
274 int (*fb_set_par)(struct fb_info *info);
275
276
277 int (*fb_setcolreg)(unsigned regno, unsigned red, unsigned green,
278 unsigned blue, unsigned transp, struct fb_info *info);
279
280
281 int (*fb_setcmap)(struct fb_cmap *cmap, struct fb_info *info);
282
283
284 int (*fb_blank)(int blank, struct fb_info *info);
285
286
287 int (*fb_pan_display)(struct fb_var_screeninfo *var, struct fb_info *info);
288
289
290 void (*fb_fillrect) (struct fb_info *info, const struct fb_fillrect *rect);
291
292 void (*fb_copyarea) (struct fb_info *info, const struct fb_copyarea *region);
293
294 void (*fb_imageblit) (struct fb_info *info, const struct fb_image *image);
295
296
297 int (*fb_cursor) (struct fb_info *info, struct fb_cursor *cursor);
298
299
300 int (*fb_sync)(struct fb_info *info);
301
302
303 int (*fb_ioctl)(struct fb_info *info, unsigned int cmd,
304 unsigned long arg);
305
306
307 int (*fb_compat_ioctl)(struct fb_info *info, unsigned cmd,
308 unsigned long arg);
309
310
311 int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma);
312
313
314 void (*fb_get_caps)(struct fb_info *info, struct fb_blit_caps *caps,
315 struct fb_var_screeninfo *var);
316
317
318 void (*fb_destroy)(struct fb_info *info);
319
320
321 int (*fb_debug_enter)(struct fb_info *info);
322 int (*fb_debug_leave)(struct fb_info *info);
323};
324
325#ifdef CONFIG_FB_TILEBLITTING
326#define FB_TILE_CURSOR_NONE 0
327#define FB_TILE_CURSOR_UNDERLINE 1
328#define FB_TILE_CURSOR_LOWER_THIRD 2
329#define FB_TILE_CURSOR_LOWER_HALF 3
330#define FB_TILE_CURSOR_TWO_THIRDS 4
331#define FB_TILE_CURSOR_BLOCK 5
332
333struct fb_tilemap {
334 __u32 width;
335 __u32 height;
336 __u32 depth;
337 __u32 length;
338 const __u8 *data;
339
340};
341
342struct fb_tilerect {
343 __u32 sx;
344 __u32 sy;
345 __u32 width;
346 __u32 height;
347 __u32 index;
348 __u32 fg;
349 __u32 bg;
350 __u32 rop;
351};
352
353struct fb_tilearea {
354 __u32 sx;
355 __u32 sy;
356 __u32 dx;
357 __u32 dy;
358 __u32 width;
359 __u32 height;
360};
361
362struct fb_tileblit {
363 __u32 sx;
364 __u32 sy;
365 __u32 width;
366 __u32 height;
367 __u32 fg;
368 __u32 bg;
369 __u32 length;
370 __u32 *indices;
371};
372
373struct fb_tilecursor {
374 __u32 sx;
375 __u32 sy;
376 __u32 mode;
377 __u32 shape;
378 __u32 fg;
379 __u32 bg;
380};
381
382struct fb_tile_ops {
383
384 void (*fb_settile)(struct fb_info *info, struct fb_tilemap *map);
385
386
387
388
389 void (*fb_tilecopy)(struct fb_info *info, struct fb_tilearea *area);
390
391 void (*fb_tilefill)(struct fb_info *info, struct fb_tilerect *rect);
392
393 void (*fb_tileblit)(struct fb_info *info, struct fb_tileblit *blit);
394
395 void (*fb_tilecursor)(struct fb_info *info,
396 struct fb_tilecursor *cursor);
397
398 int (*fb_get_tilemax)(struct fb_info *info);
399};
400#endif
401
402
403#define FBINFO_MODULE 0x0001
404#define FBINFO_HWACCEL_DISABLED 0x0002
405
406
407
408
409
410
411#define FBINFO_VIRTFB 0x0004
412#define FBINFO_PARTIAL_PAN_OK 0x0040
413#define FBINFO_READS_FAST 0x0080
414
415
416
417
418
419
420
421#define FBINFO_HWACCEL_NONE 0x0000
422#define FBINFO_HWACCEL_COPYAREA 0x0100
423#define FBINFO_HWACCEL_FILLRECT 0x0200
424#define FBINFO_HWACCEL_IMAGEBLIT 0x0400
425#define FBINFO_HWACCEL_ROTATE 0x0800
426#define FBINFO_HWACCEL_XPAN 0x1000
427#define FBINFO_HWACCEL_YPAN 0x2000
428#define FBINFO_HWACCEL_YWRAP 0x4000
429
430#define FBINFO_MISC_USEREVENT 0x10000
431
432#define FBINFO_MISC_TILEBLITTING 0x20000
433
434
435
436
437
438
439
440
441
442
443
444#define FBINFO_MISC_ALWAYS_SETPAR 0x40000
445
446
447#define FBINFO_MISC_FIRMWARE 0x80000
448
449
450
451#define FBINFO_FOREIGN_ENDIAN 0x100000
452
453
454
455
456
457#define FBINFO_BE_MATH 0x100000
458
459
460
461#define FBINFO_CAN_FORCE_OUTPUT 0x200000
462
463struct fb_info {
464 atomic_t count;
465 int node;
466 int flags;
467 struct mutex lock;
468 struct mutex mm_lock;
469 struct fb_var_screeninfo var;
470 struct fb_fix_screeninfo fix;
471 struct fb_monspecs monspecs;
472 struct work_struct queue;
473 struct fb_pixmap pixmap;
474 struct fb_pixmap sprite;
475 struct fb_cmap cmap;
476 struct list_head modelist;
477 struct fb_videomode *mode;
478
479#ifdef CONFIG_FB_BACKLIGHT
480
481
482
483 struct backlight_device *bl_dev;
484
485
486 struct mutex bl_curve_mutex;
487 u8 bl_curve[FB_BACKLIGHT_LEVELS];
488#endif
489#ifdef CONFIG_FB_DEFERRED_IO
490 struct delayed_work deferred_work;
491 struct fb_deferred_io *fbdefio;
492#endif
493
494 struct fb_ops *fbops;
495 struct device *device;
496 struct device *dev;
497 int class_flag;
498#ifdef CONFIG_FB_TILEBLITTING
499 struct fb_tile_ops *tileops;
500#endif
501 union {
502 char __iomem *screen_base;
503 char *screen_buffer;
504 };
505 unsigned long screen_size;
506 void *pseudo_palette;
507#define FBINFO_STATE_RUNNING 0
508#define FBINFO_STATE_SUSPENDED 1
509 u32 state;
510 void *fbcon_par;
511
512 void *par;
513
514
515
516 struct apertures_struct {
517 unsigned int count;
518 struct aperture {
519 resource_size_t base;
520 resource_size_t size;
521 } ranges[0];
522 } *apertures;
523
524 bool skip_vt_switch;
525};
526
527static inline struct apertures_struct *alloc_apertures(unsigned int max_num) {
528 struct apertures_struct *a = kzalloc(sizeof(struct apertures_struct)
529 + max_num * sizeof(struct aperture), GFP_KERNEL);
530 if (!a)
531 return NULL;
532 a->count = max_num;
533 return a;
534}
535
536#ifdef MODULE
537#define FBINFO_DEFAULT FBINFO_MODULE
538#else
539#define FBINFO_DEFAULT 0
540#endif
541
542
543#define FBINFO_FLAG_MODULE FBINFO_MODULE
544#define FBINFO_FLAG_DEFAULT FBINFO_DEFAULT
545
546
547
548
549
550
551
552#define STUPID_ACCELF_TEXT_SHIT
553
554
555#if defined(__sparc__)
556
557
558
559
560
561
562#define fb_readb sbus_readb
563#define fb_readw sbus_readw
564#define fb_readl sbus_readl
565#define fb_readq sbus_readq
566#define fb_writeb sbus_writeb
567#define fb_writew sbus_writew
568#define fb_writel sbus_writel
569#define fb_writeq sbus_writeq
570#define fb_memset sbus_memset_io
571#define fb_memcpy_fromfb sbus_memcpy_fromio
572#define fb_memcpy_tofb sbus_memcpy_toio
573
574#elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || defined(__sh__) || defined(__powerpc__) || defined(__avr32__) || defined(__bfin__) || defined(__arm__)
575
576#define fb_readb __raw_readb
577#define fb_readw __raw_readw
578#define fb_readl __raw_readl
579#define fb_readq __raw_readq
580#define fb_writeb __raw_writeb
581#define fb_writew __raw_writew
582#define fb_writel __raw_writel
583#define fb_writeq __raw_writeq
584#define fb_memset memset_io
585#define fb_memcpy_fromfb memcpy_fromio
586#define fb_memcpy_tofb memcpy_toio
587
588#else
589
590#define fb_readb(addr) (*(volatile u8 *) (addr))
591#define fb_readw(addr) (*(volatile u16 *) (addr))
592#define fb_readl(addr) (*(volatile u32 *) (addr))
593#define fb_readq(addr) (*(volatile u64 *) (addr))
594#define fb_writeb(b,addr) (*(volatile u8 *) (addr) = (b))
595#define fb_writew(b,addr) (*(volatile u16 *) (addr) = (b))
596#define fb_writel(b,addr) (*(volatile u32 *) (addr) = (b))
597#define fb_writeq(b,addr) (*(volatile u64 *) (addr) = (b))
598#define fb_memset memset
599#define fb_memcpy_fromfb memcpy
600#define fb_memcpy_tofb memcpy
601
602#endif
603
604#define FB_LEFT_POS(p, bpp) (fb_be_math(p) ? (32 - (bpp)) : 0)
605#define FB_SHIFT_HIGH(p, val, bits) (fb_be_math(p) ? (val) >> (bits) : \
606 (val) << (bits))
607#define FB_SHIFT_LOW(p, val, bits) (fb_be_math(p) ? (val) << (bits) : \
608 (val) >> (bits))
609
610
611
612
613
614extern int fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var);
615extern int fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var);
616extern int fb_blank(struct fb_info *info, int blank);
617extern void cfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect);
618extern void cfb_copyarea(struct fb_info *info, const struct fb_copyarea *area);
619extern void cfb_imageblit(struct fb_info *info, const struct fb_image *image);
620
621
622
623extern void sys_fillrect(struct fb_info *info, const struct fb_fillrect *rect);
624extern void sys_copyarea(struct fb_info *info, const struct fb_copyarea *area);
625extern void sys_imageblit(struct fb_info *info, const struct fb_image *image);
626extern ssize_t fb_sys_read(struct fb_info *info, char __user *buf,
627 size_t count, loff_t *ppos);
628extern ssize_t fb_sys_write(struct fb_info *info, const char __user *buf,
629 size_t count, loff_t *ppos);
630
631
632extern int register_framebuffer(struct fb_info *fb_info);
633extern int unregister_framebuffer(struct fb_info *fb_info);
634extern int unlink_framebuffer(struct fb_info *fb_info);
635extern int remove_conflicting_framebuffers(struct apertures_struct *a,
636 const char *name, bool primary);
637extern int fb_prepare_logo(struct fb_info *fb_info, int rotate);
638extern int fb_show_logo(struct fb_info *fb_info, int rotate);
639extern char* fb_get_buffer_offset(struct fb_info *info, struct fb_pixmap *buf, u32 size);
640extern void fb_pad_unaligned_buffer(u8 *dst, u32 d_pitch, u8 *src, u32 idx,
641 u32 height, u32 shift_high, u32 shift_low, u32 mod);
642extern void fb_pad_aligned_buffer(u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, u32 height);
643extern void fb_set_suspend(struct fb_info *info, int state);
644extern int fb_get_color_depth(struct fb_var_screeninfo *var,
645 struct fb_fix_screeninfo *fix);
646extern int fb_get_options(const char *name, char **option);
647extern int fb_new_modelist(struct fb_info *info);
648
649extern struct fb_info *registered_fb[FB_MAX];
650extern int num_registered_fb;
651extern struct class *fb_class;
652
653extern int lock_fb_info(struct fb_info *info);
654
655static inline void unlock_fb_info(struct fb_info *info)
656{
657 mutex_unlock(&info->lock);
658}
659
660static inline void __fb_pad_aligned_buffer(u8 *dst, u32 d_pitch,
661 u8 *src, u32 s_pitch, u32 height)
662{
663 u32 i, j;
664
665 d_pitch -= s_pitch;
666
667 for (i = height; i--; ) {
668
669 for (j = 0; j < s_pitch; j++)
670 *dst++ = *src++;
671 dst += d_pitch;
672 }
673}
674
675
676int fb_deferred_io_mmap(struct fb_info *info, struct vm_area_struct *vma);
677extern void fb_deferred_io_init(struct fb_info *info);
678extern void fb_deferred_io_open(struct fb_info *info,
679 struct inode *inode,
680 struct file *file);
681extern void fb_deferred_io_cleanup(struct fb_info *info);
682extern int fb_deferred_io_fsync(struct file *file, loff_t start,
683 loff_t end, int datasync);
684
685static inline bool fb_be_math(struct fb_info *info)
686{
687#ifdef CONFIG_FB_FOREIGN_ENDIAN
688#if defined(CONFIG_FB_BOTH_ENDIAN)
689 return info->flags & FBINFO_BE_MATH;
690#elif defined(CONFIG_FB_BIG_ENDIAN)
691 return true;
692#elif defined(CONFIG_FB_LITTLE_ENDIAN)
693 return false;
694#endif
695#else
696#ifdef __BIG_ENDIAN
697 return true;
698#else
699 return false;
700#endif
701#endif
702}
703
704
705extern struct fb_info *framebuffer_alloc(size_t size, struct device *dev);
706extern void framebuffer_release(struct fb_info *info);
707extern int fb_init_device(struct fb_info *fb_info);
708extern void fb_cleanup_device(struct fb_info *head);
709extern void fb_bl_default_curve(struct fb_info *fb_info, u8 off, u8 min, u8 max);
710
711
712#define FB_MAXTIMINGS 0
713#define FB_VSYNCTIMINGS 1
714#define FB_HSYNCTIMINGS 2
715#define FB_DCLKTIMINGS 3
716#define FB_IGNOREMON 0x100
717
718#define FB_MODE_IS_UNKNOWN 0
719#define FB_MODE_IS_DETAILED 1
720#define FB_MODE_IS_STANDARD 2
721#define FB_MODE_IS_VESA 4
722#define FB_MODE_IS_CALCULATED 8
723#define FB_MODE_IS_FIRST 16
724#define FB_MODE_IS_FROM_VAR 32
725
726extern int fbmon_dpms(const struct fb_info *fb_info);
727extern int fb_get_mode(int flags, u32 val, struct fb_var_screeninfo *var,
728 struct fb_info *info);
729extern int fb_validate_mode(const struct fb_var_screeninfo *var,
730 struct fb_info *info);
731extern int fb_parse_edid(unsigned char *edid, struct fb_var_screeninfo *var);
732extern const unsigned char *fb_firmware_edid(struct device *device);
733extern void fb_edid_to_monspecs(unsigned char *edid,
734 struct fb_monspecs *specs);
735extern void fb_edid_add_monspecs(unsigned char *edid,
736 struct fb_monspecs *specs);
737extern void fb_destroy_modedb(struct fb_videomode *modedb);
738extern int fb_find_mode_cvt(struct fb_videomode *mode, int margins, int rb);
739extern unsigned char *fb_ddc_read(struct i2c_adapter *adapter);
740
741extern int of_get_fb_videomode(struct device_node *np,
742 struct fb_videomode *fb,
743 int index);
744extern int fb_videomode_from_videomode(const struct videomode *vm,
745 struct fb_videomode *fbmode);
746
747
748#define VESA_MODEDB_SIZE 43
749#define DMT_SIZE 0x50
750
751extern void fb_var_to_videomode(struct fb_videomode *mode,
752 const struct fb_var_screeninfo *var);
753extern void fb_videomode_to_var(struct fb_var_screeninfo *var,
754 const struct fb_videomode *mode);
755extern int fb_mode_is_equal(const struct fb_videomode *mode1,
756 const struct fb_videomode *mode2);
757extern int fb_add_videomode(const struct fb_videomode *mode,
758 struct list_head *head);
759extern void fb_delete_videomode(const struct fb_videomode *mode,
760 struct list_head *head);
761extern const struct fb_videomode *fb_match_mode(const struct fb_var_screeninfo *var,
762 struct list_head *head);
763extern const struct fb_videomode *fb_find_best_mode(const struct fb_var_screeninfo *var,
764 struct list_head *head);
765extern const struct fb_videomode *fb_find_nearest_mode(const struct fb_videomode *mode,
766 struct list_head *head);
767extern void fb_destroy_modelist(struct list_head *head);
768extern void fb_videomode_to_modelist(const struct fb_videomode *modedb, int num,
769 struct list_head *head);
770extern const struct fb_videomode *fb_find_best_display(const struct fb_monspecs *specs,
771 struct list_head *head);
772
773
774extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);
775extern int fb_alloc_cmap_gfp(struct fb_cmap *cmap, int len, int transp, gfp_t flags);
776extern void fb_dealloc_cmap(struct fb_cmap *cmap);
777extern int fb_copy_cmap(const struct fb_cmap *from, struct fb_cmap *to);
778extern int fb_cmap_to_user(const struct fb_cmap *from, struct fb_cmap_user *to);
779extern int fb_set_cmap(struct fb_cmap *cmap, struct fb_info *fb_info);
780extern int fb_set_user_cmap(struct fb_cmap_user *cmap, struct fb_info *fb_info);
781extern const struct fb_cmap *fb_default_cmap(int len);
782extern void fb_invert_cmaps(void);
783
784struct fb_videomode {
785 const char *name;
786 u32 refresh;
787 u32 xres;
788 u32 yres;
789 u32 pixclock;
790 u32 left_margin;
791 u32 right_margin;
792 u32 upper_margin;
793 u32 lower_margin;
794 u32 hsync_len;
795 u32 vsync_len;
796 u32 sync;
797 u32 vmode;
798 u32 flag;
799};
800
801struct dmt_videomode {
802 u32 dmt_id;
803 u32 std_2byte_code;
804 u32 cvt_3byte_code;
805 const struct fb_videomode *mode;
806};
807
808extern const char *fb_mode_option;
809extern const struct fb_videomode vesa_modes[];
810extern const struct fb_videomode cea_modes[65];
811extern const struct dmt_videomode dmt_modes[];
812
813struct fb_modelist {
814 struct list_head list;
815 struct fb_videomode mode;
816};
817
818extern int fb_find_mode(struct fb_var_screeninfo *var,
819 struct fb_info *info, const char *mode_option,
820 const struct fb_videomode *db,
821 unsigned int dbsize,
822 const struct fb_videomode *default_mode,
823 unsigned int default_bpp);
824
825
826#define fb_err(fb_info, fmt, ...) \
827 pr_err("fb%d: " fmt, (fb_info)->node, ##__VA_ARGS__)
828#define fb_notice(info, fmt, ...) \
829 pr_notice("fb%d: " fmt, (fb_info)->node, ##__VA_ARGS__)
830#define fb_warn(fb_info, fmt, ...) \
831 pr_warn("fb%d: " fmt, (fb_info)->node, ##__VA_ARGS__)
832#define fb_info(fb_info, fmt, ...) \
833 pr_info("fb%d: " fmt, (fb_info)->node, ##__VA_ARGS__)
834#define fb_dbg(fb_info, fmt, ...) \
835 pr_debug("fb%d: " fmt, (fb_info)->node, ##__VA_ARGS__)
836
837#endif
838