RK3568技术笔记十八 Linux GPIO驱动程序中设备树分析

这段代码是RK3568芯片的设备树(Device Tree)片段,用于描述GPIO控制器的配置。

pinctrl: pinctrl {

compatible = "rockchip,rk3568-pinctrl"; // 兼容性字符串,指定此设备树节点适用于RK3568的引脚控制器

rockchip,grf = <&grf>; // 引用通用寄存器(GRF)

rockchip,pmu = <&pmugrf>; // 引用GPIO控制寄存器

#address-cells = <2>; // 指定地址长度的位数为32x2,也就是64位地址

#size-cells = <2>; // 指定每个地址的长度是32x2,也就是64位长度

ranges; // 指定地址映射范围

gpio0: gpio@fdd60000 { // GPIO控制器0的描述,0xfdd60000是GPIO0的起始地址,这是从RK3568TRM里面截图出来的信息,一一对应了。

compatible = "rockchip,gpio-bank"; // 兼容性字符串,指定这是Rockchip GPIO控制器,为了通配GPIO

reg = <0x0 0xfdd60000 0x0 0x100>; // 寄存器地址和大小

interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; // 中断配置

clocks = <&pmucru PCLK_GPIO0>, <&pmucru DBCLK_GPIO0>; // 时钟源配置

gpio-controller; // 标识这是一个GPIO控制器

#gpio-cells = <2>; // 每个GPIO单元的属性位数(标识和偏移)

gpio-ranges = <&pinctrl 0 0 32>; // GPIO范围配置

interrupt-controller; // 标识这是一个中断控制器

#interrupt-cells = <2>; // 每个中断单元的属性位数

};

cpp 复制代码
gpio1: gpio@fe740000 {
		compatible = "rockchip,gpio-bank";
		reg = <0x0 0xfe740000 0x0 0x100>;
		interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;

		gpio-controller;
		#gpio-cells = <2>;
		gpio-ranges = <&pinctrl 0 32 32>;
		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpio2: gpio@fe750000 {
		compatible = "rockchip,gpio-bank";
		reg = <0x0 0xfe750000 0x0 0x100>;
		interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;

		gpio-controller;
		#gpio-cells = <2>;
		gpio-ranges = <&pinctrl 0 64 32>;
		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpio3: gpio@fe760000 {
		compatible = "rockchip,gpio-bank";
		reg = <0x0 0xfe760000 0x0 0x100>;
		interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;

		gpio-controller;
		#gpio-cells = <2>;
		gpio-ranges = <&pinctrl 0 96 32>;
		interrupt-controller;
		#interrupt-cells = <2>;
	};
相关推荐
HLC++11 小时前
Linux的进程间通信
android·linux·服务器
遇乐的果园12 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
华清远见IT开放实验室13 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
遇乐的果园13 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习
摇滚侠14 小时前
Java 全栈开发实战教程 课程笔记 29-33
笔记
AI的探索之旅15 小时前
AI辅助原理图评审:电源去耦、BOOT引脚、VCAP——19项逐一核查,遗漏?不存在的
人工智能·vscode·嵌入式硬件
茯苓gao15 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统
笔记·嵌入式硬件·学习
GeekArch15 小时前
第24讲:Vibe模式代码风格控制——适配Keil/STM32工程规范
人工智能·stm32·单片机·嵌入式硬件·mcu·决策树·ai编程
groundhappy15 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
whyTeaFo15 小时前
GAMES101: Lecture 9: Shading 3(Texture Mapping cont.) ppt笔记
笔记