On Mon, Oct 03, 2016 at 07:40:47AM -0700, Andrey Smirnov wrote: > Port imx_check_clocks() and imx_obtain_fixed_clock() from Linux kernel. > > Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx> > --- > arch/arm/mach-imx/clk.h | 4 ++++ > drivers/clk/Makefile | 1 + > drivers/clk/imx/Makefile | 1 + > drivers/clk/imx/clk.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 55 insertions(+) > create mode 100644 drivers/clk/imx/Makefile > create mode 100644 drivers/clk/imx/clk.c > > diff --git a/arch/arm/mach-imx/clk.h b/arch/arm/mach-imx/clk.h > index 35e480f..f96e5d2 100644 > --- a/arch/arm/mach-imx/clk.h > +++ b/arch/arm/mach-imx/clk.h > @@ -109,4 +109,8 @@ static inline struct clk *imx_clk_busy_mux(const char *name, void __iomem *reg, > struct clk *imx_clk_gate_exclusive(const char *name, const char *parent, > void __iomem *reg, u8 shift, u32 exclusive_mask); > > +void imx_check_clocks(struct clk *clks[], unsigned int count); > +struct clk * __init imx_obtain_fixed_clock(const char *name, unsigned long rate); > + > + > #endif /* __IMX_CLK_H */ > diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile > index 0fe8f1e..6dc82ea 100644 > --- a/drivers/clk/Makefile > +++ b/drivers/clk/Makefile > @@ -9,3 +9,4 @@ obj-$(CONFIG_ARCH_ROCKCHIP) += rockchip/ > obj-$(CONFIG_ARCH_TEGRA) += tegra/ > obj-$(CONFIG_CLK_SOCFPGA) += socfpga.o > obj-$(CONFIG_MACH_MIPS_ATH79) += clk-ar933x.o > +obj-$(CONFIG_COMMON_CLK) += imx/ > diff --git a/drivers/clk/imx/Makefile b/drivers/clk/imx/Makefile > new file mode 100644 > index 0000000..0303c0b > --- /dev/null > +++ b/drivers/clk/imx/Makefile > @@ -0,0 +1 @@ > +obj-y += clk.o > diff --git a/drivers/clk/imx/clk.c b/drivers/clk/imx/clk.c > new file mode 100644 > index 0000000..0357048 > --- /dev/null > +++ b/drivers/clk/imx/clk.c We currently have the i.MX clock support in arch/arm/mach-imx/. This may or may not be changed, but until it is, other i.MX clock support code should go to arch/arm/mach-imx/ aswell. > @@ -0,0 +1,49 @@ > +#include <common.h> > +#include <init.h> > +#include <driver.h> > +#include <linux/clk.h> > +#include <io.h> > +#include <of.h> > +#include <linux/clkdev.h> > +#include <linux/err.h> > + > +#include "../../../arch/arm/mach-imx/clk.h" #include <mach/clk.h> > + > +void __init imx_check_clocks(struct clk *clks[], unsigned int count) > +{ > + unsigned i; > + > + for (i = 0; i < count; i++) > + if (IS_ERR(clks[i])) > + pr_err("i.MX clk %u: register failed with %ld\n", > + i, PTR_ERR(clks[i])); > +} > + > +static struct clk * __init imx_obtain_fixed_clock_from_dt(const char *name) > +{ > + struct of_phandle_args phandle; > + struct clk *clk = ERR_PTR(-ENODEV); > + char *path; > + > + path = basprintf("/clocks/%s", name); > + if (!path) > + return ERR_PTR(-ENOMEM); > + > + phandle.np = of_find_node_by_path(path); > + kfree(path); > + > + if (phandle.np) > + clk = of_clk_get_from_provider(&phandle); > + > + return clk; > +} Do we need this anyway? We already have clk providers for fixed-clock. Hm, looking further, maybe a later patch explains. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox