Qualcomm 平台bootloader讀取GPIO數值方法

embedded linux平台GPIO數值在filesystem下設定或讀取方法較為人知,但在debug或產測等等需要時效的情況,往往選擇在bootloader檢查GPIO狀態,但卻又不知道如何讀,以下分享如何在bootloader讀取GPIO狀態的方法。 

開始之前需要先找到想讀取的GPIO對應的腳位編號可以參考平台的pin assignment文件,例如QCS40X就是qcs40x_gpio_pin_assignment_spreadsheet.pdf  如下圖 





以下一些高通常見架構GPIO讀取方法 


Qualcomm平台的uboot : 

 #include <asm/arch-ipq40xx/iomap.h> 

/* this include is depend on platform */

unsigned int gpio; // gpio number

unsigned int val;


gpio = 13; //GPIO_13



//其中val為該gpio的狀態(0或1)

val = readl((unsigned int *)GPIO_IN_OUT_ADDR(gpio));

  

Qualcomm平台的little kernel: 

#include <dev/gpio.h> 



unsigned int gpio; // gpio number

unsigned int val;


gpio = 14; //GPIO_14



//其中val為該gpio的狀態(0或1)

val = get_gpio(gpio);

  

Qualcomm平台的edk2: 

#include <Protocol/EFITlmm.h> 



EFI_STATUS Status;

UINT32 val;

UINT32 gpio; //gpio number



gpio = 15; //GPIO_15



//其中val為該gpio的狀態(0或1)

Status = TLMMProtocol->GpioIn((UINT32)gpio, &val);

DEBUG((EFI_D_INFO, “GPIO %d : %d\n”, gpio, val));

 

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能