飞腾处理器可能包含2个GPIO 模块,每个模块分成2组,每组有8个GPIO
0x000_28004000~0x000_28004FFF | 4KB | GPIO0 |
0x000_28005000~0x000_28005FFF | 4KB | GPIO1 |
1、UEFI引导模式下GPIO资源说明

说明:ACPI 只解析出了8+8 = 16个GPIO
从飞腾UEFI源码,可以分析到只开放了GPIO0和GPIO1的前8个GPIO,即 GPIO0_A0 - GPIO0_A7、GPIO1_A0 –GPIO1_A7,下面是ACPI关于GPIO的描述。
Scope(_SB)
{
Device(GPI0){ //GPI0
Name(_HID, "PHYT0001")
Name(_CID, "FTGP0001") /*compatible with v1.0 */
Name(_UID, 0)
Name (_CRS, ResourceTemplate () {
Memory32Fixed (ReadWrite, 0x28004000, 0x1000) // GPIO0 基地址
Interrupt(ResourceConsumer, Level,ActiveHigh, Exclusive) { 42 }
})
Device(GP00) {
Name(_UID,0)
Name (_DSD, Package () {
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package () {
Package () {"reg",0},
Package (){"snps,nr-gpios",8},
Package() {"nr-gpios",8}, //开放了前8个GPIO,即 GPIO0_A0 - GPIO0_A7
}
})
}
}
Device(GPI1) { // GPIO1
Name(_HID, "PHYT0001")
Name(_CID, "FTGP0001") /*compatible with v1.0 */
Name(_UID, 1)
Name (_CRS, ResourceTemplate () {
Memory32Fixed (ReadWrite, 0x28005000, 0x1000) // GPIO1 基地址
Interrupt(ResourceConsumer, Level,ActiveHigh, Exclusive) { 43 }
})
Device(GP00) {
Name(_UID, 0)
Name (_DSD, Package () {
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package ()
Package (){"reg",0},
Package (){"snps,nr-gpios",8},
Package () {"nr-gpios",8}, //开放了前8个GPIO, 即GPIO1_A0 –GPIO1_A7
}
})
}
}
}
2、Uboot引导模式下GPIO资源说明

说明:dtb解析出了 16+16 = 32个GPIO
Uboot采用dtb设备树的方式,以下是默认的dts源码:
/* 设备树描述:*/
gpio0: gpio@28004000 { //GPIO0
compatible = "phytium,gpio";
reg= <0x0 0x28004000 0x0 0x1000>;
interrupts = <GIC_SPI 10IRQ_TYPE_LEVEL_HIGH>;
gpio-controller;
#gpio-cells = <2>;
#address-cells = <1>;
#size-cells = <0>;
porta { // GPIO0_A
compatible = "phytium,gpio-port";
reg= <0>;
nr-gpios = <8>; //GPIO0_A0 - GPIO0_A7
};
portb { //GPIO0_B
compatible = "phytium,gpio-port";
reg= <1>;
nr-gpios = <8>; //GPIO0_B0 - GPIO0_B7
};
};
gpio1: gpio@28005000 { //GPIO1
compatible = "phytium,gpio";
reg= <0x0 0x28005000 0x0 0x1000>;
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller;
#gpio-cells = <2>;
#address-cells = <1>;
#size-cells = <0>;
porta { // GPIO1_A
compatible = "phytium,gpio-port";
reg= <0>;
nr-gpios = <8>; //GPIO1_A0 –GPIO1_A7
};
portb { // GPIO1_B
compatible = "phytium,gpio-port";
reg= <1>;
nr-gpios = <8>; //GPIO1_B0 –GPIO1_B7
};
};
本文详细介绍了飞腾D2000处理器在UEFI和Uboot引导模式下的GPIO资源配置。在UEFI模式下,ACPI解析出16个GPIO,而在Uboot模式下,通过dtb设备树解析出32个GPIO。内容涵盖GPIO0和GPIO1的使用情况。
4033

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



