ARM: ep93xx: move platform_data definitions
[firefly-linux-kernel-4.4.55.git] / include / linux / platform_data / at91_adc.h
1 /*
2  * Copyright (C) 2011 Free Electrons
3  *
4  * Licensed under the GPLv2 or later.
5  */
6
7 #ifndef _AT91_ADC_H_
8 #define _AT91_ADC_H_
9
10 /**
11  * struct at91_adc_reg_desc - Various informations relative to registers
12  * @channel_base:       Base offset for the channel data registers
13  * @drdy_mask:          Mask of the DRDY field in the relevant registers
14                         (Interruptions registers mostly)
15  * @status_register:    Offset of the Interrupt Status Register
16  * @trigger_register:   Offset of the Trigger setup register
17  */
18 struct at91_adc_reg_desc {
19         u8      channel_base;
20         u32     drdy_mask;
21         u8      status_register;
22         u8      trigger_register;
23 };
24
25 /**
26  * struct at91_adc_trigger - description of triggers
27  * @name:               name of the trigger advertised to the user
28  * @value:              value to set in the ADC's trigger setup register
29                         to enable the trigger
30  * @is_external:        Does the trigger rely on an external pin?
31  */
32 struct at91_adc_trigger {
33         const char      *name;
34         u8              value;
35         bool            is_external;
36 };
37
38 /**
39  * struct at91_adc_data - platform data for ADC driver
40  * @channels_used:              channels in use on the board as a bitmask
41  * @num_channels:               global number of channels available on the board
42  * @registers:                  Registers definition on the board
43  * @startup_time:               startup time of the ADC in microseconds
44  * @trigger_list:               Triggers available in the ADC
45  * @trigger_number:             Number of triggers available in the ADC
46  * @use_external_triggers:      does the board has external triggers availables
47  * @vref:                       Reference voltage for the ADC in millivolts
48  */
49 struct at91_adc_data {
50         unsigned long                   channels_used;
51         u8                              num_channels;
52         struct at91_adc_reg_desc        *registers;
53         u8                              startup_time;
54         struct at91_adc_trigger         *trigger_list;
55         u8                              trigger_number;
56         bool                            use_external_triggers;
57         u16                             vref;
58 };
59
60 extern void __init at91_add_device_adc(struct at91_adc_data *data);
61 #endif