{clk_set_rate(fout_vpll_clock, (unsignedint)clk * GPU_MHZ); clk_set_parent(vpll_src_clock, ext_xtal_clock); clk_set_parent(sclk_vpll_clock, fout_vpll_clock); clk_set_parent(mali_parent_clock, sclk_vpll_clock); clk_set_parent(mali_clock, mali_parent_clock); }else{ clk_set_par...
> its rate. But that clock actually has CLK_SET_RATE_PARENT flag set in > the clock driver [2]. So the right thing to do in this case (and > that's basically how it's done in Linux kernel too) is to traverse the > clock tree upwards, and try to find the parent capable to ...
可以使用clk_register_mux()函数注册一个时钟选择器,在使用时可以通过clk_set_parent()函数设置该时钟的父时钟。 Divider Clock(时钟分频器):将输入时钟的频率分频后得到输出时钟。可以使用clk_register_divider()函数注册一个时钟分频器,在使用时可以通过clk_set_rate()函数设置该时钟的频率。 Fractional-N PLL Clo...
round_rate:给定一个目标速率作为输入,实际上返回由时钟支持最接近的速率,父速率是一个input/output参数。 determine_rate:给定目标速率作为输入,返回实际上是由时钟支撑的最接近的速率。 set_parent:改变这个时钟的输入源,设置父时钟。 get_parent:查询硬件以确定时钟的父时钟。 set_rate:改变这个时钟的速率。 set_...
由于parent clock的频率可以改变,因而fix factor clock也可该改变频率,因此也会提供.recalc_rate/.set_rate/.round_rate等回调。以第一行的clk为例,这里的"sys_pll1_50m"就是我们想要的fixed factor clock。“sys_pll1_50m"的clk的父时钟节点为"sys_pll2_out”(1000MHz),倍频系数为1,分频系数为20。
Remove CLK_SET_PARENT from all MSDC core clocks clk: mediatek: mux: Stop forcing CLK_SET_RATE_PARENT flag clk: mediatek: Enable all MT8192 clocks by default * clk-i2cid: clk: rs9: Fix .driver_data content in i2c_device_id clk: vc7: Fix .driver_data content in i2c_device_id clk...
CLK_SET_BITS(LCD_DEF_FCLK_SEL, LCD_FCLK_SEL_MASK); /* Default enable the post divider */ CLK_SET_BITS(LCD_PST_CKEN, LCD_PST_OUTDIS); clk_reparent(clk, &pll1_416); //设置pll1_416为src clk->mul = clk->div = 1; clk->rate = clk_get_rate(clk->parent); ...
const char *parent_name, unsigned long flags, void __iomem *reg, u8 bit_idx, u8 clk_gate_flags, spinlock_t *lock); 3. divider clock 这一类clock可以设置分频值(因而会提供.recalc_rate/.set_rate/.round_rate回调),可通过下面两个接口注册: ...
设置频率:(由父频率分频得到/ 通过设置寄存器的值,可以使输出的频率改变, parent.rate / div) int omap2_clksel_set_rate(struct clk *clk, unsigned long rate)//通过写对应的寄存器来控制这个CLK的频率。 validrate = omap2_clksel_round_rate_div(clk, rate, &new_div);//==>test_rate = clk->pare...
.set_parent = rlx_set_parent, .get_parent = rlx_get_parent, .recalc_rate = rlx_recalc, }; 1. 2. 3. 4. 5. 6. 7. 8. 9. 通过一个宏DEFINE_CLK_RLX将这个clk_ops赋值给struct clk结构体中的ops #define DEFINE_STRUCT_CLK(_name, _parent_array_name, _clkops_name) \ ...