本文主要適用于飛凌 OKT507-C 平臺 Linux4.9.170 操作系統,其他平臺也可以參考,但是不同平臺之間會存在差異,需客戶自行修改以適應自己的使用。
	如果您需要在 uboot 階段設置 GPIO 輸出高低電平,可以在設備樹中進行配置,可參考飛凌的 LVDS的電源引腳。
	
 
	目前支持 gpio0-gpio31 共計 32 個引腳進行配置。關于 pinctrl 的含義請參考網盤資料\原廠資料目錄的《T507_pinctrl 接口使用說明文檔.pdf》。
	二、內核階段的 GPIO 配置方法 
	以用于 UA
RT5_TX 的 PH2 引腳為例,做一下 gpio 配置的介紹。
 
	1、關閉所使用引腳默認配置的功能: 
	修改設備樹,將 PH2 原功能關閉后,該引腳可用作普通 GPIO。
	vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi
 
	vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1.dtsi
 
	2、測試方法 
	計算 gpio 對應引腳的數值=(n-1)*32+x
	(設 A 為 1,B 為 2,以此類推,PH2 中 H 對應的是 8,x 表示 2)
	PH2 對應的數值為:(8-1)x32+2=226
	
?PH2 設置為輸出: 
	echo 226 > /sys/class/gpio/export
	echo out > /sys/class/gpio/gpio226/direction
	echo 1 > /sys/class/gpio/gpio226/value    //此時用萬用表測 PH2 引腳的電壓,應該為高電平
	echo 0 > /sys/class/gpio/gpio226/value    //此時用萬用表測 PH2 引腳的電壓,應該為低電平
	
?PH2 設置為輸入: 
	echo 226 > /sys/class/gpio/export
	echo in > /sys/class/gpio/gpio226/direction    //設置為輸入模式
	
?系統取消導出: 
	echo 226 > /sys/class/gpio/unexport
	三、去掉 io 擴展芯片并保留擴展引腳功能的實現 
 
	擴展芯片上的 io 口被 wifi、藍牙、mipi 攝像頭 tp2854、dvp 攝像頭和 lineout 口電源使能引腳引用,若想保留這些功能,就要把這些引腳復用到
核心板的引腳。
 
	本文以選用開發板上 lcd 所用引腳為例,用戶可根據自己的實際情況選擇。關閉所用引腳使用的功能,將其配置到所用功能的設備樹中。方法參考如下:
	1、選用引腳 
 
	2、關掉 gpio_ext 及復用引腳原來功能 
	修改設備樹,將 lcd 功能關閉后,該組引腳可用作普通 GPIO。
	vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C Common.dtsi
	
2.1 關掉 io 擴展芯片功能 
	因為擴展芯片已經拆除,所以要關掉擴展芯片節點
 
	
2.2 關閉需要復用引腳功能 
	關閉 lcd 功能,本文以選用 lcd 上的引腳用作功能復用,用戶需根據實際情況關閉所用引腳功能。
	lcd_used 改為 0
 
	Lcd0 節點添加 status = “disabled”;
 
	3、更改設備節點中引用的 gpio 
	
3.1 mipi-5640 引腳配置 
	vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi
 
	
3.2 TP2854 引腳配置 
	vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common-TP2854M.dtsi
 
	注意:mipi5640 和 tp2854 共用一個 mipi 接口,兩個功能都用到了 MIPI_PWRDN 引腳,實際使用時只能選擇一種功能,因此本文在兩個功能測試時選的同一個引腳。
	
3.3 dvp-5640 引腳配置 
	
 
	
3.4 wifi 引腳配置 
 
	
3.5 藍牙引腳配置 
	
 
	
3.6 音頻引腳 
 
	
4、測試方法 
	測試方法參考《OKT507-C_Linux_用戶使用手冊》。
	四、OKT507 增加 GPIO 按鍵 
	本文添加了兩個 GPIO 按鍵,以 PE5、PE6 兩個引腳為例,引腳選擇可參考用戶資料中的《FETT507-C引腳復用對照表.xlsx》。
	1、GPIO 按鍵添加方法 
	
1.1 添加內核配置 
	注意:
	客戶在進行配置前,需要對
	OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/configs/sun50iw9p1smp_longan_defconfig 文件提前做好備份。
	vi OKT507-linux-sdk/kernel/linux-4.9/.config
 
	
1.2 添加 key 節點 
	vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi
 
	其中按鍵鍵值設置如下。
 
	相關鍵值可通過查看 input-event-codes.h 確定。
	vi OKT507-linux-sdk/kernel/linux-4.9/include/uapi/linux/input-event-codes.h
 
	
 
	
1.3 添加引腳定義 
	vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi
	
 
	
1.4 關閉沖突功能 
	vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi
 
	
 
	vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi
 
	
1.5 驅動修改 
	vi OKT507-linux-sdk/kernel/linux-4.9/drivers/input/keyboard/gpio_keys.c
 
	
 
	
 
	
 
	2、測試方法 
	終端窗口輸入 evtest,選擇 7
 
	本文所提供的所有服務內容旨在協助用戶加速產品的研發進度,在服務過程中所提供的任何程序、文檔、測試結果、
方案、支持等資料和信息,都僅供參考,用戶有權不使用或自行參考修改,不提供任何的完整性、可靠性等保證,若在用戶使用過程中因任何原因造成的特別的、偶然的或間接的損失,本公司不承擔任何責任。