static void pchr_turn_on_charging(void)
{
#if !defined(CONFIG_MTK_JEITA_STANDARD_SUPPORT)
	BATTERY_VOLTAGE_ENUM cv_voltage;
#endif
	kal_uint32 charging_enable = KAL_TRUE;

	battery_log(BAT_LOG_FULL, "[BATTERY] pchr_turn_on_charging()!\r\n");

	if (BMT_status.bat_charging_state == CHR_ERROR) {
		battery_log(BAT_LOG_CRTI, "[BATTERY] Charger Error, turn OFF charging !\n");

		charging_enable = KAL_FALSE;
	} else if ((g_platform_boot_mode == META_BOOT) || (g_platform_boot_mode == ADVMETA_BOOT)) {
		battery_log(BAT_LOG_CRTI,
				    "[BATTERY] In meta or advanced meta mode, disable charging.\n");
		charging_enable = KAL_FALSE;
	} else {
		/*HW initialization */
		battery_log(BAT_LOG_FULL, "charging_hw_init\n");
		battery_charging_control(CHARGING_CMD_INIT, NULL);

#if defined(CONFIG_MTK_PUMP_EXPRESS_SUPPORT)
		battery_pump_express_algorithm_start();
#endif

		/* Set Charging Current */
		if (get_usb_current_unlimited()) {
			g_temp_CC_value = batt_cust_data.ac_charger_current;
			battery_log(BAT_LOG_FULL, "USB_CURRENT_UNLIMITED, use AC_CHARGER_CURRENT\n" );
		} else {
			if (g_bcct_flag == 1) {
				battery_log(BAT_LOG_FULL,
					    "[BATTERY] select_charging_curret_bcct !\n");
				select_charging_curret_bcct();
			} else {
				battery_log(BAT_LOG_FULL, "[BATTERY] select_charging_current !\n");
				select_charging_curret();
			}
		}

		if (g_temp_CC_value == CHARGE_CURRENT_0_00_MA) {
			charging_enable = KAL_FALSE;
			battery_log(BAT_LOG_CRTI,
					"[BATTERY] charging current is set 0mA, turn off charging !\r\n");
		} else {
#if defined(CONFIG_MTK_PUMP_EXPRESS_SUPPORT)
			if(ta_check_ta_control == KAL_FALSE)
#endif	
			{
				if(ulc_cv_charging_current_flag == KAL_TRUE)
					battery_charging_control(CHARGING_CMD_SET_CURRENT,&ulc_cv_charging_current);
				else
					battery_charging_control(CHARGING_CMD_SET_CURRENT,&g_temp_CC_value);
			}

			/* Set CV */
#if !defined(CONFIG_MTK_JEITA_STANDARD_SUPPORT)
	if(batt_cust_data.high_battery_voltage_support)
			cv_voltage = BATTERY_VOLT_04_350000_V;
	else
			cv_voltage = BATTERY_VOLT_04_200000_V;

			battery_charging_control(CHARGING_CMD_SET_CV_VOLTAGE, &cv_voltage);
#endif
		}
	}

	/* enable/disable charging */
	battery_log(BAT_LOG_CRTI, "[BATTERY] pchr_turn_on_charging(), enable =%d \r\n",
			    charging_enable);
	battery_charging_control(CHARGING_CMD_ENABLE, &charging_enable);


}
Beispiel #2
0
static void pchr_turn_on_charging (void)
{
#if !defined(MTK_JEITA_STANDARD_SUPPORT)
    BATTERY_VOLTAGE_ENUM cv_voltage;
#endif
    kal_uint32 charging_enable = KAL_TRUE;

#if defined(MTK_DUAL_INPUT_CHARGER_SUPPORT)
    if(KAL_TRUE == BMT_status.charger_exist)
        charging_enable = KAL_TRUE;
    else
        charging_enable = KAL_FALSE;
#endif

    if ( BMT_status.bat_charging_state == CHR_ERROR )
    {
        battery_xlog_printk(BAT_LOG_CRTI, "[BATTERY] Charger Error, turn OFF charging !\n");

        charging_enable = KAL_FALSE;

    }
    else if( (g_platform_boot_mode==META_BOOT) || (g_platform_boot_mode==ADVMETA_BOOT) )
    {
        battery_xlog_printk(BAT_LOG_CRTI, "[BATTERY] In meta or advanced meta mode, disable charging.\n");
        charging_enable = KAL_FALSE;
    }
    else
    {
        /*HW initialization*/
        battery_charging_control(CHARGING_CMD_INIT,NULL);

        battery_xlog_printk(BAT_LOG_FULL, "charging_hw_init\n" );

#if defined(MTK_PUMP_EXPRESS_PLUS_SUPPORT)
        battery_pump_express_algorithm_start();
#endif

        /* Set Charging Current */
        if (get_usb_current_unlimited()) {
            g_temp_input_CC_value = AC_CHARGER_CURRENT;
            g_temp_CC_value = AC_CHARGER_CURRENT;
            battery_xlog_printk(BAT_LOG_FULL, "USB_CURRENT_UNLIMITED, use AC_CHARGER_CURRENT\n" );
        }
        else {
            if (g_bcct_flag == 1)
            {
                select_charging_curret_bcct();

                battery_xlog_printk(BAT_LOG_FULL, "[BATTERY] select_charging_curret_bcct !\n");
            }
            else
            {
                select_charging_curret();

                battery_xlog_printk(BAT_LOG_FULL, "[BATTERY] select_charging_curret !\n");
            }
        }
//modify by willcai 2014-5-29 begin
#ifdef X2_CHARGING_STANDARD_SUPPORT
        lenovo_get_charging_curret(&g_temp_CC_value);
#endif
//end
        battery_xlog_printk(BAT_LOG_CRTI, "[BATTERY] Default CC mode charging : %d, input current = %d\r\n", g_temp_CC_value,g_temp_input_CC_value);
        if( g_temp_CC_value == CHARGE_CURRENT_0_00_MA || g_temp_input_CC_value == CHARGE_CURRENT_0_00_MA)
        {

            charging_enable = KAL_FALSE;

            battery_xlog_printk(BAT_LOG_CRTI, "[BATTERY] charging current is set 0mA, turn off charging !\r\n");
        }
        else
        {
            battery_charging_control(CHARGING_CMD_SET_INPUT_CURRENT,&g_temp_input_CC_value);
            battery_charging_control(CHARGING_CMD_SET_CURRENT,&g_temp_CC_value);

            /*Set CV Voltage*/
#if !defined(MTK_JEITA_STANDARD_SUPPORT)
#ifdef HIGH_BATTERY_VOLTAGE_SUPPORT
            cv_voltage = BATTERY_VOLT_04_340000_V;
#else
            cv_voltage = BATTERY_VOLT_04_200000_V;
#endif
            battery_charging_control(CHARGING_CMD_SET_CV_VOLTAGE,&cv_voltage);
#endif
        }
    }

    /* enable/disable charging */
    battery_charging_control(CHARGING_CMD_ENABLE,&charging_enable);

    battery_xlog_printk(BAT_LOG_FULL, "[BATTERY] pchr_turn_on_charging(), enable =%d !\r\n", charging_enable);
}