在上电阶段将复用的GPIO1_30引脚电平状态拉低
1、在uboot的板级网络初始化函数中添加GPIO的定义
vim flexbuild/packages/firmware/u-boot/board/freescale/ls1046ardb/eth.c
分析:
IRQ_BASE在设置引脚功能时,每一个脚都是独立的,设置哪一个引脚便把哪一位设置为1,IRQ3-11可做GPIO,分别对应GPIO23-31,
23 24 25 26 27 28 29 30 31
0 0 0 0 0 0 0 1 0
转换为十六进制:0X2
添加GPIO的方向、GPIO的初始化为低电平
#define GPIO1_30CH 0X2
//modify in Aug 10
unsigned int val;
struct ccsr_gpio *pgpio1 = (void *)(0x2300000);
val = in_be32(&pgpio1->gpdir);
setbits_be32(&pgpio1->gpdir, val | GPIO1_30CH);
val = in_be32(&pgpio1->gpdat);
setbits_be32(&pgpio1->gpdat, val & !GPIO1_30CH);
保存退出;
2、在RCW中将GPIO1_30复用为GPIO
vim flexbuild/packages/firmware/rcw/ls1046ardb/FORLINX/rcw_1800_qspiboot_1133_5a59.rcw
--- a/OK10xx-linux-fs/flexbuild/packages/firmware/rcw/ls1046ardb/FORLINX/rcw_1800_qspiboot_1133_5a59.rcw
+++ b/OK10xx-linux-fs/flexbuild/packages/firmware/rcw/ls1046ardb/FORLINX/rcw_1800_qspiboot_1133_5a59.rcw
@@ -90,8 +90,10 @@ UART_BASE=7
IFC_GRP_A_EXT=1
IFC_GRP_E1_EXT=2
IFC_GRP_F_EXT=1
IRQ_OUT=1
-IRQ_BASE=101
+IRQ_BASE=103
IRQ_EXT=0
TVDD_VSEL=0
DVDD_VSEL=2
编译firmware:
root@ubuntu:~/work/OK10xx-linux-fs/flexbuild$ flex-builder -c firmware -a arm64 -m ls1046ardb -b qspi -S 1133
生成镜像:
root@ubuntu:~/work/OK10xx-linux-fs/flexbuild$ flex-builder -i mkfw -a arm64 -m ls1046ardb -b qspi -S 1133