hc
2024-03-26 e9199a72d842cbda78ac614eee5db7cdaa6f2530
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (C) 2011 Free Electrons
 */
 
#ifndef _AT91_ADC_H_
#define _AT91_ADC_H_
 
enum atmel_adc_ts_type {
   ATMEL_ADC_TOUCHSCREEN_NONE = 0,
   ATMEL_ADC_TOUCHSCREEN_4WIRE = 4,
   ATMEL_ADC_TOUCHSCREEN_5WIRE = 5,
};
 
/**
 * struct at91_adc_trigger - description of triggers
 * @name:        name of the trigger advertised to the user
 * @value:        value to set in the ADC's trigger setup register
           to enable the trigger
 * @is_external:    Does the trigger rely on an external pin?
 */
struct at91_adc_trigger {
   const char    *name;
   u8        value;
   bool        is_external;
};
 
/**
 * struct at91_adc_data - platform data for ADC driver
 * @channels_used:        channels in use on the board as a bitmask
 * @startup_time:        startup time of the ADC in microseconds
 * @trigger_list:        Triggers available in the ADC
 * @trigger_number:        Number of triggers available in the ADC
 * @use_external_triggers:    does the board has external triggers availables
 * @vref:            Reference voltage for the ADC in millivolts
 * @touchscreen_type:        If a touchscreen is connected, its type (4 or 5 wires)
 */
struct at91_adc_data {
   unsigned long            channels_used;
   u8                startup_time;
   struct at91_adc_trigger        *trigger_list;
   u8                trigger_number;
   bool                use_external_triggers;
   u16                vref;
   enum atmel_adc_ts_type        touchscreen_type;
};
 
extern void __init at91_add_device_adc(struct at91_adc_data *data);
#endif