diff options
author | Antonino A. Daplas <adaplas@gmail.com> | 2007-05-08 03:39:37 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 14:15:32 -0400 |
commit | 38a3dc51852d8350b156ea909c5aa8767d71b005 (patch) | |
tree | 933e9a4b7b0a0d871aaccd7d44e9224ea6c4a0b5 /include | |
parent | e15de77e74d429f14641ebe7a29ccd8aa6656f3c (diff) |
fbdev: fbcon: check if mode can handle new screen
Check if the mode can properly display the screen. This will be needed by
drivers where the capability is not constant with each mode. The function
fb_set_var() will query fbcon the requirement, then it will query the driver
(via a new hook fb_get_caps()) its capability. If the driver's capability
cannot handle fbcon's requirement, then fb_set_var() will fail.
For example, if a particular driver supports 2 modes where:
mode1 = can only display 8x16 bitmaps
mode2 = can display any bitmap
then if current mode = mode2 and current font = 12x22
fbset <mode1> /* mode1 cannot handle 12x22 */
fbset will fail
Signed-off-by: Antonino Daplas <adaplas@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/fb.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/fb.h b/include/linux/fb.h index a2f382c01cd2..dff7a728948c 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
@@ -527,12 +527,20 @@ struct fb_cursor_user { | |||
527 | #define FB_EVENT_MODE_CHANGE_ALL 0x0B | 527 | #define FB_EVENT_MODE_CHANGE_ALL 0x0B |
528 | /* A software display blank change occured */ | 528 | /* A software display blank change occured */ |
529 | #define FB_EVENT_CONBLANK 0x0C | 529 | #define FB_EVENT_CONBLANK 0x0C |
530 | /* Get drawing requirements */ | ||
531 | #define FB_EVENT_GET_REQ 0x0D | ||
530 | 532 | ||
531 | struct fb_event { | 533 | struct fb_event { |
532 | struct fb_info *info; | 534 | struct fb_info *info; |
533 | void *data; | 535 | void *data; |
534 | }; | 536 | }; |
535 | 537 | ||
538 | struct fb_blit_caps { | ||
539 | u32 x; | ||
540 | u32 y; | ||
541 | u32 len; | ||
542 | u32 flags; | ||
543 | }; | ||
536 | 544 | ||
537 | extern int fb_register_client(struct notifier_block *nb); | 545 | extern int fb_register_client(struct notifier_block *nb); |
538 | extern int fb_unregister_client(struct notifier_block *nb); | 546 | extern int fb_unregister_client(struct notifier_block *nb); |
@@ -652,6 +660,10 @@ struct fb_ops { | |||
652 | 660 | ||
653 | /* restore saved state */ | 661 | /* restore saved state */ |
654 | void (*fb_restore_state)(struct fb_info *info); | 662 | void (*fb_restore_state)(struct fb_info *info); |
663 | |||
664 | /* get capability given var */ | ||
665 | void (*fb_get_caps)(struct fb_info *info, struct fb_blit_caps *caps, | ||
666 | struct fb_var_screeninfo *var); | ||
655 | }; | 667 | }; |
656 | 668 | ||
657 | #ifdef CONFIG_FB_TILEBLITTING | 669 | #ifdef CONFIG_FB_TILEBLITTING |