1. 程式人生 > >linux display子系統的程式碼分層架構

linux display子系統的程式碼分層架構

在這裡插入圖片描述
這裡display子系統的是典型的驅動分層模型,上層是framebuffer的操作,涉及到的核心的結構體是struct fb_info,下層是display controller的操作,涉及到的核心的結構體是struct mxcdrv_driver

底層display controller操作

在drivers/video/fbdev/mxc/mxc_dispdrv.c檔案,通過mxc_dispdrv_register可以向dispdrv_list連結串列中不斷的新增struct mxc_dispdrv_driver,所以dispdrv_list是最關鍵的連結串列。當中間層驅動想要找到struct mxc_dispdrv_driver的時候,可以通過mxc_dispdrv_gethandle從dispdrv_list連結串列中找到對應的struct mxc_dispdrv_driver。
典型的底層驅動的實現,將與底層控制器相關的物件都加入到一個連結串列中,當外部的上層或中間層驅動想到得到這個底層控制器相關的物件的時候,可以通過相應的get函式從連結串列中獲取物件。

另外底層controller又有很多種,分別對應著MIPI DSI介面的mipi_dsi.c,對應著LVDS display bridge的ldb.c,還有lcd介面的mxc_lcdif.c,在這些底層display controller驅動中會註冊struct mxc_dispdrv_driver,他提供了底層控制器的操作方法。