Example #1
0
void mt_gpio_set_default_chip(void)
{
    GPIO_REGS *pReg = (GPIO_REGS*)(GPIO_BASE);
    unsigned int idx;
    u32 val;
    
    for (idx = 0; idx < sizeof(pReg->dir)/sizeof(pReg->dir[0]); idx++){
		val = gpio_init_dir_data[idx];
        GPIO_WR32(&pReg->dir[idx],val);
    }
    
    for (idx = 0; idx < sizeof(pReg->pullen)/sizeof(pReg->pullen[0]); idx++){
		val = gpio_init_pullen_data[idx];
		GPIO_WR32(&pReg->pullen[idx],val);
    }
    
    for (idx = 0; idx < sizeof(pReg->pullsel)/sizeof(pReg->pullsel[0]); idx++){ 
		val = gpio_init_pullsel_data[idx];
		GPIO_WR32(&pReg->pullsel[idx],val);
    }
	/*for keypad special register*/
	mt_set_gpio_pull_select(GPIO74, GPIO74_PULL);
	mt_set_gpio_pull_select(GPIO75, GPIO75_PULL);
	mt_set_gpio_pull_select(GPIO92, GPIO92_PULL);
	mt_set_gpio_pull_select(GPIO93, GPIO93_PULL);
	mt_set_gpio_pull_select(GPIO167, GPIO167_PULL);
	mt_set_gpio_pull_select(GPIO168, GPIO168_PULL);
    
    for (idx = 0; idx < sizeof(pReg->dout)/sizeof(pReg->dout[0]); idx++) {
		val = gpio_init_dout_data[idx];
        GPIO_WR32(&pReg->dout[idx],val);
    }
    
    for (idx = 0; idx < sizeof(pReg->mode)/sizeof(pReg->mode[0]); idx++) {
		val = gpio_init_mode_data[idx];
		GPIO_WR32(&pReg->mode[idx],val);
    }

	for (idx = 0; idx < sizeof(pReg->smt)/sizeof(pReg->smt[0]); idx++) {
		val = gpio_init_smt_data[idx];
		GPIO_WR32(&pReg->smt[idx],val);
    }
	/*for msdc special smt */
	mt_set_gpio_smt(GPIO_SMT_GRP25, GPIO_SMT_GROUP_25); 
	mt_set_gpio_smt(GPIO_SMT_GRP26, GPIO_SMT_GROUP_26); 
	mt_set_gpio_smt(GPIO_SMT_GRP27, GPIO_SMT_GROUP_27); 
	mt_set_gpio_smt(GPIO_SMT_GRP28, GPIO_SMT_GROUP_28); 
	mt_set_gpio_smt(GPIO_SMT_GRP29, GPIO_SMT_GROUP_29); 
	mt_set_gpio_smt(GPIO_SMT_GRP30, GPIO_SMT_GROUP_30); 
	mt_set_gpio_smt(GPIO_SMT_GRP31, GPIO_SMT_GROUP_31); 
	mt_set_gpio_smt(GPIO_SMT_GRP32, GPIO_SMT_GROUP_32); 
	mt_set_gpio_smt(GPIO_SMT_GRP33, GPIO_SMT_GROUP_33); 

	//set BSI driving 2ma->4ma: 0x10005B30[7:4]=0x2
	GPIO_WR32(&pReg->drv_mode[3].set, 0x20);
    
    GPIOVER("mt_gpio_set_default() done\n");        
}
static void md_gpio_set(GPIO_PIN pin, GPIO_MODE mode, GPIO_DIR dir,
			GPIO_OUT out, GPIO_PULL_EN pull_en, GPIO_PULL pull,
			GPIO_SMT smt)
{
	mt_set_gpio_mode(pin, mode);
	if (dir != GPIO_DIR_UNSUPPORTED)
		mt_set_gpio_dir(pin, dir);

	if (dir == GPIO_DIR_OUT)
		mt_set_gpio_out(pin, out);

	if (dir == GPIO_DIR_IN)
		mt_set_gpio_smt(pin, smt);
	if (pull_en != GPIO_PULL_EN_UNSUPPORTED) {
		mt_set_gpio_pull_enable(pin, pull_en);
		mt_set_gpio_pull_select(pin, pull);
	}
	md_gpio_get(pin, "-");
}