1*4882a593SmuzhiyunBinding for a type of flexgen structure found on certain 2*4882a593SmuzhiyunSTMicroelectronics consumer electronics SoC devices 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunThis structure includes: 5*4882a593Smuzhiyun- a clock cross bar (represented by a mux element) 6*4882a593Smuzhiyun- a pre and final dividers (represented by a divider and gate elements) 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunFlexgen structure is a part of Clockgen[1]. 9*4882a593Smuzhiyun 10*4882a593SmuzhiyunPlease find an example below: 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun Clockgen block diagram 13*4882a593Smuzhiyun ------------------------------------------------------------------- 14*4882a593Smuzhiyun | Flexgen structure | 15*4882a593Smuzhiyun | --------------------------------------------- | 16*4882a593Smuzhiyun | | ------- -------- -------- | | 17*4882a593Smuzhiyunclk_sysin | | | | | | | | | 18*4882a593Smuzhiyun---|-----------------|-->| | | | | | | | 19*4882a593Smuzhiyun | | | | | | | | | | | 20*4882a593Smuzhiyun | | ------- | | | |Pre | |Final | | | 21*4882a593Smuzhiyun | | |PLL0 | | | | |Dividers| |Dividers| | | 22*4882a593Smuzhiyun | |->| | | | | | x32 | | x32 | | | 23*4882a593Smuzhiyun | | | odf_0|----|-->| | | | | | | | 24*4882a593Smuzhiyun | | | | | | | | | | | | | 25*4882a593Smuzhiyun | | | | | | | | | | | | | 26*4882a593Smuzhiyun | | | | | | | | | | | | | 27*4882a593Smuzhiyun | | | | | | | | | | | | | 28*4882a593Smuzhiyun | | ------- | | | | | | | | | 29*4882a593Smuzhiyun | | | | | | | | | | | 30*4882a593Smuzhiyun | | ------- | | Clock | | | | | | | 31*4882a593Smuzhiyun | | |PLL1 | | | | | | | | | | 32*4882a593Smuzhiyun | |->| | | | Cross | | | | | | | 33*4882a593Smuzhiyun | | | odf_0|----|-->| | | | | | CLK_DIV[31:0] 34*4882a593Smuzhiyun | | | | | | Bar |====>| |====>| |===|=========> 35*4882a593Smuzhiyun | | | | | | | | | | | | | 36*4882a593Smuzhiyun | | | | | | | | | | | | | 37*4882a593Smuzhiyun | | | | | | | | | | | | | 38*4882a593Smuzhiyun | | ------- | | | | | | | | | 39*4882a593Smuzhiyun | | | | | | | | | | | 40*4882a593Smuzhiyun | | ------- | | | | | | | | | 41*4882a593Smuzhiyun | | |QUADFS | | | | | | | | | | 42*4882a593Smuzhiyun | |->| ch0|----|-->| | | | | | | | 43*4882a593Smuzhiyun | | | | | | | | | | | | 44*4882a593Smuzhiyun | | ch1|----|-->| | | | | | | | 45*4882a593Smuzhiyun | | | | | | | | | | | | 46*4882a593Smuzhiyun | | ch2|----|-->| | | DIV | | DIV | | | 47*4882a593Smuzhiyun | | | | | | | 1 to | | 1 to | | | 48*4882a593Smuzhiyun | | ch3|----|-->| | | 1024 | | 64 | | | 49*4882a593Smuzhiyun | ------- | | | | | | | | | 50*4882a593Smuzhiyun | | ------- -------- -------- | | 51*4882a593Smuzhiyun | -------------------------------------------- | 52*4882a593Smuzhiyun | | 53*4882a593Smuzhiyun ------------------------------------------------------------------- 54*4882a593Smuzhiyun 55*4882a593SmuzhiyunThis binding uses the common clock binding[2]. 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun[1] Documentation/devicetree/bindings/clock/st/st,clkgen.txt 58*4882a593Smuzhiyun[2] Documentation/devicetree/bindings/clock/clock-bindings.txt 59*4882a593Smuzhiyun 60*4882a593SmuzhiyunRequired properties: 61*4882a593Smuzhiyun- compatible : shall be: 62*4882a593Smuzhiyun "st,flexgen" 63*4882a593Smuzhiyun "st,flexgen-audio", "st,flexgen" (enable clock propagation on parent for 64*4882a593Smuzhiyun audio use case) 65*4882a593Smuzhiyun "st,flexgen-video", "st,flexgen" (enable clock propagation on parent 66*4882a593Smuzhiyun and activate synchronous mode) 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun- #clock-cells : from common clock binding; shall be set to 1 (multiple clock 69*4882a593Smuzhiyun outputs). 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun- clocks : must be set to the parent's phandle. it's could be output clocks of 72*4882a593Smuzhiyun a quadsfs or/and a pll or/and clk_sysin (up to 7 clocks) 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun- clock-output-names : List of strings used to name the clock outputs. 75*4882a593Smuzhiyun 76*4882a593SmuzhiyunExample: 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun clk_s_c0_flexgen: clk-s-c0-flexgen { 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun #clock-cells = <1>; 81*4882a593Smuzhiyun compatible = "st,flexgen"; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun clocks = <&clk_s_c0_pll0 0>, 84*4882a593Smuzhiyun <&clk_s_c0_pll1 0>, 85*4882a593Smuzhiyun <&clk_s_c0_quadfs 0>, 86*4882a593Smuzhiyun <&clk_s_c0_quadfs 1>, 87*4882a593Smuzhiyun <&clk_s_c0_quadfs 2>, 88*4882a593Smuzhiyun <&clk_s_c0_quadfs 3>, 89*4882a593Smuzhiyun <&clk_sysin>; 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun clock-output-names = "clk-icn-gpu", 92*4882a593Smuzhiyun "clk-fdma", 93*4882a593Smuzhiyun "clk-nand", 94*4882a593Smuzhiyun "clk-hva", 95*4882a593Smuzhiyun "clk-proc-stfe", 96*4882a593Smuzhiyun "clk-proc-tp", 97*4882a593Smuzhiyun "clk-rx-icn-dmu", 98*4882a593Smuzhiyun "clk-rx-icn-hva", 99*4882a593Smuzhiyun "clk-icn-cpu", 100*4882a593Smuzhiyun "clk-tx-icn-dmu", 101*4882a593Smuzhiyun "clk-mmc-0", 102*4882a593Smuzhiyun "clk-mmc-1", 103*4882a593Smuzhiyun "clk-jpegdec", 104*4882a593Smuzhiyun "clk-ext2fa9", 105*4882a593Smuzhiyun "clk-ic-bdisp-0", 106*4882a593Smuzhiyun "clk-ic-bdisp-1", 107*4882a593Smuzhiyun "clk-pp-dmu", 108*4882a593Smuzhiyun "clk-vid-dmu", 109*4882a593Smuzhiyun "clk-dss-lpc", 110*4882a593Smuzhiyun "clk-st231-aud-0", 111*4882a593Smuzhiyun "clk-st231-gp-1", 112*4882a593Smuzhiyun "clk-st231-dmu", 113*4882a593Smuzhiyun "clk-icn-lmi", 114*4882a593Smuzhiyun "clk-tx-icn-disp-1", 115*4882a593Smuzhiyun "clk-icn-sbc", 116*4882a593Smuzhiyun "clk-stfe-frc2", 117*4882a593Smuzhiyun "clk-eth-phy", 118*4882a593Smuzhiyun "clk-eth-ref-phyclk", 119*4882a593Smuzhiyun "clk-flash-promip", 120*4882a593Smuzhiyun "clk-main-disp", 121*4882a593Smuzhiyun "clk-aux-disp", 122*4882a593Smuzhiyun "clk-compo-dvp"; 123*4882a593Smuzhiyun }; 124