Beispiel #1
0
static ssize_t
s3c_adc_read(struct file *file, char __user * buffer,
		size_t size, loff_t * pos)
{
	int  adc_value = 0;

	printk(KERN_INFO " s3c_adc_read() entered\n");

#ifdef ADC_WITH_TOUCHSCREEN
        mutex_lock(&adc_mutex);
	s3c_adc_save_SFR_on_ADC();
#endif


	adc_value = s3c_adc_convert();

#ifdef ADC_WITH_TOUCHSCREEN
	s3c_adc_restore_SFR_on_ADC();
	mutex_unlock(&adc_mutex);
#endif

	printk(KERN_INFO " Converted Value: %03d\n", adc_value);

	if (copy_to_user(buffer, &adc_value, sizeof(unsigned int))) {
		return -EFAULT;
	}
	return sizeof(unsigned int);
}
Beispiel #2
0
int s3c_adc_get_adc_data(int channel)
{
	int adc_value = 0;
	int cur_adc_port = 0;

#ifdef ADC_WITH_TOUCHSCREEN
        mutex_lock(&adc_mutex);
	s3c_adc_save_SFR_on_ADC();
#else
        mutex_lock(&adc_mutex);
#endif

	cur_adc_port = adc_port;
	adc_port = channel;

	adc_value = s3c_adc_convert();

	adc_port = cur_adc_port;

#ifdef ADC_WITH_TOUCHSCREEN
	s3c_adc_restore_SFR_on_ADC();
	mutex_unlock(&adc_mutex);
#else
	mutex_unlock(&adc_mutex);
#endif

	pr_debug("%s : Converted Value: %03d\n", __FUNCTION__, adc_value);

	return adc_value;
}
Beispiel #3
0
unsigned int get_s3c_adc_convert(int channel)
{
	unsigned int adc_return = 0;
	unsigned long data0;
	unsigned long data1;

	mutex_lock(&adc_mutex);
	    s3c_adc_save_SFR_on_ADC();
	    writel((channel & 0x7), base_addr + S3C_ADCMUX);
	    udelay(10);
	    writel(readl(base_addr + S3C_ADCCON) | S3C_ADCCON_ENABLE_START, base_addr + S3C_ADCCON);
	    do {			
		    msleep(1);
		    data0 = readl(base_addr + S3C_ADCCON);
	    } while (!(data0 & S3C_ADCCON_ECFLG));
	    data1 = readl(base_addr + S3C_ADCDAT0);
	    if (plat_data->resolution == 12)
		    adc_return = data1 & S3C_ADCDAT0_XPDATA_MASK_12BIT;
	    else
		    adc_return = data1 & S3C_ADCDAT0_XPDATA_MASK;
	    s3c_adc_restore_SFR_on_ADC();
    mutex_unlock(&adc_mutex);

	return adc_return;
}
Beispiel #4
0
static ssize_t
s3c_adc_read(struct file *file, char __user *buffer,
		size_t size, loff_t *pos)
{
	int  adc_value = 0;

	mutex_lock(&adc_mutex);
		s3c_adc_save_SFR_on_ADC();
		printk(KERN_INFO "## delay: %d\n", readl(base_addr + S3C_ADCDLY));
		adc_value = s3c_adc_convert();
		s3c_adc_restore_SFR_on_ADC();
	mutex_unlock(&adc_mutex);

	if (copy_to_user(buffer, &adc_value, sizeof(unsigned int)))
		return -EFAULT;

	return sizeof(unsigned int);
}
Beispiel #5
0
int s3c_adc_get_adc_data(int channel)
{
	int adc_value = 0;
	int cur_adc_port = 0;

	mutex_lock(&adc_mutex);
	    s3c_adc_save_SFR_on_ADC();
	    cur_adc_port = adc_port;
	    adc_port = channel;
	    adc_value = s3c_adc_convert();
	    adc_port = cur_adc_port;
	    s3c_adc_restore_SFR_on_ADC();
	mutex_unlock(&adc_mutex);

	pr_debug("%s : Converted Value: %03d\n", __func__, adc_value);

	return adc_value;
}
Beispiel #6
0
int s3c_adc_convert_temp_data()
{
	int temprature;
	
	 
#ifdef ADC_WITH_TOUCHSCREEN
     mutex_lock(&adc_mutex);
	s3c_adc_save_SFR_on_ADC();
#else
        mutex_lock(&adc_mutex);
#endif
     s3c_adc_get_data();	
	 temprature =s3c_adc_convert_data(); 	
#ifdef ADC_WITH_TOUCHSCREEN
	s3c_adc_restore_SFR_on_ADC();
	mutex_unlock(&adc_mutex);
#else
	mutex_unlock(&adc_mutex);
#endif
   return temprature;

	}