一客户的GPIO调整涉及的代码更改
-
7688技术手册:
http://wiki.widora.cn/_media/mt7688_datasheet_v1_4.pdf上电时候为GPIO状态而不是网口状态,uboot里需要修改如下寄存器:
-
AGPIO_CFG 的BIT20----17均置1
-
GPIO2_MODE寄存器:
这个图里涉及到了P1_LED_AN_MODE和P2_LED_AN_MODE,状态该为1,即GPIO状态 -
GPIO14,15,16,17,41,42均设置为输出,涉及到寄存器:
相应位置置1 -
根据外部电路连接LED的状态,需要设置高低电平,涉及到寄存器:
-
-
Uboot方面修改:
因uboot的master分支已经做好了单口模式,剩下的仅仅需要将具体的修改添加到gpio_init函数里即可。
https://github.com/widora/u-boot-mt7688/blob/master/lib_mips/board.cvoid gpio_init(void) { u32 val; printf( "MT7688 gpio init : wled and wdt by mango\n" ); //set gpio2_mode 1:0=2b01 wled,p1,p2,p3,p4 is gpio.p0 is ephy val = 0x551; RALINK_REG(0xb0000634)=0x0f<<7; RALINK_REG(RT2880_SYS_CNTL_BASE+0x64)=val; //gpio44 output gpio_ctrl_1 bit3=1 val=RALINK_REG(RT2880_REG_PIODIR+0x04); val|=1<<12; RALINK_REG(RT2880_REG_PIODIR+0x04)=val; //set gpio1_mode 14=1b1 val=RALINK_REG(RT2880_SYS_CNTL_BASE+0x60); val|=1<<14; RALINK_REG(RT2880_SYS_CNTL_BASE+0x60)=val; //gpio38 input gpio_ctrl_1 bit5=0 val=RALINK_REG(RT2880_REG_PIODIR+0x04); val&=~1<<6; RALINK_REG(RT2880_REG_PIODIR+0x04)=val; //从这里开始添加客户代码 }