!
!
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.c
void 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;
//从这里开始添加客户代码
}