2017年12月11日 星期一

i.mx6 LVDS clock structure

Dump all clock source data command
#cat /sys/kernel/debug/clk/clk_summary



LDB clock use path LDB_DI1_IPU -->ldb_di1_ipu_div -->ldb_di1_clk_sel
從ldb_di1_clk_sel過來的clock固定只能 /3.5(lvds split mode) or /7(lvds non-split mode)



在ldb_di1_clk_sel則可以選擇5個不同clock source
其中PLL2 PFD0/PLL2 PFD2/pll3_sw_clk往前都沒有其他的clock select或是divider.
mmdc_ch1 clock如下圖則還有clock select以及divider
黃色標出的部分都可以再尋找register做clock source以及divider的設定


pll5 clock set
pll5 clock可分為兩個部分.
1. 從24MHz OSC出來計算PLL5的clock, 參考公式如下圖

Fref = 24Mhz
DIV_SELECT = CCM_ANALOG_PLL_VIDEOn offset 0-6, range 27-54
NUM = CCM_ANALOG_PLL_AUDIO_NUM offset 0-29
DENOM = CCM_ANALOG_PLL_AUDIO_DENOM offset 0-29
NUM must less than DENOM.
Example
24MHz * (29 + 8666666 /10000000 ) = 716.79984MHz
716MHz = pll5 = pll5_bypass = pll5_video

2. 由第一步計算出的PLL5 clock, 再經由2個2bit divider, 可以 /1 /2 /4 /8 /16來產生出最終的pll5_main_clk


總結:
由ldb_di1_clk_sel當中選擇出的clock, 再根據split mode來決定/3.5 or /7就可算出最終ldb輸出的clock frequency.

沒有留言:

張貼留言