Exemplo n.º 1
0
/*
************************************************************************************************************
*
*                                             function
*
*    函数名称:
*
*    参数列表:
*
*    返回值  :
*
*    说明    :
*
*
************************************************************************************************************
*/
int standby_axp_output_control(int onoff)
{
//	int  i;
//	__u8 int_reg;

	if(!onoff)
	{
		//store
		if(standby_axp_i2c_read(AXP22_ADDR, BOOT_POWER22_OUTPUT_CTL1, output_control + 0))
	    {
	        return -1;
	    }
		if(standby_axp_i2c_read(AXP22_ADDR, BOOT_POWER22_OUTPUT_CTL2, output_control + 1))
	    {
	        return -1;
	    }
	    //eGon2_printf("read %x\n", *(__u32 *)output_control);
	    //close
	    if(standby_axp_i2c_write(AXP22_ADDR, BOOT_POWER22_OUTPUT_CTL1, 0xBB))
	    {
	        return -1;
	    }
		if(standby_axp_i2c_write(AXP22_ADDR, BOOT_POWER22_OUTPUT_CTL2, 0))
	    {
	        return -1;
	    }
	    //降低电压,dcdc3->1.0v, dcdc4->1.0v
	    standby_axp_set_dcdc3(1000);
	    standby_axp_set_dcdc4(1000);
	}
	else
	{
		//restore
		standby_axp_set_dcdc3(-1);
		standby_axp_set_dcdc4(-1);
		//eGon2_printf("write %x\n", *(__u32 *)output_control);
		if(standby_axp_i2c_write(AXP22_ADDR, BOOT_POWER22_OUTPUT_CTL1, output_control[0]))
	    {
	        return -1;
	    }
	    if(standby_axp_i2c_write(AXP22_ADDR, BOOT_POWER22_OUTPUT_CTL2, output_control[1]))
	    {
	        return -1;
	    }
	}

	return 0;
}
Exemplo n.º 2
0
static int standby_axp_set_dcdc4(int set_vol)
{
    u8   reg_value;

	if(set_vol > 0)
	{
		if(set_vol < 600)
		{
			set_vol = 600;
		}
		else if(set_vol > 1540)
		{
			set_vol = 1540;
		}
		if(standby_axp_i2c_read(AXP22_ADDR, BOOT_POWER22_DC4OUT_VOL, &reg_value))
	    {
	        return -1;
	    }
	    sys_vcc = reg_value;
	    reg_value &= 0xC0;
	    reg_value |= (set_vol - 600)/20;
	}
	else
	{
		reg_value = cpu_vcc;
	}
	if(standby_axp_i2c_write(AXP22_ADDR, BOOT_POWER22_DC4OUT_VOL, reg_value))
	{
		return -1;
	}

	return 0;
}
Exemplo n.º 3
0
/*
************************************************************************************************************
*
*                                             function
*
*    函数名称:
*
*    参数列表:
*
*    返回值  :
*
*    说明    :
*
*
************************************************************************************************************
*/
__s32 standby_axp_int_query(__u8 *int_status)
{
	int   i;
	int   ret;
	__u8  int_reg = BOOT_POWER22_INTSTS1;

	ret = -1;
	*(volatile unsigned int *)(0x01f00c00 + 0x10) |= 1;
	for(i=0;i<5;i++)
	{
		if(standby_axp_i2c_read(AXP22_ADDR, int_reg + i, &int_status[i]))
	    {
	        goto __standby_axp_int_query_err;
	    }
	    if(standby_axp_i2c_write(AXP22_ADDR, int_reg + i, 0xff))
	    {
	        goto __standby_axp_int_query_err;
	    }
	}
	ret = 0;

__standby_axp_int_query_err:
	standby_gic_clear_pengding();

	return ret;
}
Exemplo n.º 4
0
/*
************************************************************************************************************
*
*                                             function
*
*    函数名称:
*
*    参数列表:
*
*    返回值  :
*
*    说明    :
*
*
************************************************************************************************************
*/
int standby_axp_probe_power_exist(void)
{
	u8 reg_value;

	if(standby_axp_i2c_read(AXP22_ADDR, BOOT_POWER22_STATUS, &reg_value))
    {
        return -1;
    }

    return (reg_value & 0x50);
}
int standby_axp_output_control(int onoff)
{
#if 0
	if(!onoff)
	{
		//store
		if(standby_axp_i2c_read(AXP22_ADDR, BOOT_POWER22_OUTPUT_CTL1, output_control + 0))
	    {
	        return -1;
	    }
		if(standby_axp_i2c_read(AXP22_ADDR, BOOT_POWER22_OUTPUT_CTL2, output_control + 1))
	    {
	        return -1;
	    }
	    //eGon2_printf("read %x\n", *(__u32 *)output_control);
	    //close
	    if(standby_axp_i2c_write(AXP22_ADDR, BOOT_POWER22_OUTPUT_CTL1, 0x3B))
	    {
	        return -1;
	    }
		if(standby_axp_i2c_write(AXP22_ADDR, BOOT_POWER22_OUTPUT_CTL2, 0))
	    {
	        return -1;
	    }
	}
	else
	{
		//restore
		//eGon2_printf("write %x\n", *(__u32 *)output_control);
		if(standby_axp_i2c_write(AXP22_ADDR, BOOT_POWER22_OUTPUT_CTL1, output_control[0]))
	    {
	        return -1;
	    }
	    if(standby_axp_i2c_write(AXP22_ADDR, BOOT_POWER22_OUTPUT_CTL2, output_control[1]))
	    {
	        return -1;
	    }
	}
#endif
	return 0;
}
Exemplo n.º 6
0
/*
************************************************************************************************************
*
*                                             function
*
*    函数名称:
*
*    参数列表:
*
*    返回值  :
*
*    说明    :
*
*
************************************************************************************************************
*/
int standby_axp_probe_usb(void)
{
	u8  reg_value;

	if(standby_axp_i2c_read(AXP22_ADDR, BOOT_POWER22_INTSTS1, &reg_value))
    {
        return -1;
    }
    reg_value &= 0x08;
	if(reg_value)
	{
		if(standby_axp_i2c_write(AXP22_ADDR, BOOT_POWER22_INTSTS1, reg_value))
	    {
	        return -1;
	    }
	}

	return reg_value;
}
Exemplo n.º 7
0
int standby_axp_store_int_status(void)
{
	int   i;
	__u8  int_reg = BOOT_POWER22_INTEN1;
	__u8  standby_int_enable[8];

	for(i=0;i<5;i++)
	{
		if(standby_axp_i2c_read(AXP22_ADDR, int_reg, power_int_value + i))
	    {
	        return -1;
	    }
	    int_reg ++;
	}

	standby_int_enable[0] = 0x2C;
	standby_int_enable[1] = 0x0;
	standby_int_enable[2] = 0x3;
	standby_int_enable[3] = 0x0;
	standby_int_enable[4] = 0x0;

	int_reg = BOOT_POWER22_INTEN1;
	for(i=0;i<5;i++)
	{
		if(standby_axp_i2c_write(AXP22_ADDR, int_reg, standby_int_enable[i]))
	    {
	        return -1;
	    }
	    int_reg ++;
	}
	//打开小cpu的中断使能
	*(volatile unsigned int *)(0x01f00c00 + 0x10) |= 1;
	*(volatile unsigned int *)(0x01f00c00 + 0x40) |= 1;

	return 0;
}