162306a36Sopenharmony_ciFrame Buffer Library
262306a36Sopenharmony_ci====================
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciThe frame buffer drivers depend heavily on four data structures. These
562306a36Sopenharmony_cistructures are declared in include/linux/fb.h. They are fb_info,
662306a36Sopenharmony_cifb_var_screeninfo, fb_fix_screeninfo and fb_monospecs. The last
762306a36Sopenharmony_cithree can be made available to and from userland.
862306a36Sopenharmony_ci
962306a36Sopenharmony_cifb_info defines the current state of a particular video card. Inside
1062306a36Sopenharmony_cifb_info, there exists a fb_ops structure which is a collection of
1162306a36Sopenharmony_cineeded functions to make fbdev and fbcon work. fb_info is only visible
1262306a36Sopenharmony_cito the kernel.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cifb_var_screeninfo is used to describe the features of a video card
1562306a36Sopenharmony_cithat are user defined. With fb_var_screeninfo, things such as depth
1662306a36Sopenharmony_ciand the resolution may be defined.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciThe next structure is fb_fix_screeninfo. This defines the properties
1962306a36Sopenharmony_ciof a card that are created when a mode is set and can't be changed
2062306a36Sopenharmony_ciotherwise. A good example of this is the start of the frame buffer
2162306a36Sopenharmony_cimemory. This "locks" the address of the frame buffer memory, so that it
2262306a36Sopenharmony_cicannot be changed or moved.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciThe last structure is fb_monospecs. In the old API, there was little
2562306a36Sopenharmony_ciimportance for fb_monospecs. This allowed for forbidden things such as
2662306a36Sopenharmony_cisetting a mode of 800x600 on a fix frequency monitor. With the new API,
2762306a36Sopenharmony_cifb_monospecs prevents such things, and if used correctly, can prevent a
2862306a36Sopenharmony_cimonitor from being cooked. fb_monospecs will not be useful until
2962306a36Sopenharmony_cikernels 2.5.x.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciFrame Buffer Memory
3262306a36Sopenharmony_ci-------------------
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci.. kernel-doc:: drivers/video/fbdev/core/fbmem.c
3562306a36Sopenharmony_ci   :export:
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciFrame Buffer Colormap
3862306a36Sopenharmony_ci---------------------
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci.. kernel-doc:: drivers/video/fbdev/core/fbcmap.c
4162306a36Sopenharmony_ci   :export:
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ciFrame Buffer Video Mode Database
4462306a36Sopenharmony_ci--------------------------------
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci.. kernel-doc:: drivers/video/fbdev/core/modedb.c
4762306a36Sopenharmony_ci   :internal:
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci.. kernel-doc:: drivers/video/fbdev/core/modedb.c
5062306a36Sopenharmony_ci   :export:
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciFrame Buffer Macintosh Video Mode Database
5362306a36Sopenharmony_ci------------------------------------------
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci.. kernel-doc:: drivers/video/fbdev/macmodes.c
5662306a36Sopenharmony_ci   :export:
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciFrame Buffer Fonts
5962306a36Sopenharmony_ci------------------
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ciRefer to the file lib/fonts/fonts.c for more information.
6262306a36Sopenharmony_ci
63