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


  • administrators

    0_1536716788116_WangWang20180912094551.jpg

    0_1536716792810_WangWang20180912094548.jpg

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

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

    1. AGPIO_CFG 的BIT20----17均置1
      0_1536716847668_屏幕快照 2018-09-12 上午9.45.10.png

    2. GPIO2_MODE寄存器:
      0_1536716938682_屏幕快照 2018-09-12 上午9.48.52.png
      这个图里涉及到了P1_LED_AN_MODE和P2_LED_AN_MODE,状态该为1,即GPIO状态

    3. GPIO14,15,16,17,41,42均设置为输出,涉及到寄存器:
      0_1536717097891_屏幕快照 2018-09-12 上午9.51.27.png
      相应位置置1

    4. 根据外部电路连接LED的状态,需要设置高低电平,涉及到寄存器:
      0_1536717151137_屏幕快照 2018-09-12 上午9.52.23.png


  • administrators

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

Log in to reply