/* Read ADC at least twice and check the resuls. If regulator providing voltage on to measured point was just turned on, first reads might require time to stabilize.  */
static int odroid_get_adc_val(unsigned int *adcval)
/* Read ADC at least twice and check the resuls. If regulator providing voltage on to measured point was just turned on, first reads might require time to stabilize.  */
static int odroid_get_adc_val(unsigned int *adcval)
{
	unsigned int adcval_prev = 0;
	int ret, retries = 20;
	ret = adc_channel_single_shot("adc", CONFIG_ODROID_REV_AIN,
				      &adcval_prev);
	if (ret)
		return ret;
	while (retries--) {
		mdelay(5);
		ret = adc_channel_single_shot("adc", CONFIG_ODROID_REV_AIN,
					      adcval);
		if (ret)
			return ret;
		if ((100 * abs(*adcval - adcval_prev) / adcval_prev) < 3)
			return ret;
		adcval_prev = *adcval;
	}
	return ret;
}