Ejemplo n.º 1
0
static bool check_samsung_charger(void)
{
    int adc_1, adc_2, vol_1, vol_2;
    int i = 0;

    adc_1 = adc_2 = vol_1 = vol_2 = 0;

    fsa9480_manual_switching(SWITCH_Audio_Port);

    for ( i=0; i<3; i++)
    {
        //1.Read ADC value
        adc_1 = sec_bat_get_adc_data(ADC_AP_CHECK_1);
        adc_2 = sec_bat_get_adc_data(ADC_AP_CHECK_2);

        //2. Change ADC value to Voltage
        vol_1= adc_1* 3300 / 4095;
        vol_2= adc_2* 3300 / 4095;
        pr_info("%s: vol_1 = %d, vol_2 = %d!!\n", __func__, vol_1, vol_2);

        //3. Check range of the voltage
        if( (vol_1 < 800) || (vol_1 > 1470) || (vol_2 < 800) || (vol_2 > 1470) )
        {
            pr_info("%s: Improper charger is connected!!!\n", __func__);
            fsa9480_manual_switching(AUTO_SWITCH);
            return false;
        }
    }

    pr_info("%s: Samsung charger is connected!!!\n", __func__);
    fsa9480_manual_switching(AUTO_SWITCH);
    return true;

}
Ejemplo n.º 2
0
static inline int sec_bat_read_temp(struct sec_bat_info *info)
{
#ifdef CONFIG_SENSORS_NCT1008
	return (10*info->get_temperature());
#else
	return sec_bat_get_adc_data(info, info->adc_channel);
#endif
}
Ejemplo n.º 3
0
static unsigned long sec_read_temp(struct chg_data *chg)
{
    int adc = 0;

    adc = sec_bat_get_adc_data(ADC_TEMPERATURE);

    return calculate_average_adc(ADC_TEMPERATURE, adc, chg);
}
Ejemplo n.º 4
0
static inline int s3c_read_temper_adc(struct sec_bat_info *info)
{
	int adc;

	mutex_lock(&info->adclock);
	adc = sec_bat_get_adc_data(info, info->adc_channel);
	mutex_unlock(&info->adclock);
	if (adc <= 0)
		adc = info->batt_temp_adc;
    info->batt_temp_adc = adc;

	return adc;
}
Ejemplo n.º 5
0
static void check_chgcurrent(struct sec_bat_info *info)
{
	unsigned long chg_current_adc = 0;

	mutex_lock(&info->adclock);
	chg_current_adc = sec_bat_get_adc_data(info, ADC_CH_CHGCURRENT);
	mutex_unlock(&info->adclock);
	if (chg_current_adc < 0)
		chg_current_adc = info->batt_current_adc;
	info->batt_current_adc = chg_current_adc;

	dev_info(info->dev,
		"[battery] charging current = %d\n", info->batt_current_adc);
}
Ejemplo n.º 6
0
static int sec_bat_get_adc_value(
		struct sec_battery_info *battery, int channel)
{
	int adc;

	adc = sec_bat_get_adc_data(battery, channel,
		battery->pdata->adc_check_count);

	if (adc <= 0) {
		pr_err("%s: Error in ADC\n", __func__);
		return adc;
	}

	return calculate_average_adc(battery, channel, adc);
}
Ejemplo n.º 7
0
static bool sec_bat_check_vf_adc(struct sec_battery_info *battery)
{
	int adc;

	adc = sec_bat_get_adc_data(battery,
		battery->pdata->check_adc_channel,
		battery->pdata->adc_check_count);

	if (adc <= 0) {
		pr_err("%s: VF ADC error\n", __func__);
		adc = battery->check_adc_value;
	} else
		battery->check_adc_value = adc;

	if ((battery->check_adc_value < battery->pdata->check_adc_max) &&
		(battery->check_adc_value > battery->pdata->check_adc_min))
		return true;
	else
		return false;
}