diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-08-05 02:14:26 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-08-05 02:14:26 -0400 |
| commit | a083c4f2158fb214a42e0739f8aac6955a3ce8df (patch) | |
| tree | 7eb07292be99f5203dce37578aa94e049a9c4b9c /include | |
| parent | b59fe845916db1812473c9310e490b6c375d6255 (diff) | |
| parent | cd6fe06588423ff4cca85c85c4402027b04dccf1 (diff) | |
Merge tag 'iio-for-3.12a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next
Jonathan writes:
First round of new IIO drivers, features and cleanups for the 3.12 cycle.
There has been a lot of good work going into IIO recently, some of which
missed this pull request purely because I haven't caught up with all my
emails.
Core changes
1) Introduction of devm_iio_device_alloc/free and conversions of lots of
drivers (37 + patches so far mostly from Sachin)
2) A Kconfig option to enabled some debug logging subsystem wide.
New drivers
1) Nuvoton NAU7802 adc driver
2) Avago APDS9300 ambient light sensor driver.
Staging graduations
1) ADIS16260 gyroscope (after a lot fo cleaning up from Lars-Peter)
New driver features
1) ST-sensors gain control of which pin is used for dataready.
2) mcp4725 gains eeprom saving (a later fix deals with a wrong return type
bug in that patch)
3) A number of drivers have gained module alias' to aid autoloading.
Cleanups and minor bug fixes.
1) A number of typos in Kconfig comments
2) Drop remaining mentions of ring buffers (now just buffers)
3) Overrestrictive i2c function checking in the invensense mpu6050 driver
4) Some help text clarifications.
5) store_eeprom is now used in several drivers so move to generic abi docs.
6) Update dac power down options.
7) Add some error handlign to mxs-lradc on stmp_reset_block call.
8) Lars fixed the alphabetical order in various files and added comments
to try and prevent them getting messed up again.
9) Dropped some remaining 'reset' attributes for drivers. We have never
seen a reason why these should be available. Finally the macro
used to define many of these has gone.
10) lps331ap gets an easier to check temperature scale implementation.
11) Various cleanups for the hmc5843 from Peter with a view to getting
it ready for a staging graduation.
Quite a few other little typo fixes etc.
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/iio/common/st_sensors.h | 14 | ||||
| -rw-r--r-- | include/linux/iio/iio.h | 25 | ||||
| -rw-r--r-- | include/linux/iio/sysfs.h | 5 | ||||
| -rw-r--r-- | include/linux/platform_data/st_sensors_pdata.h | 24 |
4 files changed, 60 insertions, 8 deletions
diff --git a/include/linux/iio/common/st_sensors.h b/include/linux/iio/common/st_sensors.h index 72b26940730d..e51f65480ea5 100644 --- a/include/linux/iio/common/st_sensors.h +++ b/include/linux/iio/common/st_sensors.h | |||
| @@ -17,6 +17,8 @@ | |||
| 17 | #include <linux/iio/trigger.h> | 17 | #include <linux/iio/trigger.h> |
| 18 | #include <linux/bitops.h> | 18 | #include <linux/bitops.h> |
| 19 | 19 | ||
| 20 | #include <linux/platform_data/st_sensors_pdata.h> | ||
| 21 | |||
| 20 | #define ST_SENSORS_TX_MAX_LENGTH 2 | 22 | #define ST_SENSORS_TX_MAX_LENGTH 2 |
| 21 | #define ST_SENSORS_RX_MAX_LENGTH 6 | 23 | #define ST_SENSORS_RX_MAX_LENGTH 6 |
| 22 | 24 | ||
| @@ -118,14 +120,16 @@ struct st_sensor_bdu { | |||
| 118 | /** | 120 | /** |
| 119 | * struct st_sensor_data_ready_irq - ST sensor device data-ready interrupt | 121 | * struct st_sensor_data_ready_irq - ST sensor device data-ready interrupt |
| 120 | * @addr: address of the register. | 122 | * @addr: address of the register. |
| 121 | * @mask: mask to write the on/off value. | 123 | * @mask_int1: mask to enable/disable IRQ on INT1 pin. |
| 124 | * @mask_int2: mask to enable/disable IRQ on INT2 pin. | ||
| 122 | * struct ig1 - represents the Interrupt Generator 1 of sensors. | 125 | * struct ig1 - represents the Interrupt Generator 1 of sensors. |
| 123 | * @en_addr: address of the enable ig1 register. | 126 | * @en_addr: address of the enable ig1 register. |
| 124 | * @en_mask: mask to write the on/off value for enable. | 127 | * @en_mask: mask to write the on/off value for enable. |
| 125 | */ | 128 | */ |
| 126 | struct st_sensor_data_ready_irq { | 129 | struct st_sensor_data_ready_irq { |
| 127 | u8 addr; | 130 | u8 addr; |
| 128 | u8 mask; | 131 | u8 mask_int1; |
| 132 | u8 mask_int2; | ||
| 129 | struct { | 133 | struct { |
| 130 | u8 en_addr; | 134 | u8 en_addr; |
| 131 | u8 en_mask; | 135 | u8 en_mask; |
| @@ -201,6 +205,7 @@ struct st_sensors { | |||
| 201 | * @buffer_data: Data used by buffer part. | 205 | * @buffer_data: Data used by buffer part. |
| 202 | * @odr: Output data rate of the sensor [Hz]. | 206 | * @odr: Output data rate of the sensor [Hz]. |
| 203 | * num_data_channels: Number of data channels used in buffer. | 207 | * num_data_channels: Number of data channels used in buffer. |
| 208 | * @drdy_int_pin: Redirect DRDY on pin 1 (1) or pin 2 (2). | ||
| 204 | * @get_irq_data_ready: Function to get the IRQ used for data ready signal. | 209 | * @get_irq_data_ready: Function to get the IRQ used for data ready signal. |
| 205 | * @tf: Transfer function structure used by I/O operations. | 210 | * @tf: Transfer function structure used by I/O operations. |
| 206 | * @tb: Transfer buffers and mutex used by I/O operations. | 211 | * @tb: Transfer buffers and mutex used by I/O operations. |
| @@ -219,6 +224,8 @@ struct st_sensor_data { | |||
| 219 | unsigned int odr; | 224 | unsigned int odr; |
| 220 | unsigned int num_data_channels; | 225 | unsigned int num_data_channels; |
| 221 | 226 | ||
| 227 | u8 drdy_int_pin; | ||
| 228 | |||
| 222 | unsigned int (*get_irq_data_ready) (struct iio_dev *indio_dev); | 229 | unsigned int (*get_irq_data_ready) (struct iio_dev *indio_dev); |
| 223 | 230 | ||
| 224 | const struct st_sensor_transfer_function *tf; | 231 | const struct st_sensor_transfer_function *tf; |
| @@ -249,7 +256,8 @@ static inline void st_sensors_deallocate_trigger(struct iio_dev *indio_dev) | |||
| 249 | } | 256 | } |
| 250 | #endif | 257 | #endif |
| 251 | 258 | ||
| 252 | int st_sensors_init_sensor(struct iio_dev *indio_dev); | 259 | int st_sensors_init_sensor(struct iio_dev *indio_dev, |
| 260 | struct st_sensors_platform_data *pdata); | ||
| 253 | 261 | ||
| 254 | int st_sensors_set_enable(struct iio_dev *indio_dev, bool enable); | 262 | int st_sensors_set_enable(struct iio_dev *indio_dev, bool enable); |
| 255 | 263 | ||
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h index 3d35b7023591..09ebe0a4d8e6 100644 --- a/include/linux/iio/iio.h +++ b/include/linux/iio/iio.h | |||
| @@ -532,6 +532,31 @@ static inline struct iio_dev *iio_priv_to_dev(void *priv) | |||
| 532 | void iio_device_free(struct iio_dev *indio_dev); | 532 | void iio_device_free(struct iio_dev *indio_dev); |
| 533 | 533 | ||
| 534 | /** | 534 | /** |
| 535 | * devm_iio_device_alloc - Resource-managed iio_device_alloc() | ||
| 536 | * @dev: Device to allocate iio_dev for | ||
| 537 | * @sizeof_priv: Space to allocate for private structure. | ||
| 538 | * | ||
| 539 | * Managed iio_device_alloc. iio_dev allocated with this function is | ||
| 540 | * automatically freed on driver detach. | ||
| 541 | * | ||
| 542 | * If an iio_dev allocated with this function needs to be freed separately, | ||
| 543 | * devm_iio_device_free() must be used. | ||
| 544 | * | ||
| 545 | * RETURNS: | ||
| 546 | * Pointer to allocated iio_dev on success, NULL on failure. | ||
| 547 | */ | ||
| 548 | struct iio_dev *devm_iio_device_alloc(struct device *dev, int sizeof_priv); | ||
| 549 | |||
| 550 | /** | ||
| 551 | * devm_iio_device_free - Resource-managed iio_device_free() | ||
| 552 | * @dev: Device this iio_dev belongs to | ||
| 553 | * @indio_dev: the iio_dev associated with the device | ||
| 554 | * | ||
| 555 | * Free iio_dev allocated with devm_iio_device_alloc(). | ||
| 556 | */ | ||
| 557 | void devm_iio_device_free(struct device *dev, struct iio_dev *indio_dev); | ||
| 558 | |||
| 559 | /** | ||
| 535 | * iio_buffer_enabled() - helper function to test if the buffer is enabled | 560 | * iio_buffer_enabled() - helper function to test if the buffer is enabled |
| 536 | * @indio_dev: IIO device structure for device | 561 | * @indio_dev: IIO device structure for device |
| 537 | **/ | 562 | **/ |
diff --git a/include/linux/iio/sysfs.h b/include/linux/iio/sysfs.h index b7a934b9431b..2958c960003a 100644 --- a/include/linux/iio/sysfs.h +++ b/include/linux/iio/sysfs.h | |||
| @@ -73,11 +73,6 @@ struct iio_const_attr { | |||
| 73 | .dev_attr = __ATTR(_name, S_IRUGO, iio_read_const_attr, NULL)} | 73 | .dev_attr = __ATTR(_name, S_IRUGO, iio_read_const_attr, NULL)} |
| 74 | 74 | ||
| 75 | /* Generic attributes of onetype or another */ | 75 | /* Generic attributes of onetype or another */ |
| 76 | /** | ||
| 77 | * IIO_DEV_ATTR_RESET: resets the device | ||
| 78 | **/ | ||
| 79 | #define IIO_DEV_ATTR_RESET(_store) \ | ||
| 80 | IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, _store, 0) | ||
| 81 | 76 | ||
| 82 | /** | 77 | /** |
| 83 | * IIO_DEV_ATTR_SAMP_FREQ - sets any internal clock frequency | 78 | * IIO_DEV_ATTR_SAMP_FREQ - sets any internal clock frequency |
diff --git a/include/linux/platform_data/st_sensors_pdata.h b/include/linux/platform_data/st_sensors_pdata.h new file mode 100644 index 000000000000..753839187ba0 --- /dev/null +++ b/include/linux/platform_data/st_sensors_pdata.h | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | /* | ||
| 2 | * STMicroelectronics sensors platform-data driver | ||
| 3 | * | ||
| 4 | * Copyright 2013 STMicroelectronics Inc. | ||
| 5 | * | ||
| 6 | * Denis Ciocca <denis.ciocca@st.com> | ||
| 7 | * | ||
| 8 | * Licensed under the GPL-2. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #ifndef ST_SENSORS_PDATA_H | ||
| 12 | #define ST_SENSORS_PDATA_H | ||
| 13 | |||
| 14 | /** | ||
| 15 | * struct st_sensors_platform_data - Platform data for the ST sensors | ||
| 16 | * @drdy_int_pin: Redirect DRDY on pin 1 (1) or pin 2 (2). | ||
| 17 | * Available only for accelerometer and pressure sensors. | ||
| 18 | * Accelerometer DRDY on LSM330 available only on pin 1 (see datasheet). | ||
| 19 | */ | ||
| 20 | struct st_sensors_platform_data { | ||
| 21 | u8 drdy_int_pin; | ||
| 22 | }; | ||
| 23 | |||
| 24 | #endif /* ST_SENSORS_PDATA_H */ | ||
