upload tizen1.0 source
[kernel/linux-2.6.36.git] / arch / arm / plat-samsung / include / plat / adc.h
1 /* arch/arm/plat-samsung/include/plat/adc.h
2  *
3  * Copyright (c) 2008 Simtec Electronics
4  *      http://armlinux.simnte.co.uk/
5  *      Ben Dooks <ben@simtec.co.uk>
6  *
7  * S3C ADC driver information
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License version 2 as
11  * published by the Free Software Foundation.
12 */
13
14 #ifndef __ASM_PLAT_ADC_H
15 #define __ASM_PLAT_ADC_H __FILE__
16
17 struct s3c_adc_client;
18
19 extern int s3c_adc_start(struct s3c_adc_client *client,
20                          unsigned int channel, unsigned int nr_samples);
21
22 extern int s3c_adc_read(struct s3c_adc_client *client, unsigned int ch);
23
24 extern struct s3c_adc_client *
25         s3c_adc_register(struct platform_device *pdev,
26                          void (*select)(struct s3c_adc_client *client,
27                                         unsigned selected),
28                          void (*conv)(struct s3c_adc_client *client,
29                                       unsigned d0, unsigned d1,
30                                       unsigned *samples_left),
31                          unsigned int is_ts);
32
33 extern void s3c_adc_release(struct s3c_adc_client *client);
34
35
36 #ifdef CONFIG_S5P_ADC
37
38 #define ADC_RESOLUTION_SIZE_10  10
39 #define ADC_RESOLUTION_SIZE_12  12
40
41 struct s3c_adc_request
42 {
43         /* for linked list */
44         struct list_head *list;
45         /* after finish ADC sampling, s3c_adc_request function call
46            this function with three parameter */
47         void (*callback)( int channel,
48                 unsigned long int param, unsigned short sample);
49         /* for private data */
50         unsigned long int param;
51         /* selected channel for ADC sampling */
52         int channel;
53 };
54
55 struct s3c_adc_platform_data
56 {
57         int delay;
58         int presc;
59         int resolution;
60         int max_adc_voltage_uV;
61         int state_converting;
62 };
63
64 extern int s3c_adc_get(struct s3c_adc_request *req);
65 extern unsigned int s3c_adc_convert_uV(unsigned short);
66 extern void __init s3c_adc_set_platdata(struct s3c_adc_platform_data *pdata);
67 #endif
68
69 #endif /* __ASM_PLAT_ADC_H */