- Android系統級深入開發
- 韓超 梁泉
- 547字
- 2018-12-29 13:39:41
6.4 OMAP的主要設備驅動
6.4.1 顯示的驅動程序
OMAP處理器顯示方面的驅動程序,就是OMAP處理器SOC的DSS(Display Sub System,顯示子系統)的驅動程序。其顯示子系統包含一個主顯示層,兩個視頻疊加的顯示層。
顯示子系統的庫在drivers/video/omap2/omapfb/dss目錄中,主要包含了core.c, manager.c,display.c,overlay.c,dss.c,omapdss.c,dpi.c,dispc.c和venc.c等文件,這些內容構成了顯示驅動程序公用的“庫程序”。
其中core.c中定義了platform_driver的名稱為omapdss,在sys文件系統/sys/bus/platform/drivers/中包含了同名目錄。它和arch/arm/mach-omap中的board-zoom2.c中定義的platform_device相匹配。
主要的文件系統的信息包含在以下目錄中:
# ls -l /sys/devices/platform/omapdss/
其中overlay0目錄中為基本顯示層(圖形層)的信息,overlay1和overlay2目錄中分別是兩個疊加顯示層的信息。manager0和manager1中則提供了管理方面的功能。
執行以下的內容,查看sys文件系統:
/ # cat /sys/devices/platform/omapdss/overlay0/name gfx
gfx為graphics的含義,表示overlay0的名稱為圖形層。除了name以外enabled,manager, screen_width,global_alpha,input_size,output_size,position等文件都可以提供相關的信息。
文件enabled是一個可以控制的內容,可以通過如下命令分別進行關閉顯示和打開顯示的功能。
# echo "0" > /sys/devices/platform/omapdss/overlay0/enabled # echo "1" > /sys/devices/platform/omapdss/overlay0/enabled
顯示部分的frambuffer驅動程序部分主要頭文件為:include/linux/omapfb.h。其中定義額外的ioctl命令號,以及在驅動程序中使用的結構體等內容。
主顯示驅動的frambuffer驅動程序的內容是drivers/video/omap2/omapfb中的omapfb-main.c,omapfb-ioctl.c,omapfb-sysfs.c等文件。編譯將被連接在一起生成omapfb.o目標文件。這構成了標準的framebuffer驅動程序,在Android系統中其設備節點是/dev/graphics/fb0。
omapfb-main.c定義了platform_driver的名稱為omapfb,在sys文件系統/sys/bus/platform/drivers/中包含了同名目錄。這個名稱和platform_driver、arch/arm/plat-omap中的fb.c定義的platform_device相匹配。