Linux reset子系統(tǒng)
reset子系統(tǒng)非常簡(jiǎn)單,與clock子系統(tǒng)非常類似,但在驅(qū)動(dòng)實(shí)現(xiàn)上,reset驅(qū)動(dòng)更簡(jiǎn)單。
因?yàn)閏lock驅(qū)動(dòng)主要是時(shí)鐘的實(shí)現(xiàn),涉及到固定時(shí)鐘、分頻、門(mén)控等一些時(shí)鐘的分級(jí)關(guān)系,需要弄清楚時(shí)鐘樹(shù)里每個(gè)時(shí)鐘的關(guān)系。
而reset驅(qū)動(dòng)有點(diǎn)相當(dāng)于clock驅(qū)動(dòng)的門(mén)控,它只有復(fù)位和解復(fù)位兩個(gè)功能。
類似于clock子系統(tǒng),reset子系統(tǒng)也分為了consumer
和provider
,結(jié)構(gòu)體關(guān)系如下:
consumer :
reset API接口的使用者,內(nèi)核提供了統(tǒng)一的reset接口:
devm_reset_control_get(struct device *dev, const char *id)//獲取reset句柄
reset_control_deassert(struct reset_control *rstc)//解復(fù)位
reset_control_assert(struct reset_control *rstc)//復(fù)位
reset_control_reset(struct reset_control *rstc)//先復(fù)位,延遲一會(huì),然后解復(fù)位
struct reset_control結(jié)構(gòu)體表示一個(gè)reset句柄,驅(qū)動(dòng)中使用reset API,需要先獲取reset句柄
provider :
reset提供者,即reset驅(qū)動(dòng)。struct reset_controller_dev
結(jié)構(gòu)體代表一個(gè)reset
控制器,內(nèi)部包含了reset操作函數(shù)集合struct reset_control_ops
,注冊(cè)reset驅(qū)動(dòng)時(shí),需要分配一個(gè)struct reset_controller_dev結(jié)構(gòu)體,然后填充成員,最后將該結(jié)構(gòu)體注冊(cè)。
struct reset_controller_dev{
const struct reset_control_ops *ops;//復(fù)位控制操作函數(shù)
struct list_head list;//全局鏈表,復(fù)位控制器注冊(cè)后掛載到全局鏈表
struct list_head reset_control_head;//各個(gè)模塊復(fù)位的鏈表頭
struct device *dev;
int of_reset_n_cells;//dts中引用時(shí),需要幾個(gè)參數(shù)
//通過(guò)dts引用的參數(shù),解析復(fù)位控制器中相應(yīng)的參數(shù)
int (*of_xlate)(struct reset_controller_dev *rcdev, const struct of_phandle_args *reset_spec);
unsigned int nr_resets;//復(fù)位設(shè)備個(gè)數(shù)
}
struct reset_control_ops{
int (*reset)(struct reset_controller_dev *rcdev, unsigned long id);//復(fù)位+解復(fù)位
int (*assert)(struct reset_controller_dev *rcdev, unsigned long id);//復(fù)位
int (*deassert)(struct reset_controller_dev *rcdev, unsigned long id);//解復(fù)位
int (*status)(struct reset_controller_dev *rcdev, unsigned long id);//復(fù)位狀態(tài)查詢
}
-
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1851瀏覽量
85634 -
Linux
+關(guān)注
關(guān)注
87文章
11345瀏覽量
210378 -
子系統(tǒng)
+關(guān)注
關(guān)注
0文章
110瀏覽量
12453
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Linux下輸入子系統(tǒng)上報(bào)觸摸屏坐標(biāo)
![<b class='flag-5'>Linux</b>下輸入<b class='flag-5'>子系統(tǒng)</b>上報(bào)觸摸屏坐標(biāo)](https://file.elecfans.com//web2/M00/6C/B4/pYYBAGMuvISABHEGAAUp7Zj3V_s861.png)
Linux reset子系統(tǒng)及驅(qū)動(dòng)實(shí)例
![<b class='flag-5'>Linux</b> <b class='flag-5'>reset</b><b class='flag-5'>子系統(tǒng)</b>及驅(qū)動(dòng)實(shí)例](https://file1.elecfans.com/web2/M00/88/EB/wKgaomR3AjaAYMjWAAJfgWuA1Ac700.jpg)
如何使用Linux內(nèi)核中的input子系統(tǒng)
在Linux子系統(tǒng)中使用adb功能有哪幾種方式呢
基于Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究
Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究
![<b class='flag-5'>Linux</b>內(nèi)核輸入<b class='flag-5'>子系統(tǒng)</b>的驅(qū)動(dòng)研究](https://file.elecfans.com/web2/M00/49/3D/poYBAGKhwJKAUdSaAABDpi3RHZo747.png)
詳細(xì)了解Linux設(shè)備模型中的input子系統(tǒng)
![詳細(xì)了解<b class='flag-5'>Linux</b>設(shè)備模型中的input<b class='flag-5'>子系統(tǒng)</b>](https://file.elecfans.com/web1/M00/91/DE/pIYBAFzVPpaAUS9dAAC5ovMfQhA395.png)
Windows 10操作系統(tǒng)會(huì)有專門(mén)的Linux子系統(tǒng)
Linux系統(tǒng)中NFC子系統(tǒng)架構(gòu)分析
linux-usb子系統(tǒng)的核心描述
Linux內(nèi)核reset驅(qū)動(dòng)實(shí)例
Linux clock子系統(tǒng)是什么
![<b class='flag-5'>Linux</b> clock<b class='flag-5'>子系統(tǒng)</b>是什么](https://file1.elecfans.com/web2/M00/88/EC/wKgZomR3AEiAHXG0AAOHp2Lqrws775.jpg)
Linux網(wǎng)絡(luò)子系統(tǒng)的實(shí)現(xiàn)
![<b class='flag-5'>Linux</b>網(wǎng)絡(luò)<b class='flag-5'>子系統(tǒng)</b>的實(shí)現(xiàn)](https://file1.elecfans.com/web2/M00/AF/70/wKgZomVO9A6AKpxBAADtxo6ILtQ081.jpg)
評(píng)論