時鐘API的使用
對于一般的驅動開發(非clock驅動),我們只需要在dts中配置時鐘,然后在驅動調用通用的時鐘API接口即可。
1、設備樹中配置時鐘
mmc0:mmc0@0x12345678{
compatible = "xx,xx-mmc0";
......
clocks = < &peri PERI_MCI0 >;//指定mmc0的時鐘來自PERI_MCI0,PERI_MCI0的父時鐘是peri
clocks-names = "mmc0"; //時鐘名,調用devm_clk_get獲取時鐘時,可以傳入該名字
......
};
以mmc的設備節點為例,上述mmc0指定了時鐘來自PERI_MCI0,PERI_MCI0的父時鐘是peri,并將所指定的時鐘給它命名為"mmc0"。
2、驅動中使用API接口
簡單的使用:
/* 1、獲取時鐘 */
host- >clk = devm_clk_get(&pdev- >dev, NULL); //或者devm_clk_get(&pdev- >dev, "mmc0")
if (IS_ERR(host- >clk)) {
dev_err(dev, "failed to find clock sourcen");
ret = PTR_ERR(host- >clk);
goto probe_out_free_dev;
}
/* 2、使能時鐘 */
ret = clk_prepare_enable(host- >clk);
if (ret) {
dev_err(dev, "failed to enable clock source.n");
goto probe_out_free_dev;
}
probe_out_free_dev:
kfree(host);
在驅動中操作時鐘,第一步需要獲取struct clk
指針句柄,后續都通過該指針進行操作,例如:設置頻率:
ret = clk_set_rate(host- >clk, 300000);
獲得頻率:
ret = clk_get_rate(host- >clk);
注意:devm_clk_get()的兩個參數是二選一,可以都傳入,也可以只傳入一個參數。
像i2c、mmc等這些外設驅動,通常只需要使能門控即可,因為這些外設并不是時鐘源,它們只有開關。如果直接調用clk_ser_rate
函數設置頻率,clk_set_rate
會向上傳遞,即設置它的父時鐘頻率。例如在該例子中直接調用clk_set_rate
函數,最終設置的是時鐘源peri
的頻率。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
Linux
+關注
關注
87文章
11338瀏覽量
210102 -
API
+關注
關注
2文章
1509瀏覽量
62263 -
開發
+關注
關注
0文章
370瀏覽量
40886 -
時鐘
+關注
關注
11文章
1746瀏覽量
131669
發布評論請先 登錄
相關推薦
SDK、API、Open API有什么區別(iot開發平臺)
的SDK已經被當作一個產品來運營。開發者不需要再對產品的每個功能進行開發,選擇合適穩定的SDK服務并花費很少的經歷就可以在產品中集成某項功能。[ API的概念]API即“應用程序編程接
發表于 07-09 15:32
OpenHarmony 應用開發SDK、API 與基礎工具
一、整體說明
ArkTS 語言是鴻蒙系統主推的應用開發語言。因此鴻蒙系統提供給開發者的 API 絕大部分也是 ArkTS 語言的。
鴻蒙系統提供的 API 范圍非常全面,包括應用服務、
發表于 09-19 15:45
分析API都有哪些特點
。因此,理解好的API特性是至關重要的。那么什么是好的API呢? API一詞似乎是對軟件開發人員的一種Rorschach Test。Web開發
發表于 09-28 17:38
?11次下載
如何開發一個CTP綜合交易平臺API技術開發指南合集免費下載
本文檔的主要內容詳細介紹的是如何開發一個CTP綜合交易平臺API技術開發指南合集免費下載包括了:CTP Client Development Guidance-20141107
發表于 03-03 08:00
?6次下載
API+DevOps:華為云API Arts一體化平臺,端到端呵護您的API
、API托管、API運維、API變現,助力企業數字化轉型。 API和微服務已經成為核心的數字化變革驅動引擎,數字企業RD始終圍繞著
基于Java的接口快速開發框架——magic-api
magic-api 是一個基于Java的接口快速開發框架,編寫接口將通過magic-api提供的UI界面完成,自動映射為HTTP接口,無需定義Controller、Service、Dao、Mapper、XML、VO等Java對象
發表于 07-19 11:42
?956次閱讀
華納云:使用 WireMock 在開發和測試中模擬 API 服務
在本地開發和測試期間,經常會遇到您的應用依賴于遠程 API 的情況。網絡問題、速率限制,甚至 API 提供商的停機都可能阻礙您的進度。這會嚴重影響您的工作效率并使測試更具挑戰性。這就
評論