#include #include #include #include #include #include "clk.h" DEFINE_SPINLOCK(imx_ccm_lock); 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 = kasprintf(GFP_KERNEL, "/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); of_node_put(phandle.np); } return clk; } struct clk * __init imx_obtain_fixed_clock( const char *name, unsigned long rate) { struct clk *clk; clk = imx_obtain_fixed_clock_from_dt(name); if (IS_ERR(clk)) clk = imx_clk_fixed(name, rate); return clk; }