clk: add DT fixed-factor-clock binding support
Subsystems (2)
cover clk: add DT fixed-factor-clock binding support
Hi,
During the port of the clock common framework for the armada 370/XP, I need to get "fixed-factor-clock" using the device tree. For this need I add support DT for "fixed-factor-clock" in the same way that the existing support for "fixed-rate-clock". It turned out that finally I didn't need it anymore, but as the code was written and tested, here it is.
Gregory Clement
PATCH 1/1 clk: add DT fixed-factor-clock binding support
Add support for DT "fixed-factor-clock" binding to the common fixed factor clock support.
--- .../bindings/clock/fixed-factor-clock.txt | 24 ++++++++++++++ drivers/clk/clk-fixed-factor.c | 34 ++++++++++++++++++++ include/linux/clk-provider.h | 2 ++ 3 files changed, 60 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/fixed-factor-clock.txt
Documentation/devicetree/bindings/clock/fixed-factor-clock.txt new file +24 -0
@@ -0,0 +1,24 @@ +Binding for simple fixed factor rate clock sources. + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be "fixed-factor-clock". +- #clock-cells : from common clock binding; shall be set to 0. +- div: fixed divider. +- mult: fixed multiplier. +- clocks: parent clock. + +Optional properties: +- clock-output-names : From common clock binding. + +Example: + clock { + compatible = "fixed-factor-clock"; + clocks = <&parentclk>; + #clock-cells = <0>; + div = <2>; + mult = <1>; + };
drivers/clk/clk-fixed-factor.c +34 -0
@@ -11,6 +11,7 @@#include <linux/clk-provider.h> #include <linux/slab.h> #include <linux/err.h> +#include <linux/of.h> /* * DOC: basic fixed multiplier and divider clock that cannot gate
@@ -93,3 +94,36 @@ struct clk *clk_register_fixed_factor(struct device *dev, const char *name,return clk; } +#ifdef CONFIG_OF +/** +* of_fixed_factor_clk_setup() - Setup function for simple fixed factor clock +*/ +void __init of_fixed_factor_clk_setup (struct device_node *node) +{ +struct clk *clk; +const char *clk_name = node->name; +const char *parent_name; +u32 div, mult; + +if (of_property_read_u32 (node,"div" , &div)) { +pr_err ("%s Fixed factor clock <%s> must have a div property\n" , + __func__, node->name); +return ; + } + +if (of_property_read_u32 (node,"mult" , &mult)) { +pr_err ("%s Fixed factor clock <%s> must have a mult property\n" , + __func__, node->name); +return ; + } + +of_property_read_string (node,"clock-output-names" , &clk_name); + parent_name =of_clk_get_parent_name (node,0 ); + + clk =clk_register_fixed_factor (NULL , clk_name, parent_name,0 , + mult, div); +if (clk) +of_clk_add_provider (node, of_clk_src_simple_get, clk); +} +EXPORT_SYMBOL_GPL (of_fixed_factor_clk_setup); +#endif
include/linux/clk-provider.h +2 -0
@@ -314,6 +314,8 @@ struct clk *clk_register_fixed_factor(struct device *dev, const char *name, const char *parent_name, unsigned long flags, unsigned int mult, unsigned int div); +void of_fixed_factor_clk_setup (struct device_node *node); +/** * clk_register - allocate a new clock, register it and return an opaque cookie * @dev: device that is registering this clock
Signature · 1 line
1.7.9.5
cover clk: add DT fixed-factor-clock binding support
In reply to Gregory CLEMENTQuoted 9 lines · Gregory CLEMENT
Hi,
During the port of the clock common framework for the armada 370/XP, I need to get "fixed-factor-clock" using the device tree. For this need I add support DT for "fixed-factor-clock" in the same way that the existing support for "fixed-rate-clock". It turned out that finally I didn't need it anymore, but as the code was written and tested, here it is.
It looks fine to me, but I'd like to see a user of it.
Rob
cover clk: add DT fixed-factor-clock binding support
Quoting Rob Herring (2012-09-06 09:15:51)
Quoted 11 lines · Gregory CLEMENT
Quoted 9 lines
Hi,
During the port of the clock common framework for the armada 370/XP, I need to get "fixed-factor-clock" using the device tree. For this need I add support DT for "fixed-factor-clock" in the same way that the existing support for "fixed-rate-clock". It turned out that finally I didn't need it anymore, but as the code was written and tested, here it is.
Quoted 2 lines
It looks fine to me, but I'd like to see a user of it.
Agreed. I'll hold off on merging it until someone else depends on it.
Thanks for submitting this Gregory.
Regards,
Mike
Quoted 1 line
Rob