设备树与驱动的关系_Linux CommonClock Framework分析之四 gpio clk gate驱动实现
前面我們已經(jīng)完成了CCF子系統(tǒng)的分析,也說明了如何實現(xiàn)CCF驅(qū)動,本章為該專欄的最后一篇文章,
本章我們將實現(xiàn)一個虛擬的gpio clk gate驅(qū)動。本章大概分為如下幾個章節(jié):
一、 本次驅(qū)動開發(fā)涉及的知識點
二、clk provider driver的實現(xiàn)流程說明
三、gpio clk gate driver驅(qū)動設(shè)計
一、 本次驅(qū)動開發(fā)涉及的知識點
本次驅(qū)動實踐主要涉及如下幾個方面的知識點:
二、clk provider driver的實現(xiàn)流程說明
關(guān)于clk provider driver的開發(fā)流程,在上一篇文章中已經(jīng)做了說明,此處再說明一下,主要實現(xiàn)
流程包括如下兩步:
三、gpio clk gate driver驅(qū)動設(shè)計
本次我們主要實現(xiàn)gpio clk gate driver,本次實現(xiàn)的平臺為ubuntu16.04,我們使用之前模擬的gpio chip driver,提供gpio index,從而通過gpio 的值實現(xiàn)gpio clk gate driver。。另外針對clk gate,僅需要提供enable、disable、is_enabled接口即可。
相關(guān)數(shù)據(jù)結(jié)構(gòu)
結(jié)構(gòu)體struct virt_gpio_clk_gate作為本次gpio clk gate driver的數(shù)據(jù)結(jié)構(gòu),主要包含clk provier device、gpio index描述信息;
struct virt_gpio_clk_gate
{
struct gpio_desc *gpiod_clk_gate;
struct clk_hw hw;
};
而結(jié)構(gòu)體gpio_clk_gate_platform_data主要用于傳遞platform device for clk provider的enable gpio index信息,因為此次我們使用ubuntu16.04進行驗證,因此使用該模式傳遞gpio 信息,包含gpio index、是否低有效等信息。
struct gpio_clk_gate_platform_data
{
int enable_gpio_index;
int active_low;
};
gpio clk provider driver實現(xiàn)
Gpio clk provider driver的實現(xiàn)如下,主要完成clk provider device注冊、clk_ops的實現(xiàn)(enable、disable、is_enabled)等。如下即為clk provider driver的probe接口,主要調(diào)用clk_register完成clk provider的注冊、并調(diào)用of_clk_add_provider/clk_register_clkdev實現(xiàn)clk provider的map。
該gpio clk gate provider 的clk_ops操作接口定義如下:
gpio clk consumer driver實現(xiàn)
該consumer driver驅(qū)動主要用于驗證gpio clk provider driver是否生效,我們在probe接口完成clk的enable操作;而在remove接口完成clk 的disable操作。接口實現(xiàn)如下:
Virt gpio chip driver
該驅(qū)動使用的是gpio driver子系統(tǒng)專欄中實現(xiàn)的虛擬gpio驅(qū)動,本處不再細述,想要了解的童鞋請參考之前的文章。
測試驗證:
- 加載virt gpio 驅(qū)動
- 加載gpio clk gate 驅(qū)動
- 加載clk consumer device驅(qū)動
- 查看當(dāng)前gpio的值:
- 加載clk consumer driver驅(qū)動
- 查看當(dāng)前gpio的值
此時gpio已經(jīng)改變,clk已經(jīng)使能;
- 卸載clk consumer driver驅(qū)動
- 查看當(dāng)前gpio的值
此時gpio已經(jīng)修改為0,clk 已經(jīng)關(guān)閉;
以上就是本章的主要內(nèi)容,我們主要實現(xiàn)一個gpio clk gate provider driver,至此我們基本上已完成CCF子系統(tǒng)的學(xué)習(xí),本章的驅(qū)動代碼鏈接稍后給出。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的设备树与驱动的关系_Linux CommonClock Framework分析之四 gpio clk gate驱动实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python模拟手写笔迹_pytorch
- 下一篇: python图像锐化_opencv实现图