diff options
Diffstat (limited to 'arch/arm/mach-imx/clk-imx31.c')
| -rw-r--r-- | arch/arm/mach-imx/clk-imx31.c | 19 | 
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/clk-imx31.c b/arch/arm/mach-imx/clk-imx31.c index c9a06d800f8..f87a48fc74e 100644 --- a/arch/arm/mach-imx/clk-imx31.c +++ b/arch/arm/mach-imx/clk-imx31.c @@ -20,6 +20,7 @@  #include <linux/clkdev.h>  #include <linux/io.h>  #include <linux/err.h> +#include <linux/of.h>  #include <mach/hardware.h>  #include <mach/mx31.h> @@ -179,3 +180,21 @@ int __init mx31_clocks_init(unsigned long fref)  	return 0;  } + +#ifdef CONFIG_OF +int __init mx31_clocks_init_dt(void) +{ +	struct device_node *np; +	u32 fref = 26000000; /* default */ + +	for_each_compatible_node(np, NULL, "fixed-clock") { +		if (!of_device_is_compatible(np, "fsl,imx-osc26m")) +			continue; + +		if (!of_property_read_u32(np, "clock-frequency", &fref)) +			break; +	} + +	return mx31_clocks_init(fref); +} +#endif  |