int (*set_parent)(struct clk_hw *hw, u8 index); u8 (*get_parent)(struct clk_hw *hw); int (*set_rate)(struct clk_hw *hw, unsigned long rate, unsigned long parent_rate); int (*set_rate_and_parent)(struct clk_hw *hw, unsigned long rate, unsigned long parent_rate, u8 index);...
51CTO博客已为您找到关于get parent clk failed的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及get parent clk failed问答内容。更多get parent clk failed相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
+ num_parents = of_clk_get_parent_count(node); + + parent_names = kcalloc(num_parents, sizeof(char *), GFP_KERNEL); + if (!parent_names) + return; + + for (i = 0; i < num_parents; i++) + parent_names[i] = of_clk_get_parent_name(node, i); + + data->num_parents...
_set_rate()、clk_get_parent()、clk_set_parent()等通用API,但是这些API由每个SoC单独实现,而且各个SoC供应商在实现方面的差异很大,于是内核增加了一个新的通用时钟框架以解决这个碎片化问题。之所以称为通用时钟,是因为这个通用主要体现在: 1)统一的clk结构体,统一的定义于clk.h中的clkAPI,这些API会调用统一的...
parent - clk是由parent分出来的。那么如果parent关闭了,当前clk也就没有了。 secondary - 第二时钟源,用于enable/disable当前clk。 usecount - 引用计数。 get_rate, set_rate, enable, disable, set_parent - 很显然,这些函数指针指到实际操作的函数。clk.h中的各接口函数最后都会调用到这里的函数指针。函数...
clk_get函数实现,Linux内核时钟框架 (1) 对应外设时钟的开启 struct clk=clk_get(NULL,"adc"); clk.enable(); 之后adc对应的时钟位就能时能。 struct clk *clk_get(struct device *dev, const char *id) { ... list_for_each_entry(p, &clocks, list) { if (p->...
4、时钟父级关系管理:通过clk_set_parent函数设置clock的父级clock。 5、时钟状态查询:通过clk_get_rate和clk_is_enabled等函数查询clock的状态和频率。 四、时钟链表 在Linux中,所有的clock对象都通过一个双向链表进行管理,每个clock对象都有一个对应的struct clk_lookup结构体,该结构体包含了clock的名称、类型等信...
clk->rate = clk_get_rate(clk->parent); } static int lcd_func_clk_enable(struct clk *clk) { unsigned long flags; spin_lock_irqsave(&lcd_ci_share_lock, flags); CLK_SET_BITS((LCD_CLK_EN | LCD_CLK_RST), 0); spin_unlock_irqrestore(&lcd_ci_share_lock, flags); ...
const char *parent_name, unsigned long flags, void __iomem *reg, u8 shift, u8 width, u8 clk_divider_flags, const struct clk_div_table *table, spinlock_t *lock); 4.mux clock 这一类clock可以选择多个parent,因为会实现.get_parent/.set_parent/.recalc_rate回调,可通过下面两个接口注册: ...
.get_parent = clk_dummy_single_get_parent, };struct clk_multiple_parent_ctx { struct clk_dummy_context parents_ctx[2]; struct clk_hw hw; u8 current_parent; };static int clk_multiple_parents_mux_set_parent(struct clk_hw *hw, u8 index) ...