1. 程式人生 > >[RK3288][Android6.0] 如何配置MIPI DSI Clock和PCLK

[RK3288][Android6.0] 如何配置MIPI DSI Clock和PCLK

Platform: RK3288
OS: Android 6.0
Kernel: 3.10.92


RK針對MIPI DSI的lcd配置時有兩個clock, rockchip,dsi_hs_clk 和 clock-frequency.
檔案中如下:
disp_mipi_init: mipi_dsi_init{
            compatible = "rockchip,mipi_dsi_init";
            rockchip,screen_init    = <1>;
            rockchip,dsi_lane        = <4>;
            rockchip,dsi_hs_clk        = <348>;

            rockchip,mipi_dsi_num    = <1>;
};

disp_timings: display-timings {
                native-mode = <&timing0>;
                compatible = "rockchip,display-timings";
                timing0: timing0 {
                    screen-type = <SCREEN_MIPI>;
                    lvds-format = <LVDS_8BIT_2>;
                    out-face    = <OUT_P888>;
                    clock-frequency = <58200000>;

                    hactive = <480>;
                    vactive = <1280>;
                    hback-porch = <160>;
                    hfront-porch = <160>;
                    vback-porch = <10>;
                    vfront-porch = <12>;
                    hsync-len = <24>;
                    vsync-len = <2>;
                    hsync-active = <0>;
                    vsync-active = <0>;
                    de-active = <0>;
                    pixelclk-active = <0>;
                    swap-rb = <0>;
                    swap-rg = <0>;
                    swap-gb = <0>;
            };
};

有人可能對這兩個值不太清楚如何設定,而設定出錯會引起顯示異常,這裡簡要說明下:

clock-frequency
:
即DCLK(dotc clock), PCLK(pixel clock).
clock-frequency = (h_active + hfp + hbp + h_sync) * (v_active + vfp + vbp + v_sync) * fps
廠商給的參考值是58.2MHz, 那麼fps就是:
fps = 58200000 / (480 + 160 + 160 +24) * (1280 + 12 + 10 + 2)  = 54Hz

PCLK不能太大,Android支援不超過60fps.
PCLK不能太小,小了畫面重新整理率會比較慢.

rockchip,dsi_hs_clk:
即每條MIPI data lane 傳輸速率.

dsi_hs_clk = ((h_active + hfp + hbp + h_sync) * (v_active + vfp + vbp + v_sync) * fps * bpp) / lane_number

這裡就是:
dsi_hs_clk = ((480 + 160 + 160 +24) * (1280 + 12 + 10 + 2) * 54 * 24) / 4 = 348136704 bps = 348 Mbps

hs_clk不能太小,太小會顯示灰屏,偏小會偏移.
hs_clk不能太大,過大畫面會顯示條紋.