GPA0~GPA24
25
GPIOB
GPB0~GPB10
11
文章插图
GPIOC
GPC0~GPC15
16
GPIOD
GPD0~GPD15
16
GPIOE
GPE0~GPE15
16
GPIOF
GPF0~GPF7
GPIOG
GPG0~GPG15
16
GPIOH
GPH0~GPH10
11 (这里明明11个 , 说的总共9个)
GPIOJ
GPJ0~GPJ12
13
所以在arch/arm/boot/dts/-.dtsi文件中就把这9组GPIO端口枚举成pin bank , 如下:
/** Pin banks*/gpa: gpa {gpio-controller;#gpio-cells = <2>;};gpb: gpb {gpio-controller;#gpio-cells = <2>;};gpc: gpc {gpio-controller;#gpio-cells = <2>;};gpd: gpd {gpio-controller;#gpio-cells = <2>;};gpe: gpe {gpio-controller;#gpio-cells = <2>;};gpf: gpf {gpio-controller;#gpio-cells = <2>;interrupt-controller;#interrupt-cells = <2>;};gpg: gpg {gpio-controller;#gpio-cells = <2>;interrupt-controller;#interrupt-cells = <2>;};gph: gph {gpio-controller;#gpio-cells = <2>;};gpj: gpj {gpio-controller;#gpio-cells = <2>;};
View Code
如gpa: gpa 这个child node就是描述GPIOA这个组 , 也就是gpa bank. 。pin bank中支持如下属性:
gpf、gpg本身也充当一个中断控制器 , 它的 也是-@ , gpf的 cell是2 , 表示引用gpf的一个中断需要2个参数来描述 。
GPIO控制器支持两种类型的外部中断:外部GPIO中断和外部唤醒中断 。两者之间的区别在于 , 外部唤醒中断可以用作系统唤醒事件 。
更多信息可以参考:////-.txt 。
2.2.2 group
以功能为依据 , 具有相同功能的引脚称为一个pin group , 比如:
所以在arch/arm/boot/dts/-.dtsi文件中定义到了大量的pin group , 如下:
/** Pin groups*/uart0_data: uart0-data {samsung,pins = "gph-2", "gph-3";samsung,pin-function = ;};uart1_data: uart1-data {samsung,pins = "gph-4", "gph-5";samsung,pin-function = ;};uart2_data: uart2-data {samsung,pins = "gph-6", "gph-7";samsung,pin-function = ;};uart2_fctl: uart2-fctl {samsung,pins = "gph-6", "gph-7";samsung,pin-function = ;};extuart_clk: extuart-clk {samsung,pins = "gph-8";samsung,pin-function = ;};i2c0_bus: i2c0-bus {samsung,pins = "gpe-14", "gpe-15";samsung,pin-function = ;};spi0_bus: spi0-bus {samsung,pins = "gpe-11", "gpe-12", "gpe-13";samsung,pin-function = ;};sd0_clk: sd0-clk {samsung,pins = "gpe-5";samsung,pin-function = ;};sd0_cmd: sd0-cmd {samsung,pins = "gpe-6";samsung,pin-function = ;};sd0_bus1: sd0-bus1 {samsung,pins = "gpe-7";samsung,pin-function = ;};sd0_bus4: sd0-bus4 {samsung,pins = "gpe-8", "gpe-9", "gpe-10";samsung,pin-function = ;};/*添加Nand Flash所用的管脚*/nand_pinctrl: nand_pinctrl {samsung,pins = "gpa-17", "gpa-18", "gpa-19","gpa-20", "gpa-22";samsung,pin-function = <1>;};
View Code
文章插图
其中:
还可以选择性地指定应用于“,pins”属性中列出的所有引脚上的一个或多个引脚配置 。支持以下引脚配置属性:
更多信息可以参考:////-.txt 。
2.2. 引用
当一个 想引用某个"引脚配置节点"应该如何进行描述呢?一个典型的 tree中的外设节点定义如下:
device-node-name {.......pinctrl-names = "sleep", "active";pinctrl-0 = ; pinctrl-1 = ;};
其中-names属性和-%d属性格外重要 , 因为它们是内核设定的属性 , 我们下面来介绍;
(1) -names定义了一个state列表 , 那么什么是state呢?
- linux运行不了gnuplot,linux下安装Gnuplot
- FPC电子线路板自动焊锡机器人设备
- 选购自动焊锡设备的三大要点详解
- 【Shell 命令集合 扩展命令】Linux chgrp命令使用教程
- 手机Linux服务器,安装domoticz实现简单物联网
- 计算机设备问题代码43
- linux 内存回收机制
- 松树果子的功效与作用
- 在大兴安岭大树年轮较密的方向是
- 3.1过滤敏感词