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; }
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 }
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); }
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; }
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); }
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); }
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; }