On 10/31/2013 11:27 AM, Nishanth Menon wrote: > On 10/25/2013 10:57 AM, Tero Kristo wrote: >> This is a multipurpose clock node, which contains support for multiple >> sub-clocks. Uses basic composite clock type to implement the actual >> functionality, and TI specific gate, mux and divider clocks. >> >> Signed-off-by: Tero Kristo <t-kristo@xxxxxx> >> --- >> .../devicetree/bindings/clock/ti/composite.txt | 54 +++++ >> drivers/clk/ti/Makefile | 2 +- >> drivers/clk/ti/composite.c | 222 ++++++++++++++++++++ >> include/linux/clk/ti.h | 8 + >> 4 files changed, 285 insertions(+), 1 deletion(-) >> create mode 100644 Documentation/devicetree/bindings/clock/ti/composite.txt >> create mode 100644 drivers/clk/ti/composite.c >> >> diff --git a/Documentation/devicetree/bindings/clock/ti/composite.txt b/Documentation/devicetree/bindings/clock/ti/composite.txt >> new file mode 100644 >> index 0000000..5f43c47 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/clock/ti/composite.txt >> @@ -0,0 +1,54 @@ >> +Binding for TI composite clock. >> + >> +Binding status: Unstable - ABI compatibility may be broken in the future >> + >> +This binding uses the common clock binding[1]. It assumes a >> +register-mapped composite clock with multiple different sub-types; >> + >> +a multiplexer clock with multiple input clock signals or parents, one >> +of which can be selected as output, this behaves exactly as [2] >> + >> +an adjustable clock rate divider, this behaves exactly as [3] >> + >> +a gating function which can be used to enable and disable the output >> +clock, this behaves exactly as [4] >> + >> +The binding must provide a list of the component clocks that shall be >> +merged to this clock. The component clocks shall be of one of the >> +"ti,*composite*-clock" types. >> + >> +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt >> +[2] Documentation/devicetree/bindings/clock/ti/mux.txt >> +[3] Documentation/devicetree/bindings/clock/ti/divider.txt >> +[4] Documentation/devicetree/bindings/clock/ti/gate.txt >> + >> +Required properties: >> +- compatible : shall be: "ti,composite-clock" >> +- clocks : link phandles of component clocks >> +- #clock-cells : from common clock binding; shall be set to 0. >> + >> +Examples: >> + >> +usb_l4_gate_ick: usb_l4_gate_ick { >> + #clock-cells = <0>; >> + compatible = "ti,composite-interface-clock"; >> + clocks = <&l4_ick>; >> + ti,bit-shift = <5>; >> + reg = <0x0a10>; >> +}; >> + >> +usb_l4_div_ick: usb_l4_div_ick { >> + #clock-cells = <0>; >> + compatible = "ti,composite-divider-clock"; >> + clocks = <&l4_ick>; >> + ti,bit-shift = <4>; >> + ti,max-div = <1>; >> + reg = <0x0a40>; >> + ti,index-starts-at-one; >> +}; >> + >> +usb_l4_ick: usb_l4_ick { >> + #clock-cells = <0>; >> + compatible = "ti,composite-clock"; >> + clocks = <&usb_l4_gate_ick>, <&usb_l4_div_ick>; >> +}; >From Topology perspective, would this be a better approach? usb_l4_ick: usb_l4_ick { #clock-cells = <0>; compatible = "ti,composite-clock"; usb_l4_gate_ick: usb_l4_gate_ick { #clock-cells = <0>; compatible = "ti,composite-interface-clock"; clocks = <&l4_ick>; ti,bit-shift = <5>; reg = <0x0a10>; }; usb_l4_div_ick: usb_l4_div_ick { #clock-cells = <0>; compatible = "ti,composite-divider-clock"; clocks = <&l4_ick>; ti,bit-shift = <4>; ti,max-div = <1>; reg = <0x0a40>; ti,index-starts-at-one; }; }; -- Regards, Nishanth Menon -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html