18c2ecf20Sopenharmony_ciFrame Buffer Library
28c2ecf20Sopenharmony_ci====================
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ciThe frame buffer drivers depend heavily on four data structures. These
58c2ecf20Sopenharmony_cistructures are declared in include/linux/fb.h. They are fb_info,
68c2ecf20Sopenharmony_cifb_var_screeninfo, fb_fix_screeninfo and fb_monospecs. The last
78c2ecf20Sopenharmony_cithree can be made available to and from userland.
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cifb_info defines the current state of a particular video card. Inside
108c2ecf20Sopenharmony_cifb_info, there exists a fb_ops structure which is a collection of
118c2ecf20Sopenharmony_cineeded functions to make fbdev and fbcon work. fb_info is only visible
128c2ecf20Sopenharmony_cito the kernel.
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_cifb_var_screeninfo is used to describe the features of a video card
158c2ecf20Sopenharmony_cithat are user defined. With fb_var_screeninfo, things such as depth
168c2ecf20Sopenharmony_ciand the resolution may be defined.
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ciThe next structure is fb_fix_screeninfo. This defines the properties
198c2ecf20Sopenharmony_ciof a card that are created when a mode is set and can't be changed
208c2ecf20Sopenharmony_ciotherwise. A good example of this is the start of the frame buffer
218c2ecf20Sopenharmony_cimemory. This "locks" the address of the frame buffer memory, so that it
228c2ecf20Sopenharmony_cicannot be changed or moved.
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ciThe last structure is fb_monospecs. In the old API, there was little
258c2ecf20Sopenharmony_ciimportance for fb_monospecs. This allowed for forbidden things such as
268c2ecf20Sopenharmony_cisetting a mode of 800x600 on a fix frequency monitor. With the new API,
278c2ecf20Sopenharmony_cifb_monospecs prevents such things, and if used correctly, can prevent a
288c2ecf20Sopenharmony_cimonitor from being cooked. fb_monospecs will not be useful until
298c2ecf20Sopenharmony_cikernels 2.5.x.
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ciFrame Buffer Memory
328c2ecf20Sopenharmony_ci-------------------
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci.. kernel-doc:: drivers/video/fbdev/core/fbmem.c
358c2ecf20Sopenharmony_ci   :export:
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ciFrame Buffer Colormap
388c2ecf20Sopenharmony_ci---------------------
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci.. kernel-doc:: drivers/video/fbdev/core/fbcmap.c
418c2ecf20Sopenharmony_ci   :export:
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ciFrame Buffer Video Mode Database
448c2ecf20Sopenharmony_ci--------------------------------
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci.. kernel-doc:: drivers/video/fbdev/core/modedb.c
478c2ecf20Sopenharmony_ci   :internal:
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci.. kernel-doc:: drivers/video/fbdev/core/modedb.c
508c2ecf20Sopenharmony_ci   :export:
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ciFrame Buffer Macintosh Video Mode Database
538c2ecf20Sopenharmony_ci------------------------------------------
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci.. kernel-doc:: drivers/video/fbdev/macmodes.c
568c2ecf20Sopenharmony_ci   :export:
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ciFrame Buffer Fonts
598c2ecf20Sopenharmony_ci------------------
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_ciRefer to the file lib/fonts/fonts.c for more information.
628c2ecf20Sopenharmony_ci
63