7.5. 三星 S5P/Exynos4 FIMC 驅動程式¶
版權所有 © 2012 - 2013 三星電子有限公司。
三星 SoC 應用處理器中提供的 FIMC(全互動式移動攝像頭)裝置是一個整合的攝像頭主機介面、色彩空間轉換器、影像縮放器和旋轉器。它還能夠透過 SoC 內部回寫資料路徑從 LCD 控制器 (FIMD) 捕獲資料。SoC 中有多個 FIMC 例項(最多 4 個),它們的功能略有不同,例如畫素對齊約束、旋轉器可用性、LCD 回寫支援等。該驅動程式位於 drivers/media/platform/samsung/exynos4-is 目錄中。
7.5.1. 支援的 SoC¶
S5PC100(僅限記憶體到記憶體)、S5PV210、Exynos4210
7.5.2. 支援的功能¶
攝像頭並行介面捕獲 (ITU-R.BT601/565);
攝像頭序列介面捕獲 (MIPI-CSI2);
記憶體到記憶體處理(色彩空間轉換、縮放、映象和旋轉);
執行時動態管線重新配置(將任何 FIMC 例項重新連線到任何並行影片輸入或任何 MIPI-CSI 前端);
執行時 PM 和系統範圍的暫停/恢復
7.5.3. 目前不支援¶
LCD 回寫輸入
每幀時鐘門控(記憶體到記憶體)
7.5.4. 使用者空間介面¶
7.5.4.1. 媒體裝置介面¶
該驅動程式支援 第四部分 - 媒體控制器 API 中定義的媒體控制器 API。媒體裝置驅動程式名稱是“Samsung S5P FIMC”。
此介面的目的是允許在執行時更改 FIMC 例項到 SoC 外圍攝像頭輸入的分配,並可選地控制 MIPI-CSIS 裝置與 FIMC 實體之間的內部連線。
媒體裝置介面允許配置 SoC,以便透過多個 FIMC 例項捕獲來自感測器影像資料(例如,用於同時取景器和靜態捕獲設定)。
重新配置是透過啟用/停用驅動程式在初始化期間建立的媒體連結來完成的。透過媒體實體和連結列舉可以輕鬆發現內部裝置拓撲。
7.5.4.2. 記憶體到記憶體影片節點¶
/dev/video? 裝置節點處的 V4L2 記憶體到記憶體介面。這是一個獨立的影片裝置,它沒有媒體填充。但是請注意,不允許在同一個 FIMC 例項上進行記憶體到記憶體和捕獲影片節點操作。驅動程式會檢測到此類情況,但應用程式應避免它們以防止出現未定義的行為。
7.5.4.3. 捕獲影片節點¶
該驅動程式支援 介面 中定義的 V4L2 影片捕獲介面。
在捕獲和記憶體到記憶體影片節點上,僅支援多平面 API。更多詳情請參閱:單平面和多平面 API。
7.5.4.4. 攝像頭捕獲子裝置¶
每個 FIMC 例項都匯出一個子裝置節點(/dev/v4l-subdev?),並且每個可用且在平臺級別啟用的 MIPI-CSI 接收器裝置(目前最多兩個)也會建立一個子裝置節點。
7.5.4.5. sysfs¶
為了透過子裝置 API 實現更精確的攝像頭管線控制,驅動程式會建立一個與“s5p-fimc-md”平臺裝置關聯的 sysfs 條目。該條目路徑為:/sys/platform/devices/s5p-fimc-md/subdev_conf_mode。
在典型的用例中,捕獲管線配置可能如下:感測器子裝置 -> mipi-csi 子裝置 -> fimc 子裝置 -> 影片節點
當我們在使用者空間透過子裝置 API 配置這些裝置時,配置流程必須從左到右,並且影片節點是最後一個配置的。
當我們不使用子裝置使用者空間 API 時,管線中所有裝置的整個配置都在影片節點驅動程式中完成。sysfs 條目允許指示捕獲節點驅動程式不配置子裝置(格式、裁剪),以避免在影片節點執行最後配置步驟時重置子裝置的配置。
用於完整的子裝置控制支援(流式傳輸開始前在使用者空間配置子裝置)
# echo "sub-dev" > /sys/platform/devices/s5p-fimc-md/subdev_conf_mode
僅用於 V4L2 影片節點控制(由主機驅動程式內部配置子裝置)
# echo "vid-dev" > /sys/platform/devices/s5p-fimc-md/subdev_conf_mode
這是預設選項。
7.5.5. 5. 裝置到影片和子裝置節點的對映¶
每個硬體裝置例項都關聯著兩個影片裝置節點——影片捕獲和記憶體到記憶體,此外還有一個用於更精確的 FIMC 捕獲子系統控制的子裝置節點。此外,每個 MIPI-CSIS 裝置都會建立一個單獨的 v4l2 子裝置節點。
如何找出哪個 /dev/video? 或 /dev/v4l-subdev? 分配給了哪個裝置?
您可以 grep 核心日誌以查詢相關資訊,例如:
# dmesg | grep -i fimc
(請注意,如果存在 udev,它仍可能重新排列影片節點),
或者藉助 media-ctl 工具從 /dev/media? 中檢索資訊
# media-ctl -p
7.5.6. 7. 構建¶
如果驅動程式構建為可載入核心模組 (CONFIG_VIDEO_SAMSUNG_S5P_FIMC=m),則會建立兩個模組(除了核心 v4l2 模組):s5p-fimc.ko 和可選的 s5p-csis.ko (MIPI-CSI 接收器子裝置)。