Linux时钟管理clk devm_clk_get clk_prepare_enable等学习

本文介绍了在Linux系统中如何使用clk相关的API进行时钟管理,包括clk_get、devm_clk_get来获取时钟,clk_prepare和clk_enable进行时钟准备和启用,以及clk_set_rate设置时钟速率。遵循常规调用步骤,可以成功配置和测试I2S1时钟,使其频率达到11289800Hz。
摘要由CSDN通过智能技术生成

  Linux时钟管理clk devm_clk_get clk_prepare_enable等学习

 

一、查看系统clk命令 cat d/clk/clk_summary

二、clock获取有关的API。



struct clk *clk_get(struct device *dev, const char *id);

struct clk *devm_clk_get(struct device *dev, const char *id);

void clk_put(struct clk *clk);

void devm_clk_put(struct device *dev, struct clk *clk);

struct clk *clk_get_sys(const char *dev_id, const char *con_id);

struct clk *of_clk_get(struct device_node *np, int index);

struct clk *of_clk_get_by_name(struct device_node *np, const char *name);

struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec);

clock控制有关的API:

int clk_prepare(struct clk *clk)

void clk_unprepare(struct clk *clk)

static inline int clk_enable(struct clk *clk)

static inline void clk_disable(struct clk *clk)

static inline unsigned long clk_get_rate(struct clk *clk)

static inline int clk_set_rate(struct clk *clk, unsigned long rate)

static inline long clk_round_rate(struct clk *clk, unsigned long rate)

static inline int clk_set_parent(struct clk *clk, struct clk *parent)

static inline struct clk *clk_get_parent(struct clk *clk)

三、常规调用步骤:

       1、

       2、

       3、

       4、

 

       5、测试,i2s1频率是11289800

四、参考文章:

https://www.cnblogs.com/fah936861121/articles/6908230.html

https://www.pianshen.com/article/185828017/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值