【linux】【设备树】具有 GPIO 控制器和连接器的硬件配置的备树(Device Tree)代码讲解
具有 GPIO 控制器和连接器的硬件配置的备树(Device Tree)代码讲解
背景
-学习Linux设备树
代码
soc {
soc_gpio1: gpio-controller1 {
#gpio-cells = <2>;
};
soc_gpio2: gpio-controller2 {
#gpio-cells = <2>;
};
};
connector: connector {
#gpio-cells = <2>;
gpio-map = <0 0 &soc_gpio1 1 0>,
<1 0 &soc_gpio2 4 0>,
<2 0 &soc_gpio1 3 0>,
<3 0 &soc_gpio2 2 0>;
gpio-map-mask = <0xf 0x0>;
gpio-map-pass-thru = <0x0 0x1>;
};
expansion_device {
reset-gpios = <&connector 2 GPIO_ACTIVE_LOW>;
};
代码讲解
- soc 节点
这个节点定义了两个 GPIO 控制器,soc_gpio1 和 soc_gpio2,每个控制器都有一个 #gpio-cells 属性:
soc_gpio1: gpio-controller1 和 soc_gpio2: gpio-controller2: 这两个节点代表两个不同的 GPIO 控制器。
#gpio-cells = <2>: 这个属性指定了每个 GPIO 的描述需要两个单元(通常是一个 GPIO 编号和一个标志)。
- connector 节点
这个节点定义了一个连接器,它将 GPIO 映射到不同的 GPIO 控制器上:
#gpio-cells = <2>: 这个属性与之前的 GPIO 控制器节点一致,表示每个 GPIO 描述需要两个单元。
gpio-map: 这个属性定义了 GPIO 映射的规则。每个条目表示一个 GPIO 映射:
<0 0 &soc_gpio1 1 0>: GPIO 0 映射到 soc_gpio1 控制器的 GPIO 1。
<1 0 &soc_gpio2 4 0>: GPIO 1 映射到 soc_gpio2 控制器的 GPIO 4。
<2 0 &soc_gpio1 3 0>: GPIO 2 映射到 soc_gpio1 控制器的 GPIO 3。
❤️ 0 &soc_gpio2 2 0>: GPIO 3 映射到 soc_gpio2 控制器的 GPIO 2。
gpio-map-mask: 这个属性指定了用于 GPIO 映射的掩码:
<0xf 0x0>: 这意味着只对前四个 GPIO 引脚应用映射规则。
gpio-map-pass-thru: 这个属性定义了 GPIO 的直通模式:
<0x0 0x1>: 这表示仅对 GPIO 1 启用直通模式。
3. expansion_device 节点
这个节点定义了一个扩展设备,使用连接器中的 GPIO 进行复位控制:
reset-gpios: 这个属性定义了设备的复位 GPIO:
<&connector 2 GPIO_ACTIVE_LOW>: 这表示使用 connector 节点中的第 2 个 GPIO,且该 GPIO 在低电平时有效 (GPIO_ACTIVE_LOW)。
总结
这段代码配置了两个 GPIO 控制器,并通过 connector 节点将这些控制器的 GPIO 通过映射规则连接起来。expansion_device 节点使用 connector 节点中的一个 GPIO 来控制设备的复位。此配置允许灵活地管理 GPIO,并且能够适配不同的 GPIO 控制器和设备需求。
原文地址:https://blog.csdn.net/a72944392/article/details/140698192
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!