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