飞腾D2000 GPIO配置笔记

本文详细介绍了飞腾D2000处理器在UEFI和Uboot引导模式下的GPIO资源配置。在UEFI模式下,ACPI解析出16个GPIO,而在Uboot模式下,通过dtb设备树解析出32个GPIO。内容涵盖GPIO0和GPIO1的使用情况。

飞腾处理器可能包含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
 };
};

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值