gpio2: gpio@fec30000 {
compatible = "rockchip,gpio-bank";
reg = <0x0 0xfec30000 0x0 0x100>;
interrupts = <GIC_SPI 279 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>;
};
这段设备树(Device Tree)代码描述了一个名为gpio2的GPIO(通用输入输出)控制器设备,它属于Rockchip(瑞芯微)平台的一部分。下面是对这段代码各部分的详细解释:
-
gpio@fec30000:这是GPIO控制器的节点名,@fec30000表示该设备在内存中的基地址为0xfec30000。 -
compatible = "rockchip,gpio-bank";:这一行指定了设备的兼容性字符串,表明这是一个Rockchip平台的GPIO bank(GPIO组)。 -
reg = <0x0 0xfec30000 0x0 0x100>;:这一行定义了设备的寄存器地址范围。0x0和0xfec30000是寄存器地址的开始,0x0和0x100表示寄存器大小是256字节(0x100)。 -
interrupts = <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>;:这一行定义了设备使用的中断。GIC_SPI指的是通用中断控制器(Generic Interrupt Controller)的SPI(Shared Peripheral Interrupt)中断类型,279是中断号,IRQ_TYPE_LEVEL_HIGH表示这是一个电平触发的高电平中断。 -
clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;:这一行指定了GPIO控制器所需的时钟。&cru是对时钟控制单元(Clock Reset Unit)的引用,PCLK_GPIO2和DBCLK_GPIO2分别是GPIO2的外设时钟和调试时钟。 -
gpio-controller;:这一行表明这个节点是一个GPIO控制器。 -
#gpio-cells = <2>;:这一行指定了每个GPIO引脚配置所需的单元数量。这里是2,意味着每个GPIO的配置需要两个32位单元(通常是地址和数据)。 -
gpio-ranges = <&pinctrl 0 64 32>;:这一行定义了GPIO引脚的范围和它们如何映射到pinctrl(引脚控制)系统中。&pinctrl是对引脚控制器节点的引用,0 64表示从第0个引脚开始,共有64个引脚,32表示这些引脚被组织成32个GPIO。 -
interrupt-controller;:这一行表明这个节点也是一个中断控制器。 -
#interrupt-cells = <2>;:这一行指定了定义中断时所需的单元数量。这里是2,通常意味着需要两个32位单元来指定中断号和中断类型/配置。
综上所述,这段代码定义了一个位于0xfec30000地址,具有256字节寄存器空间,使用中断号279,需要两个时钟信号,支持64个GPIO引脚(组织成32个GPIO),并且具有中断控制器功能的Rockchip GPIO控制器。
412

被折叠的 条评论
为什么被折叠?



