diff options
Diffstat (limited to 'include/linux/iio')
-rw-r--r-- | include/linux/iio/buffer.h | 22 | ||||
-rw-r--r-- | include/linux/iio/consumer.h | 34 | ||||
-rw-r--r-- | include/linux/iio/dac/ad5421.h | 28 | ||||
-rw-r--r-- | include/linux/iio/dac/ad5504.h | 16 | ||||
-rw-r--r-- | include/linux/iio/dac/ad5791.h | 25 | ||||
-rw-r--r-- | include/linux/iio/dac/max517.h | 15 | ||||
-rw-r--r-- | include/linux/iio/dac/mcp4725.h | 16 | ||||
-rw-r--r-- | include/linux/iio/events.h | 6 | ||||
-rw-r--r-- | include/linux/iio/frequency/ad9523.h | 195 | ||||
-rw-r--r-- | include/linux/iio/frequency/adf4350.h | 126 | ||||
-rw-r--r-- | include/linux/iio/iio.h | 108 | ||||
-rw-r--r-- | include/linux/iio/machine.h | 2 | ||||
-rw-r--r-- | include/linux/iio/sysfs.h | 2 | ||||
-rw-r--r-- | include/linux/iio/triggered_buffer.h | 15 | ||||
-rw-r--r-- | include/linux/iio/types.h | 8 |
15 files changed, 572 insertions, 46 deletions
diff --git a/include/linux/iio/buffer.h b/include/linux/iio/buffer.h index fb0fe46fd659..8ba516fc2ec6 100644 --- a/include/linux/iio/buffer.h +++ b/include/linux/iio/buffer.h | |||
@@ -85,7 +85,7 @@ struct iio_buffer { | |||
85 | 85 | ||
86 | /** | 86 | /** |
87 | * iio_buffer_init() - Initialize the buffer structure | 87 | * iio_buffer_init() - Initialize the buffer structure |
88 | * @buffer: buffer to be initialized | 88 | * @buffer: buffer to be initialized |
89 | **/ | 89 | **/ |
90 | void iio_buffer_init(struct iio_buffer *buffer); | 90 | void iio_buffer_init(struct iio_buffer *buffer); |
91 | 91 | ||
@@ -107,8 +107,9 @@ int iio_scan_mask_query(struct iio_dev *indio_dev, | |||
107 | 107 | ||
108 | /** | 108 | /** |
109 | * iio_scan_mask_set() - set particular bit in the scan mask | 109 | * iio_scan_mask_set() - set particular bit in the scan mask |
110 | * @buffer: the buffer whose scan mask we are interested in | 110 | * @indio_dev IIO device structure |
111 | * @bit: the bit to be set. | 111 | * @buffer: the buffer whose scan mask we are interested in |
112 | * @bit: the bit to be set. | ||
112 | **/ | 113 | **/ |
113 | int iio_scan_mask_set(struct iio_dev *indio_dev, | 114 | int iio_scan_mask_set(struct iio_dev *indio_dev, |
114 | struct iio_buffer *buffer, int bit); | 115 | struct iio_buffer *buffer, int bit); |
@@ -116,8 +117,8 @@ int iio_scan_mask_set(struct iio_dev *indio_dev, | |||
116 | /** | 117 | /** |
117 | * iio_push_to_buffer() - push to a registered buffer. | 118 | * iio_push_to_buffer() - push to a registered buffer. |
118 | * @buffer: IIO buffer structure for device | 119 | * @buffer: IIO buffer structure for device |
119 | * @scan: Full scan. | 120 | * @data: the data to push to the buffer |
120 | * @timestamp: | 121 | * @timestamp: timestamp to associate with the data |
121 | */ | 122 | */ |
122 | int iio_push_to_buffer(struct iio_buffer *buffer, unsigned char *data, | 123 | int iio_push_to_buffer(struct iio_buffer *buffer, unsigned char *data, |
123 | s64 timestamp); | 124 | s64 timestamp); |
@@ -126,7 +127,9 @@ int iio_update_demux(struct iio_dev *indio_dev); | |||
126 | 127 | ||
127 | /** | 128 | /** |
128 | * iio_buffer_register() - register the buffer with IIO core | 129 | * iio_buffer_register() - register the buffer with IIO core |
129 | * @indio_dev: device with the buffer to be registered | 130 | * @indio_dev: device with the buffer to be registered |
131 | * @channels: the channel descriptions used to construct buffer | ||
132 | * @num_channels: the number of channels | ||
130 | **/ | 133 | **/ |
131 | int iio_buffer_register(struct iio_dev *indio_dev, | 134 | int iio_buffer_register(struct iio_dev *indio_dev, |
132 | const struct iio_chan_spec *channels, | 135 | const struct iio_chan_spec *channels, |
@@ -134,7 +137,7 @@ int iio_buffer_register(struct iio_dev *indio_dev, | |||
134 | 137 | ||
135 | /** | 138 | /** |
136 | * iio_buffer_unregister() - unregister the buffer from IIO core | 139 | * iio_buffer_unregister() - unregister the buffer from IIO core |
137 | * @indio_dev: the device with the buffer to be unregistered | 140 | * @indio_dev: the device with the buffer to be unregistered |
138 | **/ | 141 | **/ |
139 | void iio_buffer_unregister(struct iio_dev *indio_dev); | 142 | void iio_buffer_unregister(struct iio_dev *indio_dev); |
140 | 143 | ||
@@ -174,6 +177,9 @@ ssize_t iio_buffer_show_enable(struct device *dev, | |||
174 | 177 | ||
175 | int iio_sw_buffer_preenable(struct iio_dev *indio_dev); | 178 | int iio_sw_buffer_preenable(struct iio_dev *indio_dev); |
176 | 179 | ||
180 | bool iio_validate_scan_mask_onehot(struct iio_dev *indio_dev, | ||
181 | const unsigned long *mask); | ||
182 | |||
177 | #else /* CONFIG_IIO_BUFFER */ | 183 | #else /* CONFIG_IIO_BUFFER */ |
178 | 184 | ||
179 | static inline int iio_buffer_register(struct iio_dev *indio_dev, | 185 | static inline int iio_buffer_register(struct iio_dev *indio_dev, |
@@ -184,7 +190,7 @@ static inline int iio_buffer_register(struct iio_dev *indio_dev, | |||
184 | } | 190 | } |
185 | 191 | ||
186 | static inline void iio_buffer_unregister(struct iio_dev *indio_dev) | 192 | static inline void iio_buffer_unregister(struct iio_dev *indio_dev) |
187 | {}; | 193 | {} |
188 | 194 | ||
189 | #endif /* CONFIG_IIO_BUFFER */ | 195 | #endif /* CONFIG_IIO_BUFFER */ |
190 | 196 | ||
diff --git a/include/linux/iio/consumer.h b/include/linux/iio/consumer.h index 1a15e560a5a1..e2657e6d4d26 100644 --- a/include/linux/iio/consumer.h +++ b/include/linux/iio/consumer.h | |||
@@ -33,17 +33,17 @@ struct iio_channel { | |||
33 | * side. This typically describes the channels use within | 33 | * side. This typically describes the channels use within |
34 | * the consumer. E.g. 'battery_voltage' | 34 | * the consumer. E.g. 'battery_voltage' |
35 | */ | 35 | */ |
36 | struct iio_channel *iio_st_channel_get(const char *name, | 36 | struct iio_channel *iio_channel_get(const char *name, |
37 | const char *consumer_channel); | 37 | const char *consumer_channel); |
38 | 38 | ||
39 | /** | 39 | /** |
40 | * iio_st_channel_release() - release channels obtained via iio_st_channel_get | 40 | * iio_channel_release() - release channels obtained via iio_channel_get |
41 | * @chan: The channel to be released. | 41 | * @chan: The channel to be released. |
42 | */ | 42 | */ |
43 | void iio_st_channel_release(struct iio_channel *chan); | 43 | void iio_channel_release(struct iio_channel *chan); |
44 | 44 | ||
45 | /** | 45 | /** |
46 | * iio_st_channel_get_all() - get all channels associated with a client | 46 | * iio_channel_get_all() - get all channels associated with a client |
47 | * @name: name of consumer device. | 47 | * @name: name of consumer device. |
48 | * | 48 | * |
49 | * Returns an array of iio_channel structures terminated with one with | 49 | * Returns an array of iio_channel structures terminated with one with |
@@ -51,37 +51,37 @@ void iio_st_channel_release(struct iio_channel *chan); | |||
51 | * This function is used by fairly generic consumers to get all the | 51 | * This function is used by fairly generic consumers to get all the |
52 | * channels registered as having this consumer. | 52 | * channels registered as having this consumer. |
53 | */ | 53 | */ |
54 | struct iio_channel *iio_st_channel_get_all(const char *name); | 54 | struct iio_channel *iio_channel_get_all(const char *name); |
55 | 55 | ||
56 | /** | 56 | /** |
57 | * iio_st_channel_release_all() - reverse iio_st_get_all | 57 | * iio_channel_release_all() - reverse iio_channel_get_all |
58 | * @chan: Array of channels to be released. | 58 | * @chan: Array of channels to be released. |
59 | */ | 59 | */ |
60 | void iio_st_channel_release_all(struct iio_channel *chan); | 60 | void iio_channel_release_all(struct iio_channel *chan); |
61 | 61 | ||
62 | /** | 62 | /** |
63 | * iio_st_read_channel_raw() - read from a given channel | 63 | * iio_read_channel_raw() - read from a given channel |
64 | * @channel: The channel being queried. | 64 | * @channel: The channel being queried. |
65 | * @val: Value read back. | 65 | * @val: Value read back. |
66 | * | 66 | * |
67 | * Note raw reads from iio channels are in adc counts and hence | 67 | * Note raw reads from iio channels are in adc counts and hence |
68 | * scale will need to be applied if standard units required. | 68 | * scale will need to be applied if standard units required. |
69 | */ | 69 | */ |
70 | int iio_st_read_channel_raw(struct iio_channel *chan, | 70 | int iio_read_channel_raw(struct iio_channel *chan, |
71 | int *val); | 71 | int *val); |
72 | 72 | ||
73 | /** | 73 | /** |
74 | * iio_st_get_channel_type() - get the type of a channel | 74 | * iio_get_channel_type() - get the type of a channel |
75 | * @channel: The channel being queried. | 75 | * @channel: The channel being queried. |
76 | * @type: The type of the channel. | 76 | * @type: The type of the channel. |
77 | * | 77 | * |
78 | * returns the enum iio_chan_type of the channel | 78 | * returns the enum iio_chan_type of the channel |
79 | */ | 79 | */ |
80 | int iio_st_get_channel_type(struct iio_channel *channel, | 80 | int iio_get_channel_type(struct iio_channel *channel, |
81 | enum iio_chan_type *type); | 81 | enum iio_chan_type *type); |
82 | 82 | ||
83 | /** | 83 | /** |
84 | * iio_st_read_channel_scale() - read the scale value for a channel | 84 | * iio_read_channel_scale() - read the scale value for a channel |
85 | * @channel: The channel being queried. | 85 | * @channel: The channel being queried. |
86 | * @val: First part of value read back. | 86 | * @val: First part of value read back. |
87 | * @val2: Second part of value read back. | 87 | * @val2: Second part of value read back. |
@@ -90,7 +90,7 @@ int iio_st_get_channel_type(struct iio_channel *channel, | |||
90 | * as IIO_VAL_INT_PLUS_MICRO telling us we have a value of val | 90 | * as IIO_VAL_INT_PLUS_MICRO telling us we have a value of val |
91 | * + val2/1e6 | 91 | * + val2/1e6 |
92 | */ | 92 | */ |
93 | int iio_st_read_channel_scale(struct iio_channel *chan, int *val, | 93 | int iio_read_channel_scale(struct iio_channel *chan, int *val, |
94 | int *val2); | 94 | int *val2); |
95 | 95 | ||
96 | #endif | 96 | #endif |
diff --git a/include/linux/iio/dac/ad5421.h b/include/linux/iio/dac/ad5421.h new file mode 100644 index 000000000000..8fd8f057a890 --- /dev/null +++ b/include/linux/iio/dac/ad5421.h | |||
@@ -0,0 +1,28 @@ | |||
1 | #ifndef __IIO_DAC_AD5421_H__ | ||
2 | #define __IIO_DAC_AD5421_H__ | ||
3 | |||
4 | /** | ||
5 | * enum ad5421_current_range - Current range the AD5421 is configured for. | ||
6 | * @AD5421_CURRENT_RANGE_4mA_20mA: 4 mA to 20 mA (RANGE1,0 pins = 00) | ||
7 | * @AD5421_CURRENT_RANGE_3mA8_21mA: 3.8 mA to 21 mA (RANGE1,0 pins = x1) | ||
8 | * @AD5421_CURRENT_RANGE_3mA2_24mA: 3.2 mA to 24 mA (RANGE1,0 pins = 10) | ||
9 | */ | ||
10 | |||
11 | enum ad5421_current_range { | ||
12 | AD5421_CURRENT_RANGE_4mA_20mA, | ||
13 | AD5421_CURRENT_RANGE_3mA8_21mA, | ||
14 | AD5421_CURRENT_RANGE_3mA2_24mA, | ||
15 | }; | ||
16 | |||
17 | /** | ||
18 | * struct ad5421_platform_data - AD5421 DAC driver platform data | ||
19 | * @external_vref: whether an external reference voltage is used or not | ||
20 | * @current_range: Current range the AD5421 is configured for | ||
21 | */ | ||
22 | |||
23 | struct ad5421_platform_data { | ||
24 | bool external_vref; | ||
25 | enum ad5421_current_range current_range; | ||
26 | }; | ||
27 | |||
28 | #endif | ||
diff --git a/include/linux/iio/dac/ad5504.h b/include/linux/iio/dac/ad5504.h new file mode 100644 index 000000000000..43895376a9ca --- /dev/null +++ b/include/linux/iio/dac/ad5504.h | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * AD5504 SPI DAC driver | ||
3 | * | ||
4 | * Copyright 2011 Analog Devices Inc. | ||
5 | * | ||
6 | * Licensed under the GPL-2. | ||
7 | */ | ||
8 | |||
9 | #ifndef SPI_AD5504_H_ | ||
10 | #define SPI_AD5504_H_ | ||
11 | |||
12 | struct ad5504_platform_data { | ||
13 | u16 vref_mv; | ||
14 | }; | ||
15 | |||
16 | #endif /* SPI_AD5504_H_ */ | ||
diff --git a/include/linux/iio/dac/ad5791.h b/include/linux/iio/dac/ad5791.h new file mode 100644 index 000000000000..45ee281c6660 --- /dev/null +++ b/include/linux/iio/dac/ad5791.h | |||
@@ -0,0 +1,25 @@ | |||
1 | /* | ||
2 | * AD5791 SPI DAC driver | ||
3 | * | ||
4 | * Copyright 2011 Analog Devices Inc. | ||
5 | * | ||
6 | * Licensed under the GPL-2. | ||
7 | */ | ||
8 | |||
9 | #ifndef SPI_AD5791_H_ | ||
10 | #define SPI_AD5791_H_ | ||
11 | |||
12 | /** | ||
13 | * struct ad5791_platform_data - platform specific information | ||
14 | * @vref_pos_mv: Vdd Positive Analog Supply Volatge (mV) | ||
15 | * @vref_neg_mv: Vdd Negative Analog Supply Volatge (mV) | ||
16 | * @use_rbuf_gain2: ext. amplifier connected in gain of two configuration | ||
17 | */ | ||
18 | |||
19 | struct ad5791_platform_data { | ||
20 | u16 vref_pos_mv; | ||
21 | u16 vref_neg_mv; | ||
22 | bool use_rbuf_gain2; | ||
23 | }; | ||
24 | |||
25 | #endif /* SPI_AD5791_H_ */ | ||
diff --git a/include/linux/iio/dac/max517.h b/include/linux/iio/dac/max517.h new file mode 100644 index 000000000000..f6d1d252f08d --- /dev/null +++ b/include/linux/iio/dac/max517.h | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * MAX517 DAC driver | ||
3 | * | ||
4 | * Copyright 2011 Roland Stigge <stigge@antcom.de> | ||
5 | * | ||
6 | * Licensed under the GPL-2 or later. | ||
7 | */ | ||
8 | #ifndef IIO_DAC_MAX517_H_ | ||
9 | #define IIO_DAC_MAX517_H_ | ||
10 | |||
11 | struct max517_platform_data { | ||
12 | u16 vref_mv[2]; | ||
13 | }; | ||
14 | |||
15 | #endif /* IIO_DAC_MAX517_H_ */ | ||
diff --git a/include/linux/iio/dac/mcp4725.h b/include/linux/iio/dac/mcp4725.h new file mode 100644 index 000000000000..91530e6611e9 --- /dev/null +++ b/include/linux/iio/dac/mcp4725.h | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * MCP4725 DAC driver | ||
3 | * | ||
4 | * Copyright (C) 2012 Peter Meerwald <pmeerw@pmeerw.net> | ||
5 | * | ||
6 | * Licensed under the GPL-2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef IIO_DAC_MCP4725_H_ | ||
10 | #define IIO_DAC_MCP4725_H_ | ||
11 | |||
12 | struct mcp4725_platform_data { | ||
13 | u16 vref_mv; | ||
14 | }; | ||
15 | |||
16 | #endif /* IIO_DAC_MCP4725_H_ */ | ||
diff --git a/include/linux/iio/events.h b/include/linux/iio/events.h index b5acbf93c5da..13ce220c7003 100644 --- a/include/linux/iio/events.h +++ b/include/linux/iio/events.h | |||
@@ -46,7 +46,7 @@ enum iio_event_direction { | |||
46 | * @diff: Whether the event is for an differential channel or not. | 46 | * @diff: Whether the event is for an differential channel or not. |
47 | * @modifier: Modifier for the channel. Should be one of enum iio_modifier. | 47 | * @modifier: Modifier for the channel. Should be one of enum iio_modifier. |
48 | * @direction: Direction of the event. One of enum iio_event_direction. | 48 | * @direction: Direction of the event. One of enum iio_event_direction. |
49 | * @type: Type of the event. Should be one enum iio_event_type. | 49 | * @type: Type of the event. Should be one of enum iio_event_type. |
50 | * @chan: Channel number for non-differential channels. | 50 | * @chan: Channel number for non-differential channels. |
51 | * @chan1: First channel number for differential channels. | 51 | * @chan1: First channel number for differential channels. |
52 | * @chan2: Second channel number for differential channels. | 52 | * @chan2: Second channel number for differential channels. |
@@ -69,7 +69,7 @@ enum iio_event_direction { | |||
69 | * @chan_type: Type of the channel. Should be one of enum iio_chan_type. | 69 | * @chan_type: Type of the channel. Should be one of enum iio_chan_type. |
70 | * @number: Channel number. | 70 | * @number: Channel number. |
71 | * @modifier: Modifier for the channel. Should be one of enum iio_modifier. | 71 | * @modifier: Modifier for the channel. Should be one of enum iio_modifier. |
72 | * @type: Type of the event. Should be one enum iio_event_type. | 72 | * @type: Type of the event. Should be one of enum iio_event_type. |
73 | * @direction: Direction of the event. One of enum iio_event_direction. | 73 | * @direction: Direction of the event. One of enum iio_event_direction. |
74 | */ | 74 | */ |
75 | 75 | ||
@@ -81,7 +81,7 @@ enum iio_event_direction { | |||
81 | * IIO_UNMOD_EVENT_CODE() - create event identifier for unmodified channels | 81 | * IIO_UNMOD_EVENT_CODE() - create event identifier for unmodified channels |
82 | * @chan_type: Type of the channel. Should be one of enum iio_chan_type. | 82 | * @chan_type: Type of the channel. Should be one of enum iio_chan_type. |
83 | * @number: Channel number. | 83 | * @number: Channel number. |
84 | * @type: Type of the event. Should be one enum iio_event_type. | 84 | * @type: Type of the event. Should be one of enum iio_event_type. |
85 | * @direction: Direction of the event. One of enum iio_event_direction. | 85 | * @direction: Direction of the event. One of enum iio_event_direction. |
86 | */ | 86 | */ |
87 | 87 | ||
diff --git a/include/linux/iio/frequency/ad9523.h b/include/linux/iio/frequency/ad9523.h new file mode 100644 index 000000000000..12ce3ee427fd --- /dev/null +++ b/include/linux/iio/frequency/ad9523.h | |||
@@ -0,0 +1,195 @@ | |||
1 | /* | ||
2 | * AD9523 SPI Low Jitter Clock Generator | ||
3 | * | ||
4 | * Copyright 2012 Analog Devices Inc. | ||
5 | * | ||
6 | * Licensed under the GPL-2. | ||
7 | */ | ||
8 | |||
9 | #ifndef IIO_FREQUENCY_AD9523_H_ | ||
10 | #define IIO_FREQUENCY_AD9523_H_ | ||
11 | |||
12 | enum outp_drv_mode { | ||
13 | TRISTATE, | ||
14 | LVPECL_8mA, | ||
15 | LVDS_4mA, | ||
16 | LVDS_7mA, | ||
17 | HSTL0_16mA, | ||
18 | HSTL1_8mA, | ||
19 | CMOS_CONF1, | ||
20 | CMOS_CONF2, | ||
21 | CMOS_CONF3, | ||
22 | CMOS_CONF4, | ||
23 | CMOS_CONF5, | ||
24 | CMOS_CONF6, | ||
25 | CMOS_CONF7, | ||
26 | CMOS_CONF8, | ||
27 | CMOS_CONF9 | ||
28 | }; | ||
29 | |||
30 | enum ref_sel_mode { | ||
31 | NONEREVERTIVE_STAY_ON_REFB, | ||
32 | REVERT_TO_REFA, | ||
33 | SELECT_REFA, | ||
34 | SELECT_REFB, | ||
35 | EXT_REF_SEL | ||
36 | }; | ||
37 | |||
38 | /** | ||
39 | * struct ad9523_channel_spec - Output channel configuration | ||
40 | * | ||
41 | * @channel_num: Output channel number. | ||
42 | * @divider_output_invert_en: Invert the polarity of the output clock. | ||
43 | * @sync_ignore_en: Ignore chip-level SYNC signal. | ||
44 | * @low_power_mode_en: Reduce power used in the differential output modes. | ||
45 | * @use_alt_clock_src: Channel divider uses alternative clk source. | ||
46 | * @output_dis: Disables, powers down the entire channel. | ||
47 | * @driver_mode: Output driver mode (logic level family). | ||
48 | * @divider_phase: Divider initial phase after a SYNC. Range 0..63 | ||
49 | LSB = 1/2 of a period of the divider input clock. | ||
50 | * @channel_divider: 10-bit channel divider. | ||
51 | * @extended_name: Optional descriptive channel name. | ||
52 | */ | ||
53 | |||
54 | struct ad9523_channel_spec { | ||
55 | unsigned channel_num; | ||
56 | bool divider_output_invert_en; | ||
57 | bool sync_ignore_en; | ||
58 | bool low_power_mode_en; | ||
59 | /* CH0..CH3 VCXO, CH4..CH9 VCO2 */ | ||
60 | bool use_alt_clock_src; | ||
61 | bool output_dis; | ||
62 | enum outp_drv_mode driver_mode; | ||
63 | unsigned char divider_phase; | ||
64 | unsigned short channel_divider; | ||
65 | char extended_name[16]; | ||
66 | }; | ||
67 | |||
68 | enum pll1_rzero_resistor { | ||
69 | RZERO_883_OHM, | ||
70 | RZERO_677_OHM, | ||
71 | RZERO_341_OHM, | ||
72 | RZERO_135_OHM, | ||
73 | RZERO_10_OHM, | ||
74 | RZERO_USE_EXT_RES = 8, | ||
75 | }; | ||
76 | |||
77 | enum rpole2_resistor { | ||
78 | RPOLE2_900_OHM, | ||
79 | RPOLE2_450_OHM, | ||
80 | RPOLE2_300_OHM, | ||
81 | RPOLE2_225_OHM, | ||
82 | }; | ||
83 | |||
84 | enum rzero_resistor { | ||
85 | RZERO_3250_OHM, | ||
86 | RZERO_2750_OHM, | ||
87 | RZERO_2250_OHM, | ||
88 | RZERO_2100_OHM, | ||
89 | RZERO_3000_OHM, | ||
90 | RZERO_2500_OHM, | ||
91 | RZERO_2000_OHM, | ||
92 | RZERO_1850_OHM, | ||
93 | }; | ||
94 | |||
95 | enum cpole1_capacitor { | ||
96 | CPOLE1_0_PF, | ||
97 | CPOLE1_8_PF, | ||
98 | CPOLE1_16_PF, | ||
99 | CPOLE1_24_PF, | ||
100 | _CPOLE1_24_PF, /* place holder */ | ||
101 | CPOLE1_32_PF, | ||
102 | CPOLE1_40_PF, | ||
103 | CPOLE1_48_PF, | ||
104 | }; | ||
105 | |||
106 | /** | ||
107 | * struct ad9523_platform_data - platform specific information | ||
108 | * | ||
109 | * @vcxo_freq: External VCXO frequency in Hz | ||
110 | * @refa_diff_rcv_en: REFA differential/single-ended input selection. | ||
111 | * @refb_diff_rcv_en: REFB differential/single-ended input selection. | ||
112 | * @zd_in_diff_en: Zero Delay differential/single-ended input selection. | ||
113 | * @osc_in_diff_en: OSC differential/ single-ended input selection. | ||
114 | * @refa_cmos_neg_inp_en: REFA single-ended neg./pos. input enable. | ||
115 | * @refb_cmos_neg_inp_en: REFB single-ended neg./pos. input enable. | ||
116 | * @zd_in_cmos_neg_inp_en: Zero Delay single-ended neg./pos. input enable. | ||
117 | * @osc_in_cmos_neg_inp_en: OSC single-ended neg./pos. input enable. | ||
118 | * @refa_r_div: PLL1 10-bit REFA R divider. | ||
119 | * @refb_r_div: PLL1 10-bit REFB R divider. | ||
120 | * @pll1_feedback_div: PLL1 10-bit Feedback N divider. | ||
121 | * @pll1_charge_pump_current_nA: Magnitude of PLL1 charge pump current (nA). | ||
122 | * @zero_delay_mode_internal_en: Internal, external Zero Delay mode selection. | ||
123 | * @osc_in_feedback_en: PLL1 feedback path, local feedback from | ||
124 | * the OSC_IN receiver or zero delay mode | ||
125 | * @pll1_loop_filter_rzero: PLL1 Loop Filter Zero Resistor selection. | ||
126 | * @ref_mode: Reference selection mode. | ||
127 | * @pll2_charge_pump_current_nA: Magnitude of PLL2 charge pump current (nA). | ||
128 | * @pll2_ndiv_a_cnt: PLL2 Feedback N-divider, A Counter, range 0..4. | ||
129 | * @pll2_ndiv_b_cnt: PLL2 Feedback N-divider, B Counter, range 0..63. | ||
130 | * @pll2_freq_doubler_en: PLL2 frequency doubler enable. | ||
131 | * @pll2_r2_div: PLL2 R2 divider, range 0..31. | ||
132 | * @pll2_vco_diff_m1: VCO1 divider, range 3..5. | ||
133 | * @pll2_vco_diff_m2: VCO2 divider, range 3..5. | ||
134 | * @rpole2: PLL2 loop filter Rpole resistor value. | ||
135 | * @rzero: PLL2 loop filter Rzero resistor value. | ||
136 | * @cpole1: PLL2 loop filter Cpole capacitor value. | ||
137 | * @rzero_bypass_en: PLL2 loop filter Rzero bypass enable. | ||
138 | * @num_channels: Array size of struct ad9523_channel_spec. | ||
139 | * @channels: Pointer to channel array. | ||
140 | * @name: Optional alternative iio device name. | ||
141 | */ | ||
142 | |||
143 | struct ad9523_platform_data { | ||
144 | unsigned long vcxo_freq; | ||
145 | |||
146 | /* Differential/ Single-Ended Input Configuration */ | ||
147 | bool refa_diff_rcv_en; | ||
148 | bool refb_diff_rcv_en; | ||
149 | bool zd_in_diff_en; | ||
150 | bool osc_in_diff_en; | ||
151 | |||
152 | /* | ||
153 | * Valid if differential input disabled | ||
154 | * if false defaults to pos input | ||
155 | */ | ||
156 | bool refa_cmos_neg_inp_en; | ||
157 | bool refb_cmos_neg_inp_en; | ||
158 | bool zd_in_cmos_neg_inp_en; | ||
159 | bool osc_in_cmos_neg_inp_en; | ||
160 | |||
161 | /* PLL1 Setting */ | ||
162 | unsigned short refa_r_div; | ||
163 | unsigned short refb_r_div; | ||
164 | unsigned short pll1_feedback_div; | ||
165 | unsigned short pll1_charge_pump_current_nA; | ||
166 | bool zero_delay_mode_internal_en; | ||
167 | bool osc_in_feedback_en; | ||
168 | enum pll1_rzero_resistor pll1_loop_filter_rzero; | ||
169 | |||
170 | /* Reference */ | ||
171 | enum ref_sel_mode ref_mode; | ||
172 | |||
173 | /* PLL2 Setting */ | ||
174 | unsigned int pll2_charge_pump_current_nA; | ||
175 | unsigned char pll2_ndiv_a_cnt; | ||
176 | unsigned char pll2_ndiv_b_cnt; | ||
177 | bool pll2_freq_doubler_en; | ||
178 | unsigned char pll2_r2_div; | ||
179 | unsigned char pll2_vco_diff_m1; /* 3..5 */ | ||
180 | unsigned char pll2_vco_diff_m2; /* 3..5 */ | ||
181 | |||
182 | /* Loop Filter PLL2 */ | ||
183 | enum rpole2_resistor rpole2; | ||
184 | enum rzero_resistor rzero; | ||
185 | enum cpole1_capacitor cpole1; | ||
186 | bool rzero_bypass_en; | ||
187 | |||
188 | /* Output Channel Configuration */ | ||
189 | int num_channels; | ||
190 | struct ad9523_channel_spec *channels; | ||
191 | |||
192 | char name[SPI_NAME_SIZE]; | ||
193 | }; | ||
194 | |||
195 | #endif /* IIO_FREQUENCY_AD9523_H_ */ | ||
diff --git a/include/linux/iio/frequency/adf4350.h b/include/linux/iio/frequency/adf4350.h new file mode 100644 index 000000000000..b76b4a87065e --- /dev/null +++ b/include/linux/iio/frequency/adf4350.h | |||
@@ -0,0 +1,126 @@ | |||
1 | /* | ||
2 | * ADF4350/ADF4351 SPI PLL driver | ||
3 | * | ||
4 | * Copyright 2012 Analog Devices Inc. | ||
5 | * | ||
6 | * Licensed under the GPL-2. | ||
7 | */ | ||
8 | |||
9 | #ifndef IIO_PLL_ADF4350_H_ | ||
10 | #define IIO_PLL_ADF4350_H_ | ||
11 | |||
12 | /* Registers */ | ||
13 | #define ADF4350_REG0 0 | ||
14 | #define ADF4350_REG1 1 | ||
15 | #define ADF4350_REG2 2 | ||
16 | #define ADF4350_REG3 3 | ||
17 | #define ADF4350_REG4 4 | ||
18 | #define ADF4350_REG5 5 | ||
19 | |||
20 | /* REG0 Bit Definitions */ | ||
21 | #define ADF4350_REG0_FRACT(x) (((x) & 0xFFF) << 3) | ||
22 | #define ADF4350_REG0_INT(x) (((x) & 0xFFFF) << 15) | ||
23 | |||
24 | /* REG1 Bit Definitions */ | ||
25 | #define ADF4350_REG1_MOD(x) (((x) & 0xFFF) << 3) | ||
26 | #define ADF4350_REG1_PHASE(x) (((x) & 0xFFF) << 15) | ||
27 | #define ADF4350_REG1_PRESCALER (1 << 27) | ||
28 | |||
29 | /* REG2 Bit Definitions */ | ||
30 | #define ADF4350_REG2_COUNTER_RESET_EN (1 << 3) | ||
31 | #define ADF4350_REG2_CP_THREESTATE_EN (1 << 4) | ||
32 | #define ADF4350_REG2_POWER_DOWN_EN (1 << 5) | ||
33 | #define ADF4350_REG2_PD_POLARITY_POS (1 << 6) | ||
34 | #define ADF4350_REG2_LDP_6ns (1 << 7) | ||
35 | #define ADF4350_REG2_LDP_10ns (0 << 7) | ||
36 | #define ADF4350_REG2_LDF_FRACT_N (0 << 8) | ||
37 | #define ADF4350_REG2_LDF_INT_N (1 << 8) | ||
38 | #define ADF4350_REG2_CHARGE_PUMP_CURR_uA(x) (((((x)-312) / 312) & 0xF) << 9) | ||
39 | #define ADF4350_REG2_DOUBLE_BUFF_EN (1 << 13) | ||
40 | #define ADF4350_REG2_10BIT_R_CNT(x) ((x) << 14) | ||
41 | #define ADF4350_REG2_RDIV2_EN (1 << 24) | ||
42 | #define ADF4350_REG2_RMULT2_EN (1 << 25) | ||
43 | #define ADF4350_REG2_MUXOUT(x) ((x) << 26) | ||
44 | #define ADF4350_REG2_NOISE_MODE(x) ((x) << 29) | ||
45 | #define ADF4350_MUXOUT_THREESTATE 0 | ||
46 | #define ADF4350_MUXOUT_DVDD 1 | ||
47 | #define ADF4350_MUXOUT_GND 2 | ||
48 | #define ADF4350_MUXOUT_R_DIV_OUT 3 | ||
49 | #define ADF4350_MUXOUT_N_DIV_OUT 4 | ||
50 | #define ADF4350_MUXOUT_ANALOG_LOCK_DETECT 5 | ||
51 | #define ADF4350_MUXOUT_DIGITAL_LOCK_DETECT 6 | ||
52 | |||
53 | /* REG3 Bit Definitions */ | ||
54 | #define ADF4350_REG3_12BIT_CLKDIV(x) ((x) << 3) | ||
55 | #define ADF4350_REG3_12BIT_CLKDIV_MODE(x) ((x) << 16) | ||
56 | #define ADF4350_REG3_12BIT_CSR_EN (1 << 18) | ||
57 | #define ADF4351_REG3_CHARGE_CANCELLATION_EN (1 << 21) | ||
58 | #define ADF4351_REG3_ANTI_BACKLASH_3ns_EN (1 << 22) | ||
59 | #define ADF4351_REG3_BAND_SEL_CLOCK_MODE_HIGH (1 << 23) | ||
60 | |||
61 | /* REG4 Bit Definitions */ | ||
62 | #define ADF4350_REG4_OUTPUT_PWR(x) ((x) << 3) | ||
63 | #define ADF4350_REG4_RF_OUT_EN (1 << 5) | ||
64 | #define ADF4350_REG4_AUX_OUTPUT_PWR(x) ((x) << 6) | ||
65 | #define ADF4350_REG4_AUX_OUTPUT_EN (1 << 8) | ||
66 | #define ADF4350_REG4_AUX_OUTPUT_FUND (1 << 9) | ||
67 | #define ADF4350_REG4_AUX_OUTPUT_DIV (0 << 9) | ||
68 | #define ADF4350_REG4_MUTE_TILL_LOCK_EN (1 << 10) | ||
69 | #define ADF4350_REG4_VCO_PWRDOWN_EN (1 << 11) | ||
70 | #define ADF4350_REG4_8BIT_BAND_SEL_CLKDIV(x) ((x) << 12) | ||
71 | #define ADF4350_REG4_RF_DIV_SEL(x) ((x) << 20) | ||
72 | #define ADF4350_REG4_FEEDBACK_DIVIDED (0 << 23) | ||
73 | #define ADF4350_REG4_FEEDBACK_FUND (1 << 23) | ||
74 | |||
75 | /* REG5 Bit Definitions */ | ||
76 | #define ADF4350_REG5_LD_PIN_MODE_LOW (0 << 22) | ||
77 | #define ADF4350_REG5_LD_PIN_MODE_DIGITAL (1 << 22) | ||
78 | #define ADF4350_REG5_LD_PIN_MODE_HIGH (3 << 22) | ||
79 | |||
80 | /* Specifications */ | ||
81 | #define ADF4350_MAX_OUT_FREQ 4400000000ULL /* Hz */ | ||
82 | #define ADF4350_MIN_OUT_FREQ 137500000 /* Hz */ | ||
83 | #define ADF4351_MIN_OUT_FREQ 34375000 /* Hz */ | ||
84 | #define ADF4350_MIN_VCO_FREQ 2200000000ULL /* Hz */ | ||
85 | #define ADF4350_MAX_FREQ_45_PRESC 3000000000ULL /* Hz */ | ||
86 | #define ADF4350_MAX_FREQ_PFD 32000000 /* Hz */ | ||
87 | #define ADF4350_MAX_BANDSEL_CLK 125000 /* Hz */ | ||
88 | #define ADF4350_MAX_FREQ_REFIN 250000000 /* Hz */ | ||
89 | #define ADF4350_MAX_MODULUS 4095 | ||
90 | |||
91 | /** | ||
92 | * struct adf4350_platform_data - platform specific information | ||
93 | * @name: Optional device name. | ||
94 | * @clkin: REFin frequency in Hz. | ||
95 | * @channel_spacing: Channel spacing in Hz (influences MODULUS). | ||
96 | * @power_up_frequency: Optional, If set in Hz the PLL tunes to the desired | ||
97 | * frequency on probe. | ||
98 | * @ref_div_factor: Optional, if set the driver skips dynamic calculation | ||
99 | * and uses this default value instead. | ||
100 | * @ref_doubler_en: Enables reference doubler. | ||
101 | * @ref_div2_en: Enables reference divider. | ||
102 | * @r2_user_settings: User defined settings for ADF4350/1 REGISTER_2. | ||
103 | * @r3_user_settings: User defined settings for ADF4350/1 REGISTER_3. | ||
104 | * @r4_user_settings: User defined settings for ADF4350/1 REGISTER_4. | ||
105 | * @gpio_lock_detect: Optional, if set with a valid GPIO number, | ||
106 | * pll lock state is tested upon read. | ||
107 | * If not used - set to -1. | ||
108 | */ | ||
109 | |||
110 | struct adf4350_platform_data { | ||
111 | char name[32]; | ||
112 | unsigned long clkin; | ||
113 | unsigned long channel_spacing; | ||
114 | unsigned long long power_up_frequency; | ||
115 | |||
116 | unsigned short ref_div_factor; /* 10-bit R counter */ | ||
117 | bool ref_doubler_en; | ||
118 | bool ref_div2_en; | ||
119 | |||
120 | unsigned r2_user_settings; | ||
121 | unsigned r3_user_settings; | ||
122 | unsigned r4_user_settings; | ||
123 | int gpio_lock_detect; | ||
124 | }; | ||
125 | |||
126 | #endif /* IIO_PLL_ADF4350_H_ */ | ||
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h index 3a4f6a3ab80d..be82936c4089 100644 --- a/include/linux/iio/iio.h +++ b/include/linux/iio/iio.h | |||
@@ -130,14 +130,78 @@ struct iio_chan_spec_ext_info { | |||
130 | }; | 130 | }; |
131 | 131 | ||
132 | /** | 132 | /** |
133 | * struct iio_enum - Enum channel info attribute | ||
134 | * @items: An array of strings. | ||
135 | * @num_items: Length of the item array. | ||
136 | * @set: Set callback function, may be NULL. | ||
137 | * @get: Get callback function, may be NULL. | ||
138 | * | ||
139 | * The iio_enum struct can be used to implement enum style channel attributes. | ||
140 | * Enum style attributes are those which have a set of strings which map to | ||
141 | * unsigned integer values. The IIO enum helper code takes care of mapping | ||
142 | * between value and string as well as generating a "_available" file which | ||
143 | * contains a list of all available items. The set callback will be called when | ||
144 | * the attribute is updated. The last parameter is the index to the newly | ||
145 | * activated item. The get callback will be used to query the currently active | ||
146 | * item and is supposed to return the index for it. | ||
147 | */ | ||
148 | struct iio_enum { | ||
149 | const char * const *items; | ||
150 | unsigned int num_items; | ||
151 | int (*set)(struct iio_dev *, const struct iio_chan_spec *, unsigned int); | ||
152 | int (*get)(struct iio_dev *, const struct iio_chan_spec *); | ||
153 | }; | ||
154 | |||
155 | ssize_t iio_enum_available_read(struct iio_dev *indio_dev, | ||
156 | uintptr_t priv, const struct iio_chan_spec *chan, char *buf); | ||
157 | ssize_t iio_enum_read(struct iio_dev *indio_dev, | ||
158 | uintptr_t priv, const struct iio_chan_spec *chan, char *buf); | ||
159 | ssize_t iio_enum_write(struct iio_dev *indio_dev, | ||
160 | uintptr_t priv, const struct iio_chan_spec *chan, const char *buf, | ||
161 | size_t len); | ||
162 | |||
163 | /** | ||
164 | * IIO_ENUM() - Initialize enum extended channel attribute | ||
165 | * @_name: Attribute name | ||
166 | * @_shared: Whether the attribute is shared between all channels | ||
167 | * @_e: Pointer to a iio_enum struct | ||
168 | * | ||
169 | * This should usually be used together with IIO_ENUM_AVAILABLE() | ||
170 | */ | ||
171 | #define IIO_ENUM(_name, _shared, _e) \ | ||
172 | { \ | ||
173 | .name = (_name), \ | ||
174 | .shared = (_shared), \ | ||
175 | .read = iio_enum_read, \ | ||
176 | .write = iio_enum_write, \ | ||
177 | .private = (uintptr_t)(_e), \ | ||
178 | } | ||
179 | |||
180 | /** | ||
181 | * IIO_ENUM_AVAILABLE() - Initialize enum available extended channel attribute | ||
182 | * @_name: Attribute name ("_available" will be appended to the name) | ||
183 | * @_e: Pointer to a iio_enum struct | ||
184 | * | ||
185 | * Creates a read only attribute which list all the available enum items in a | ||
186 | * space separated list. This should usually be used together with IIO_ENUM() | ||
187 | */ | ||
188 | #define IIO_ENUM_AVAILABLE(_name, _e) \ | ||
189 | { \ | ||
190 | .name = (_name "_available"), \ | ||
191 | .shared = true, \ | ||
192 | .read = iio_enum_available_read, \ | ||
193 | .private = (uintptr_t)(_e), \ | ||
194 | } | ||
195 | |||
196 | /** | ||
133 | * struct iio_chan_spec - specification of a single channel | 197 | * struct iio_chan_spec - specification of a single channel |
134 | * @type: What type of measurement is the channel making. | 198 | * @type: What type of measurement is the channel making. |
135 | * @channel: What number or name do we wish to assign the channel. | 199 | * @channel: What number do we wish to assign the channel. |
136 | * @channel2: If there is a second number for a differential | 200 | * @channel2: If there is a second number for a differential |
137 | * channel then this is it. If modified is set then the | 201 | * channel then this is it. If modified is set then the |
138 | * value here specifies the modifier. | 202 | * value here specifies the modifier. |
139 | * @address: Driver specific identifier. | 203 | * @address: Driver specific identifier. |
140 | * @scan_index: Monotonic index to give ordering in scans when read | 204 | * @scan_index: Monotonic index to give ordering in scans when read |
141 | * from a buffer. | 205 | * from a buffer. |
142 | * @scan_type: Sign: 's' or 'u' to specify signed or unsigned | 206 | * @scan_type: Sign: 's' or 'u' to specify signed or unsigned |
143 | * realbits: Number of valid bits of data | 207 | * realbits: Number of valid bits of data |
@@ -147,14 +211,14 @@ struct iio_chan_spec_ext_info { | |||
147 | * endianness: little or big endian | 211 | * endianness: little or big endian |
148 | * @info_mask: What information is to be exported about this channel. | 212 | * @info_mask: What information is to be exported about this channel. |
149 | * This includes calibbias, scale etc. | 213 | * This includes calibbias, scale etc. |
150 | * @event_mask: What events can this channel produce. | 214 | * @event_mask: What events can this channel produce. |
151 | * @ext_info: Array of extended info attributes for this channel. | 215 | * @ext_info: Array of extended info attributes for this channel. |
152 | * The array is NULL terminated, the last element should | 216 | * The array is NULL terminated, the last element should |
153 | * have it's name field set to NULL. | 217 | * have its name field set to NULL. |
154 | * @extend_name: Allows labeling of channel attributes with an | 218 | * @extend_name: Allows labeling of channel attributes with an |
155 | * informative name. Note this has no effect codes etc, | 219 | * informative name. Note this has no effect codes etc, |
156 | * unlike modifiers. | 220 | * unlike modifiers. |
157 | * @datasheet_name: A name used in in kernel mapping of channels. It should | 221 | * @datasheet_name: A name used in in-kernel mapping of channels. It should |
158 | * correspond to the first name that the channel is referred | 222 | * correspond to the first name that the channel is referred |
159 | * to by in the datasheet (e.g. IND), or the nearest | 223 | * to by in the datasheet (e.g. IND), or the nearest |
160 | * possible compound name (e.g. IND-INC). | 224 | * possible compound name (e.g. IND-INC). |
@@ -163,9 +227,8 @@ struct iio_chan_spec_ext_info { | |||
163 | * channel2. Examples are IIO_MOD_X for axial sensors about | 227 | * channel2. Examples are IIO_MOD_X for axial sensors about |
164 | * the 'x' axis. | 228 | * the 'x' axis. |
165 | * @indexed: Specify the channel has a numerical index. If not, | 229 | * @indexed: Specify the channel has a numerical index. If not, |
166 | * the value in channel will be suppressed for attribute | 230 | * the channel index number will be suppressed for sysfs |
167 | * but not for event codes. Typically set it to 0 when | 231 | * attributes but not for event codes. |
168 | * the index is false. | ||
169 | * @differential: Channel is differential. | 232 | * @differential: Channel is differential. |
170 | */ | 233 | */ |
171 | struct iio_chan_spec { | 234 | struct iio_chan_spec { |
@@ -300,12 +363,16 @@ struct iio_info { | |||
300 | * @predisable: [DRIVER] function to run prior to marking buffer | 363 | * @predisable: [DRIVER] function to run prior to marking buffer |
301 | * disabled | 364 | * disabled |
302 | * @postdisable: [DRIVER] function to run after marking buffer disabled | 365 | * @postdisable: [DRIVER] function to run after marking buffer disabled |
366 | * @validate_scan_mask: [DRIVER] function callback to check whether a given | ||
367 | * scan mask is valid for the device. | ||
303 | */ | 368 | */ |
304 | struct iio_buffer_setup_ops { | 369 | struct iio_buffer_setup_ops { |
305 | int (*preenable)(struct iio_dev *); | 370 | int (*preenable)(struct iio_dev *); |
306 | int (*postenable)(struct iio_dev *); | 371 | int (*postenable)(struct iio_dev *); |
307 | int (*predisable)(struct iio_dev *); | 372 | int (*predisable)(struct iio_dev *); |
308 | int (*postdisable)(struct iio_dev *); | 373 | int (*postdisable)(struct iio_dev *); |
374 | bool (*validate_scan_mask)(struct iio_dev *indio_dev, | ||
375 | const unsigned long *scan_mask); | ||
309 | }; | 376 | }; |
310 | 377 | ||
311 | /** | 378 | /** |
@@ -329,7 +396,7 @@ struct iio_buffer_setup_ops { | |||
329 | * @trig: [INTERN] current device trigger (buffer modes) | 396 | * @trig: [INTERN] current device trigger (buffer modes) |
330 | * @pollfunc: [DRIVER] function run on trigger being received | 397 | * @pollfunc: [DRIVER] function run on trigger being received |
331 | * @channels: [DRIVER] channel specification structure table | 398 | * @channels: [DRIVER] channel specification structure table |
332 | * @num_channels: [DRIVER] number of chanels specified in @channels. | 399 | * @num_channels: [DRIVER] number of channels specified in @channels. |
333 | * @channel_attr_list: [INTERN] keep track of automatically created channel | 400 | * @channel_attr_list: [INTERN] keep track of automatically created channel |
334 | * attributes | 401 | * attributes |
335 | * @chan_attr_group: [INTERN] group for all attrs in base directory | 402 | * @chan_attr_group: [INTERN] group for all attrs in base directory |
@@ -419,7 +486,7 @@ extern struct bus_type iio_bus_type; | |||
419 | 486 | ||
420 | /** | 487 | /** |
421 | * iio_device_put() - reference counted deallocation of struct device | 488 | * iio_device_put() - reference counted deallocation of struct device |
422 | * @dev: the iio_device containing the device | 489 | * @indio_dev: IIO device structure containing the device |
423 | **/ | 490 | **/ |
424 | static inline void iio_device_put(struct iio_dev *indio_dev) | 491 | static inline void iio_device_put(struct iio_dev *indio_dev) |
425 | { | 492 | { |
@@ -429,7 +496,7 @@ static inline void iio_device_put(struct iio_dev *indio_dev) | |||
429 | 496 | ||
430 | /** | 497 | /** |
431 | * dev_to_iio_dev() - Get IIO device struct from a device struct | 498 | * dev_to_iio_dev() - Get IIO device struct from a device struct |
432 | * @dev: The device embedded in the IIO device | 499 | * @dev: The device embedded in the IIO device |
433 | * | 500 | * |
434 | * Note: The device must be a IIO device, otherwise the result is undefined. | 501 | * Note: The device must be a IIO device, otherwise the result is undefined. |
435 | */ | 502 | */ |
@@ -438,11 +505,22 @@ static inline struct iio_dev *dev_to_iio_dev(struct device *dev) | |||
438 | return container_of(dev, struct iio_dev, dev); | 505 | return container_of(dev, struct iio_dev, dev); |
439 | } | 506 | } |
440 | 507 | ||
508 | /** | ||
509 | * iio_device_get() - increment reference count for the device | ||
510 | * @indio_dev: IIO device structure | ||
511 | * | ||
512 | * Returns: The passed IIO device | ||
513 | **/ | ||
514 | static inline struct iio_dev *iio_device_get(struct iio_dev *indio_dev) | ||
515 | { | ||
516 | return indio_dev ? dev_to_iio_dev(get_device(&indio_dev->dev)) : NULL; | ||
517 | } | ||
518 | |||
441 | /* Can we make this smaller? */ | 519 | /* Can we make this smaller? */ |
442 | #define IIO_ALIGN L1_CACHE_BYTES | 520 | #define IIO_ALIGN L1_CACHE_BYTES |
443 | /** | 521 | /** |
444 | * iio_device_alloc() - allocate an iio_dev from a driver | 522 | * iio_device_alloc() - allocate an iio_dev from a driver |
445 | * @sizeof_priv: Space to allocate for private structure. | 523 | * @sizeof_priv: Space to allocate for private structure. |
446 | **/ | 524 | **/ |
447 | struct iio_dev *iio_device_alloc(int sizeof_priv); | 525 | struct iio_dev *iio_device_alloc(int sizeof_priv); |
448 | 526 | ||
@@ -459,13 +537,13 @@ static inline struct iio_dev *iio_priv_to_dev(void *priv) | |||
459 | 537 | ||
460 | /** | 538 | /** |
461 | * iio_device_free() - free an iio_dev from a driver | 539 | * iio_device_free() - free an iio_dev from a driver |
462 | * @dev: the iio_dev associated with the device | 540 | * @indio_dev: the iio_dev associated with the device |
463 | **/ | 541 | **/ |
464 | void iio_device_free(struct iio_dev *indio_dev); | 542 | void iio_device_free(struct iio_dev *indio_dev); |
465 | 543 | ||
466 | /** | 544 | /** |
467 | * iio_buffer_enabled() - helper function to test if the buffer is enabled | 545 | * iio_buffer_enabled() - helper function to test if the buffer is enabled |
468 | * @indio_dev: IIO device info structure for device | 546 | * @indio_dev: IIO device structure for device |
469 | **/ | 547 | **/ |
470 | static inline bool iio_buffer_enabled(struct iio_dev *indio_dev) | 548 | static inline bool iio_buffer_enabled(struct iio_dev *indio_dev) |
471 | { | 549 | { |
@@ -475,7 +553,7 @@ static inline bool iio_buffer_enabled(struct iio_dev *indio_dev) | |||
475 | 553 | ||
476 | /** | 554 | /** |
477 | * iio_get_debugfs_dentry() - helper function to get the debugfs_dentry | 555 | * iio_get_debugfs_dentry() - helper function to get the debugfs_dentry |
478 | * @indio_dev: IIO device info structure for device | 556 | * @indio_dev: IIO device structure for device |
479 | **/ | 557 | **/ |
480 | #if defined(CONFIG_DEBUG_FS) | 558 | #if defined(CONFIG_DEBUG_FS) |
481 | static inline struct dentry *iio_get_debugfs_dentry(struct iio_dev *indio_dev) | 559 | static inline struct dentry *iio_get_debugfs_dentry(struct iio_dev *indio_dev) |
diff --git a/include/linux/iio/machine.h b/include/linux/iio/machine.h index 0b1f19bfdc44..400a453ff67b 100644 --- a/include/linux/iio/machine.h +++ b/include/linux/iio/machine.h | |||
@@ -14,7 +14,7 @@ | |||
14 | * This is matched against the datasheet_name element | 14 | * This is matched against the datasheet_name element |
15 | * of struct iio_chan_spec. | 15 | * of struct iio_chan_spec. |
16 | * @consumer_dev_name: Name to uniquely identify the consumer device. | 16 | * @consumer_dev_name: Name to uniquely identify the consumer device. |
17 | * @consumer_channel: Unique name used to idenitify the channel on the | 17 | * @consumer_channel: Unique name used to identify the channel on the |
18 | * consumer side. | 18 | * consumer side. |
19 | */ | 19 | */ |
20 | struct iio_map { | 20 | struct iio_map { |
diff --git a/include/linux/iio/sysfs.h b/include/linux/iio/sysfs.h index bfedb73b850e..b7a934b9431b 100644 --- a/include/linux/iio/sysfs.h +++ b/include/linux/iio/sysfs.h | |||
@@ -97,7 +97,7 @@ struct iio_const_attr { | |||
97 | #define IIO_DEV_ATTR_SAMP_FREQ_AVAIL(_show) \ | 97 | #define IIO_DEV_ATTR_SAMP_FREQ_AVAIL(_show) \ |
98 | IIO_DEVICE_ATTR(sampling_frequency_available, S_IRUGO, _show, NULL, 0) | 98 | IIO_DEVICE_ATTR(sampling_frequency_available, S_IRUGO, _show, NULL, 0) |
99 | /** | 99 | /** |
100 | * IIO_CONST_ATTR_AVAIL_SAMP_FREQ - list available sampling frequencies | 100 | * IIO_CONST_ATTR_SAMP_FREQ_AVAIL - list available sampling frequencies |
101 | * @_string: frequency string for the attribute | 101 | * @_string: frequency string for the attribute |
102 | * | 102 | * |
103 | * Constant version | 103 | * Constant version |
diff --git a/include/linux/iio/triggered_buffer.h b/include/linux/iio/triggered_buffer.h new file mode 100644 index 000000000000..c378ebec605e --- /dev/null +++ b/include/linux/iio/triggered_buffer.h | |||
@@ -0,0 +1,15 @@ | |||
1 | #ifndef _LINUX_IIO_TRIGGERED_BUFFER_H_ | ||
2 | #define _LINUX_IIO_TRIGGERED_BUFFER_H_ | ||
3 | |||
4 | #include <linux/interrupt.h> | ||
5 | |||
6 | struct iio_dev; | ||
7 | struct iio_buffer_setup_ops; | ||
8 | |||
9 | int iio_triggered_buffer_setup(struct iio_dev *indio_dev, | ||
10 | irqreturn_t (*pollfunc_bh)(int irq, void *p), | ||
11 | irqreturn_t (*pollfunc_th)(int irq, void *p), | ||
12 | const struct iio_buffer_setup_ops *setup_ops); | ||
13 | void iio_triggered_buffer_cleanup(struct iio_dev *indio_dev); | ||
14 | |||
15 | #endif | ||
diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h index 1b073b1cc7c2..44e397705d7f 100644 --- a/include/linux/iio/types.h +++ b/include/linux/iio/types.h | |||
@@ -11,7 +11,6 @@ | |||
11 | #define _IIO_TYPES_H_ | 11 | #define _IIO_TYPES_H_ |
12 | 12 | ||
13 | enum iio_chan_type { | 13 | enum iio_chan_type { |
14 | /* real channel types */ | ||
15 | IIO_VOLTAGE, | 14 | IIO_VOLTAGE, |
16 | IIO_CURRENT, | 15 | IIO_CURRENT, |
17 | IIO_POWER, | 16 | IIO_POWER, |
@@ -28,6 +27,7 @@ enum iio_chan_type { | |||
28 | IIO_TIMESTAMP, | 27 | IIO_TIMESTAMP, |
29 | IIO_CAPACITANCE, | 28 | IIO_CAPACITANCE, |
30 | IIO_ALTVOLTAGE, | 29 | IIO_ALTVOLTAGE, |
30 | IIO_CCT, | ||
31 | }; | 31 | }; |
32 | 32 | ||
33 | enum iio_modifier { | 33 | enum iio_modifier { |
@@ -45,6 +45,12 @@ enum iio_modifier { | |||
45 | IIO_MOD_X_OR_Y_OR_Z, | 45 | IIO_MOD_X_OR_Y_OR_Z, |
46 | IIO_MOD_LIGHT_BOTH, | 46 | IIO_MOD_LIGHT_BOTH, |
47 | IIO_MOD_LIGHT_IR, | 47 | IIO_MOD_LIGHT_IR, |
48 | IIO_MOD_ROOT_SUM_SQUARED_X_Y, | ||
49 | IIO_MOD_SUM_SQUARED_X_Y_Z, | ||
50 | IIO_MOD_LIGHT_CLEAR, | ||
51 | IIO_MOD_LIGHT_RED, | ||
52 | IIO_MOD_LIGHT_GREEN, | ||
53 | IIO_MOD_LIGHT_BLUE, | ||
48 | }; | 54 | }; |
49 | 55 | ||
50 | #define IIO_VAL_INT 1 | 56 | #define IIO_VAL_INT 1 |