tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: clk_set_parent() by name ?
On Mon, 19 Mar 2018, Manuel Bouyer wrote:
Looking at what we have now, I see 2 ways for doing this:
- clk_set_parent(). But this one takes a "struct clk*" as parent,
and I don't have this handy in the driver. There is clk_get(), but it
need the ckock domain, which I also don't have it in the driver.
There is no clk_get_domain()
- clk->set_parent(), which takes a clock name. But for this I need to
use a struct sunxi_ccu_clk * instead of struct clk *.
So what should I do to solve this ? Introduce clk_get_domain() or
clk_set_parent_byname() in sys/dev/clk/, or use struct sunxi_ccu_clk in
the sunxi drivers ?
The dt should have references to the parent clocks - the hdmi node has:
clocks = <&ccu CLK_AHB_HDMI0>, <&ccu CLK_HDMI>,
<&ccu 9>,
<&ccu 18>;
clock-names = "ahb", "mod", "pll-0", "pll-1";
So you can do something like:
struct clk *clk_hdmi = fdtbus_clock_get(phandle, "mod");
struct clk *clk_video0 = fdtbus_clock_get(phandle, "pll-0");
struct clk *clk_video1 = fdtbus_clock_get(phandle, "pll-1");
...
clk_set_parent(clk_hdmi, use_video0 ? clk_video0 : clk_video1);
Cheers,
Jared
Home |
Main Index |
Thread Index |
Old Index