pinctrl 和 gpio 子系統

2021-10-20 19:14:23 字數 567 閱讀 9437

將工作分為兩部分:

of_device_id 結構體陣列,它裡面儲存著這個驅動檔案的相容性值,裝置樹中的 compatible 屬性值會和 of_device_id 中的所有相容性字串比較,檢視是否可以使用此驅動。

(1)platform_driver 是平台裝置驅動,(2)platform_driver 是個結構體,(3)有個 probe 成員變數。(4)當裝置和驅動匹配成功以後 platform_driver 的 probe 成員變數所代表的函式就會執行。

struct pinctrl_dev *pinctrl_register(struct pinctrl_desc *pctldesc,struct device *dev,void *driver_data)

此函式用於向 linux 核心註冊乙個 pin 控制器.

pctldesc 非常重要,因為此引數就是要註冊的 pin 控制器, pin 控制器用於配置 soc的 pin 復用功能和電氣特性

裝置樹中新增 pinctrl 節點模板

pinctrl_test: testgrp 

;

pinctrl和gpio子系統

傳統配置pin的方式是直接操作暫存器,這種方式比較繁瑣和容易出問題,pinctrl子系統就是為了解決這個問題而引入的。pinctrl子系統的主要工作內容如下 獲取裝置樹中的pin資訊 根據獲取到的pin資訊來設定pin的復用功能 根據獲取到的pin資訊來設定pin的電氣特性,比如上下拉,速度,驅動能...

pinctrl子系統分析(一)

pinctrl子系統分析 一 pinctrl子系統分析 二 pinctrl子系統分析 三 許多soc的內部都包含了pin控制器,通過pin控制器,我們可以匹配引腳的狀態和功能特性。在了解pinctrl子系統之前,我們先來了解一些基本的概念。soc的很多引腳都可以配置成不同的功能,如a1和a2兩個引腳...

pinctrl子系統分析(二)

pinctrl子系統分析 一 pinctrl子系統分析 二 pinctrl子系統分析 三 pin控制器驅動的主要工作是,列舉pin控制器的資訊,如控制器有多少個引腳,支援多少個function,每個function對應幾個group,支援多少個group等,建立table儲存這些資訊,最後呼叫pin...