void mt_gpio_dump_diff(UINT32 pre, UINT32 cur)
{
#if defined(GPIO_INIT_DEBUG)
    int idx;

    GPIOVER("------ dumping difference between %p and %p ------\n", &pre, &cur);
    for (idx = 0; idx < sizeof(pre); idx++) {
        if (pre != cur)
            GPIOVER("diff: raw[%2d]    : 0x%08X <=> 0x%08X\n", idx, pre, cur);
    }

    //GPIOVER("memcmp(%p, %p, %d) = %d\n", p, q, sizeof(*pre), memcmp(p, q, sizeof(*pre)));
    GPIOVER("------ dumping difference end --------------------------------\n");
#endif
}
Exemple #2
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");        
}
Exemple #3
0
void mt_gpio_set_dsel(u8 bpi_1v8)
{
    GPIO_REGS *pReg = (GPIO_REGS*)(GPIO_BASE);
	
	if (bpi_1v8 == GPIO_VIO18) {
		/*bpi_ctrl[9:4] = b`000000, [3:0] = b`0000*/
		GPIO_WR32(&pReg->bpi_ctrl[0].rst, 0x3FF);
	} else if (bpi_1v8 == GPIO_VIO28){
		/*bpi_ctrl[9:4] = b`001100, [3:0] = b`0101*/
		GPIO_WR32(&pReg->bpi_ctrl[0].set, 0xC5);
		GPIO_WR32(&pReg->bpi_ctrl[0].rst, 0x33A);
	}

	GPIOVER("BPI 0x%x\n",GPIO_RD32(&pReg->bpi_ctrl[0].val)); 		
}	
Exemple #4
0
/*----------------------------------------------------------------------------*/
void mt_gpio_dump_diff(GPIO_REGS* pre, GPIO_REGS* cur)
{
#if defined(GPIO_INIT_DEBUG)        
    GPIO_REGS *pReg = (GPIO_REGS*)(GPIO_BASE);
	unsigned int idx;
    unsigned char* p = (unsigned char*)pre;
    unsigned char* q = (unsigned char*)cur;
    
    GPIOVER("------ dumping difference between %p and %p ------\n", pre, cur);
    for (idx = 0; idx < sizeof(pReg->dir)/sizeof(pReg->dir[0]); idx++) {
        if (pre->dir[idx].val != cur->dir[idx].val)
            GPIOVER("diff: dir[%2d]    : 0x%08X <=> 0x%08X\n", idx, pre->dir[idx].val, cur->dir[idx].val);
    }
    for (idx = 0; idx < sizeof(pReg->pullen)/sizeof(pReg->pullen[0]); idx++) {
        if (pre->pullen[idx].val != cur->pullen[idx].val)
            GPIOVER("diff: pullen[%2d] : 0x%08X <=> 0x%08X\n", idx, pre->pullen[idx].val, cur->pullen[idx].val);
    }
    for (idx = 0; idx < sizeof(pReg->pullsel)/sizeof(pReg->pullsel[0]); idx++) {
        if (pre->pullsel[idx].val != cur->pullsel[idx].val)
            GPIOVER("diff: pullsel[%2d]: 0x%08X <=> 0x%08X\n", idx, pre->pullsel[idx].val, cur->pullsel[idx].val);
    }
    for (idx = 0; idx < sizeof(pReg->dout)/sizeof(pReg->dout[0]); idx++) {
        if (pre->dout[idx].val != cur->dout[idx].val)
            GPIOVER("diff: dout[%2d]   : 0x%08X <=> 0x%08X\n", idx, pre->dout[idx].val, cur->dout[idx].val);
    }
    for (idx = 0; idx < sizeof(pReg->mode)/sizeof(pReg->mode[0]); idx++) {
        if (pre->mode[idx].val != cur->mode[idx].val)
            GPIOVER("diff: mode[%2d]   : 0x%08X <=> 0x%08X\n", idx, pre->mode[idx].val, cur->mode[idx].val);
    }
    
    for (idx = 0; idx < sizeof(*pre); idx++) {
        if (p[idx] != q[idx])
            GPIOVER("diff: raw[%2d]: 0x%02X <=> 0x%02X\n", idx, p[idx], q[idx]);
    }
    GPIOVER("memcmp(%p, %p, %d) = %d\n", p, q, sizeof(*pre), memcmp(p, q, sizeof(*pre)));
    GPIOVER("------ dumping difference end --------------------------------\n");
#endif 
}
void mt_gpio_set_default_ext(void)
{
#if 0
	GPIOEXT_REGS *pReg = (GPIOEXT_REGS*)(GPIOEXT_BASE);
    int idx;
    u32 val;

    for (idx = 0; idx < sizeof(pReg->dir)/sizeof(pReg->dir[0]); idx++){
		val = gpioext_init_dir_data[idx];
        GPIOEXT_WR(&pReg->dir[idx],val);
    }

    for (idx = 0; idx < sizeof(pReg->pullen)/sizeof(pReg->pullen[0]); idx++){
		val = gpioext_init_pullen_data[idx];
        GPIOEXT_WR(&pReg->pullen[idx],val);
    }

    for (idx = 0; idx < sizeof(pReg->pullsel)/sizeof(pReg->pullsel[0]); idx++){
		val = gpioext_init_pullsel_data[idx];
        GPIOEXT_WR(&pReg->pullsel[idx],val);
    }

    for (idx = 0; idx < sizeof(pReg->dinv)/sizeof(pReg->dinv[0]); idx++) {
		val = gpioext_init_dinv_data[idx];
        GPIOEXT_WR(&pReg->dinv[idx],val);
    }

    for (idx = 0; idx < sizeof(pReg->dout)/sizeof(pReg->dout[0]); idx++) {
		val = gpioext_init_dout_data[idx];
        GPIOEXT_WR(&pReg->dout[idx],val);
    }

    for (idx = 0; idx < sizeof(pReg->mode)/sizeof(pReg->mode[0]); idx++) {
		val = gpioext_init_mode_data[idx];
        GPIOEXT_WR(&pReg->mode[idx],val);
    }

    GPIOVER("mt_gpio_set_default_ext() done\n");
#endif
}
void mt_gpio_set_dsel(u8 nml2_1v8,u8 bsi_1v8,u8 bpi_1v8)
{
#if 0
	u32 mask;
	u32 val;
	u32 bit;
#define TDSEL_1V8 0x0
#define TDSEL_3V3 0x5
#define RDSEL_1V8 0x0
#define RDSEL_3V3 0xC
#define GPIO_NML2_OFFSET 0x730
#define GPIO_NML2_PWMR_OFFSET 0x740
#define GPIO_BSI_OFFSET 0x750
#define GPIO_BPI_OFFSET 0x740
	//set NML2 UART
	val = GPIO_RD32(GPIO_BASE + GPIO_NML2_OFFSET);
	mask = (1L << 4) - 1;
	bit = 8;
	val &= ~(mask << (bit));
	val |= (nml2_1v8?TDSEL_1V8:TDSEL_3V3)<<bit;
	GPIO_WR32(GPIO_BASE + GPIO_NML2_OFFSET, val);

	val = GPIO_RD32(GPIO_BASE + GPIO_NML2_OFFSET);
	mask = (1L << 6) - 1;
	bit = 16;
	val &= ~(mask << (bit));
	val |= (nml2_1v8?RDSEL_1V8:RDSEL_3V3)<<bit;
	GPIO_WR32(GPIO_BASE + GPIO_NML2_OFFSET, val);

	//set NML2 PWM
	val = GPIO_RD32(GPIO_BASE + GPIO_NML2_OFFSET);
	mask = (1L << 4) - 1;
	bit = 24;
	val &= ~(mask << (bit));
	val |= (nml2_1v8?TDSEL_1V8:TDSEL_3V3)<<bit;
	GPIO_WR32(GPIO_BASE + GPIO_NML2_OFFSET, val);

	val = GPIO_RD32(GPIO_BASE + GPIO_NML2_PWMR_OFFSET);
	mask = (1L << 6) - 1;
	bit = 0;
	val &= ~(mask << (bit));
	val |= (nml2_1v8?RDSEL_1V8:RDSEL_3V3)<<bit;
	GPIO_WR32(GPIO_BASE + GPIO_NML2_PWMR_OFFSET, val);

	//set BPI
	val = GPIO_RD32(GPIO_BASE + GPIO_BPI_OFFSET);
	mask = (1L << 4) - 1;
	bit = 8;
	val &= ~(mask << (bit));
	val |= (bpi_1v8?TDSEL_1V8:TDSEL_3V3)<<bit;
	GPIO_WR32(GPIO_BASE + GPIO_BPI_OFFSET, val);

	val = GPIO_RD32(GPIO_BASE + GPIO_BPI_OFFSET );
	mask = (1L << 6) - 1;
	bit = 16;
	val &= ~(mask << (bit));
	val |= (bpi_1v8?RDSEL_1V8:RDSEL_3V3)<<bit;
	GPIO_WR32(GPIO_BASE + GPIO_BPI_OFFSET, val);

	//set BSI
	val = GPIO_RD32(GPIO_BASE + GPIO_BSI_OFFSET);
	mask = (1L << 4) - 1;
	bit = 0;
	val &= ~(mask << (bit));
	val |= (bsi_1v8?TDSEL_1V8:TDSEL_3V3)<<bit;
	GPIO_WR32(GPIO_BASE + GPIO_BSI_OFFSET, val);

	val = GPIO_RD32(GPIO_BASE + GPIO_BSI_OFFSET );
	mask = (1L << 6) - 1;
	bit = 8;
	val &= ~(mask << (bit));
	val |= (bsi_1v8?RDSEL_1V8:RDSEL_3V3)<<bit;
	GPIO_WR32(GPIO_BASE + GPIO_BSI_OFFSET, val);
	GPIOVER("NML2 0x%x,BPI 0x%x, BSI 0x%x\n",GPIO_RD32(GPIO_BASE + GPIO_NML2_OFFSET),GPIO_RD32(GPIO_BASE + GPIO_BPI_OFFSET),GPIO_RD32(GPIO_BASE + GPIO_BSI_OFFSET));
#endif
}