一客户的GPIO调整涉及的代码更改

!

!

7688技术手册:
http://wiki.widora.cn/_media/mt7688_datasheet_v1_4.pdf

上电时候为GPIO状态而不是网口状态,uboot里需要修改如下寄存器:

  1. AGPIO_CFG 的BIT20----17均置1
    !

  2. GPIO2_MODE寄存器:
    !


    这个图里涉及到了P1_LED_AN_MODE和P2_LED_AN_MODE,状态该为1,即GPIO状态

  3. GPIO14,15,16,17,41,42均设置为输出,涉及到寄存器:
    !


    相应位置置1

  4. 根据外部电路连接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;
//从这里开始添加客户代码

	
}