コード例 #1
0
 static kal_uint32 charging_get_charger_type(void *data)
 {
		kal_uint32 status = STATUS_OK;
		 
#if defined(CONFIG_POWER_EXT) || defined(CONFIG_MTK_FPGA)
		*(CHARGER_TYPE*)(data) = STANDARD_HOST;
#else
		
    #if defined(MTK_WIRELESS_CHARGER_SUPPORT)
		int wireless_state = 0;
		if(wireless_charger_gpio_number!=0)
		{
			wireless_state = mt_get_gpio_in(wireless_charger_gpio_number);
			if(wireless_state == WIRELESS_CHARGER_EXIST_STATE)
			{
				*(CHARGER_TYPE*)(data) = WIRELESS_CHARGER;
				battery_xlog_printk(BAT_LOG_CRTI, "WIRELESS_CHARGER!\n");
				return status;
			}
		}
		else
		{
			battery_xlog_printk(BAT_LOG_CRTI, "wireless_charger_gpio_number=%d\n", wireless_charger_gpio_number);
		}
		
		if(g_charger_type!=CHARGER_UNKNOWN && g_charger_type!=WIRELESS_CHARGER)
		{
			*(CHARGER_TYPE*)(data) = g_charger_type;
			battery_xlog_printk(BAT_LOG_CRTI, "return %d!\n", g_charger_type);
			return status;
		}
    #endif
		
		if(is_chr_det()==0)
		{
			g_charger_type = CHARGER_UNKNOWN; 
			*(CHARGER_TYPE*)(data) = CHARGER_UNKNOWN;
			battery_xlog_printk(BAT_LOG_CRTI, "[charging_get_charger_type] return CHARGER_UNKNOWN\n");
			return status;
		}
		
		charging_type_det_done = KAL_FALSE;
	
		*(CHARGER_TYPE*)(data) = hw_charging_get_charger_type();
		//*(CHARGER_TYPE*)(data) = STANDARD_HOST;
		//*(CHARGER_TYPE*)(data) = STANDARD_CHARGER;
	
		charging_type_det_done = KAL_TRUE;
	
		g_charger_type = *(CHARGER_TYPE*)(data);
		
#endif
	
		return status;

}
コード例 #2
0
ファイル: charging_hw_bq24158.c プロジェクト: gy15617/m463
static kal_uint32 charging_get_charger_type(void *data)
{

    if(mz_has_muic()) // 1:  Has tsu6721; 0 : No tsu6721
    {   //use tsu6721 detect charer type
        kal_uint32 status = STATUS_OK;
#if defined(CONFIG_POWER_EXT)
        *(CHARGER_TYPE*)(data) = STANDARD_HOST;
#else
        msleep(200);
        tsu6721_charger_type(&g_charger_type);
        *(CHARGER_TYPE*)(data) = g_charger_type;
        printk("%s:*********charger_type %d,%d\n", __func__, g_charger_type, *(CHARGER_TYPE*)(data));
        charging_type_det_done = KAL_TRUE;
#endif
        return status;
    } else {//use mt6325 bc1.1 detect charer type
        kal_uint32 status = STATUS_OK;

#if defined(CONFIG_POWER_EXT) || defined(CONFIG_MTK_FPGA)
        *(CHARGER_TYPE*)(data) = STANDARD_HOST;
#else
        if(is_chr_det()==0) {
            g_charger_type = CHARGER_UNKNOWN;
            *(CHARGER_TYPE*)(data) = CHARGER_UNKNOWN;
            battery_xlog_printk(BAT_LOG_CRTI, "[charging_get_charger_type] return CHARGER_UNKNOWN\n");
            return status;
        }

        charging_type_det_done = KAL_FALSE;

        *(CHARGER_TYPE*)(data) = hw_charging_get_charger_type();
        //*(CHARGER_TYPE*)(data) = STANDARD_HOST;
        //*(CHARGER_TYPE*)(data) = STANDARD_CHARGER;

        charging_type_det_done = KAL_TRUE;

        g_charger_type = *(CHARGER_TYPE*)(data);
        battery_xlog_printk(BAT_LOG_CRTI, "[charging_get_charger_type] return g_charger_type =%d\n",g_charger_type);

#endif

        return status;
    }

}
コード例 #3
0
int upmu_is_chr_det_hal(void)
{
    if(is_chr_det() == 0)
    {
        return 0;
    }
    else
    {
        if( mt_usb_is_device() )
        {
        	battery_xlog_printk(BAT_LOG_CRTI, "[upmu_is_chr_det_hal] Charger exist and USB is not host\n");
            return 1;
        }
        else
        {
            battery_xlog_printk(BAT_LOG_CRTI, "[upmu_is_chr_det_hal] Charger exist but USB is host\n");
            return 0;
        }
    }
}
コード例 #4
0
void sw_plug_out_check(void)
{
// chr_plug_out_sw_detect    
#if 1 
    if(upmu_is_chr_det_hal()==1) //sync USB device/otg state
    {
        kal_uint32 cv_val = 0;
        kal_uint32 ich_low_val = 0;
        kal_uint32 is_charge_complete = 0;
        
        pmic_read_interface(0x805E, &cv_val, 0x1, 0);
        if(cv_val == 1)
        {
            battery_xlog_printk(BAT_LOG_FULL,"[chr_plug_out_sw_detect] in CV\n");
            pmic_config_interface(0x8074, 0x1, 0x1, 9);
            pmic_config_interface(0x8166, 0x1, 0x1,12);
            pmic_config_interface(0x8D36, 0x3, 0x3,11); //[12:11]=0x3
        }
        else
        {
            battery_xlog_printk(BAT_LOG_FULL,"[chr_plug_out_sw_detect] not in CV\n");            
            pmic_config_interface(0x8074, 0x0, 0x1, 9);
            pmic_config_interface(0x8166, 0x1, 0x1,12);
            pmic_config_interface(0x8D36, 0x0, 0x3,11); //[12:11]=0x0
        }
            
    #if 1            
            battery_xlog_printk(BAT_LOG_FULL,"[chr_plug_out_sw_detect] Reg[0x%x]=0x%x\n", 0x8074, upmu_get_reg_value(0x8074) );

            pmic_read_interface(0x8054, &ich_low_val, 0x1, 1);
            pmic_read_interface(0x805E, &is_charge_complete, 0x1, 10);
            battery_xlog_printk(BAT_LOG_CRTI,"[chr_plug_out_sw_detect] ich_low_val=%d, is_charge_complete=%d\n", 
                ich_low_val, is_charge_complete);
            
            //if( (ich_low_val==1) || (is_charge_complete==1) )
            if(is_chr_det()==1) // for evb
            {
                set_usb_dc_in_mode(0,0);                
                set_usb_dc_in_mode(0,1);                
                battery_xlog_printk(BAT_LOG_CRTI,"[chr_plug_out_sw_detect] Reg[0x%x]=0x%x\n", 0x816C, upmu_get_reg_value(0x816C) );
                //
                msleep(10);
                if(is_chr_det()==1)
                {
                    set_usb_dc_in_mode(0,0);
                }                
            }
            else
            {
                set_usb_dc_in_mode(0,0);                
            }
    #endif
            
        //debug
        swchr_dump_register();
        mt_swchr_debug_msg();

        battery_xlog_printk(BAT_LOG_FULL,"[chr_plug_out_sw_detect] Reg[0x%x]=0x%x, Reg[0x%x]=0x%x, Reg[0x%x]=0x%x\n", 
                0x8D1E, upmu_get_reg_value(0x8D1E), 0x8D2C, upmu_get_reg_value(0x8D2C), 0x816C, upmu_get_reg_value(0x816C) );
    }
    else
    {
        battery_xlog_printk(BAT_LOG_FULL,"[chr_plug_out_sw_detect] no cable\n");
    }
#endif

}
コード例 #5
0
ファイル: charging_hw_bq24160.c プロジェクト: SelfImp/m75
static kal_uint32 charging_get_charger_type(void *data)
{
    kal_uint32 status = STATUS_OK;
#if defined(CONFIG_POWER_EXT)
    *(CHARGER_TYPE*)(data) = STANDARD_HOST;
#else
    kal_uint8 val=0;
    kal_uint8 dpdm_bit=1;
    kal_uint32 i =0;
    kal_uint32 i_timeout=10000000;
    
    #if defined(MTK_WIRELESS_CHARGER_SUPPORT)
    int wireless_state = 0;
    if(wireless_charger_gpio_number!=0)
    {
        wireless_state = mt_get_gpio_in(wireless_charger_gpio_number);
        if(wireless_state == WIRELESS_CHARGER_EXIST_STATE)
        {
            *(CHARGER_TYPE*)(data) = WIRELESS_CHARGER;
            battery_xlog_printk(BAT_LOG_CRTI, "WIRELESS_CHARGER!\n");
            return status;
        }
    }
    else
    {
        battery_xlog_printk(BAT_LOG_CRTI, "wireless_charger_gpio_number=%d\n", wireless_charger_gpio_number);
    }
    
    if(g_charger_type!=CHARGER_UNKNOWN && g_charger_type!=WIRELESS_CHARGER)
    {
        *(CHARGER_TYPE*)(data) = g_charger_type;
        battery_xlog_printk(BAT_LOG_CRTI, "return %d!\n", g_charger_type);
        return status;
    }
    #endif
    
    if(is_chr_det()==0)
    {
        g_charger_type = CHARGER_UNKNOWN; 
        *(CHARGER_TYPE*)(data) = CHARGER_UNKNOWN;
        battery_xlog_printk(BAT_LOG_CRTI, "[charging_get_charger_type] return CHARGER_UNKNOWN\n");
        return status;
    }
    
    charging_type_det_done = KAL_FALSE;

    if(get_pmic_mt6332_cid()==PMIC6332_E1_CID_CODE)
    {        
        msleep(300);
        Charger_Detect_Init();

        //-----------------------------------------------------
        bq24160_config_interface(bq24160_CON3, 0x1, 0x1, 0);

        dpdm_bit=1;
        while(dpdm_bit!=0)
        {           
            bq24160_read_interface(bq24160_CON3, &dpdm_bit, 0x1, 0);
            battery_xlog_printk(BAT_LOG_CRTI,"[charging_get_charger_type] bq24160_CON3[0]=%d\n", dpdm_bit);

            msleep(10);

            i++;
            if(i > i_timeout)
                break;
        }

        if(i > i_timeout)
        {
            *(CHARGER_TYPE*)(data) = STANDARD_HOST;        
            battery_xlog_printk(BAT_LOG_CRTI,"[charging_get_charger_type] timeout(%d) : step=STANDARD_HOST\n", i);
        }
        else
        {
            bq24160_read_interface(bq24160_CON2, &val, 0x7, 4);
            if(val==0)
            {
                *(CHARGER_TYPE*)(data) = STANDARD_HOST;        
                battery_xlog_printk(BAT_LOG_CRTI,"[charging_get_charger_type] E1 workaround (%d), step=STANDARD_HOST\n", val);    
            }
            else
            {
                *(CHARGER_TYPE*)(data) = STANDARD_CHARGER;        
                battery_xlog_printk(BAT_LOG_CRTI,"[charging_get_charger_type] E1 workaround (%d), step=STANDARD_CHARGER\n", val);
            }
        }
        //-----------------------------------------------------

        Charger_Detect_Release();
    }
    else
    {
        *(CHARGER_TYPE*)(data) = hw_charging_get_charger_type();
    }

    charging_type_det_done = KAL_TRUE;

    g_charger_type = *(CHARGER_TYPE*)(data);
    
#endif
    return status;
}