Merge tag 'iio-fixes-for-4.5b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-linus

Jonathan writes:

Second set of IIO fixes for the 4.5 cycle. These ones are mostly
dependent on patches from the recent merge cycle.

* adc, imu and iio staging drivers
- !HAS_IOMEM dependency fixes
* dht11
- use boottime clock for time measurement to avoid incorrect measurements
due to clock updates.
* lidar
- correct a return value for short i2c transfers.

Changed files
+9 -6
drivers
iio
adc
humidity
imu
inv_mpu6050
proximity
staging
iio
adc
+2
drivers/iio/adc/Kconfig
··· 175 175 config EXYNOS_ADC 176 176 tristate "Exynos ADC driver support" 177 177 depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || (OF && COMPILE_TEST) 178 + depends on HAS_IOMEM 178 179 help 179 180 Core support for the ADC block found in the Samsung EXYNOS series 180 181 of SoCs for drivers such as the touchscreen and hwmon to use to share ··· 208 207 config IMX7D_ADC 209 208 tristate "IMX7D ADC driver" 210 209 depends on ARCH_MXC || COMPILE_TEST 210 + depends on HAS_IOMEM 211 211 help 212 212 Say yes here to build support for IMX7D ADC. 213 213
+4 -4
drivers/iio/humidity/dht11.c
··· 117 117 if (((hum_int + hum_dec + temp_int + temp_dec) & 0xff) != checksum) 118 118 return -EIO; 119 119 120 - dht11->timestamp = ktime_get_real_ns(); 120 + dht11->timestamp = ktime_get_boot_ns(); 121 121 if (hum_int < 20) { /* DHT22 */ 122 122 dht11->temperature = (((temp_int & 0x7f) << 8) + temp_dec) * 123 123 ((temp_int & 0x80) ? -100 : 100); ··· 145 145 146 146 /* TODO: Consider making the handler safe for IRQ sharing */ 147 147 if (dht11->num_edges < DHT11_EDGES_PER_READ && dht11->num_edges >= 0) { 148 - dht11->edges[dht11->num_edges].ts = ktime_get_real_ns(); 148 + dht11->edges[dht11->num_edges].ts = ktime_get_boot_ns(); 149 149 dht11->edges[dht11->num_edges++].value = 150 150 gpio_get_value(dht11->gpio); 151 151 ··· 164 164 int ret, timeres; 165 165 166 166 mutex_lock(&dht11->lock); 167 - if (dht11->timestamp + DHT11_DATA_VALID_TIME < ktime_get_real_ns()) { 167 + if (dht11->timestamp + DHT11_DATA_VALID_TIME < ktime_get_boot_ns()) { 168 168 timeres = ktime_get_resolution_ns(); 169 169 if (DHT11_DATA_BIT_HIGH < 2 * timeres) { 170 170 dev_err(dht11->dev, "timeresolution %dns too low\n", ··· 279 279 return -EINVAL; 280 280 } 281 281 282 - dht11->timestamp = ktime_get_real_ns() - DHT11_DATA_VALID_TIME - 1; 282 + dht11->timestamp = ktime_get_boot_ns() - DHT11_DATA_VALID_TIME - 1; 283 283 dht11->num_edges = -1; 284 284 285 285 platform_set_drvdata(pdev, iio);
+1 -1
drivers/iio/imu/inv_mpu6050/Kconfig
··· 5 5 config INV_MPU6050_IIO 6 6 tristate "Invensense MPU6050 devices" 7 7 depends on I2C && SYSFS 8 + depends on I2C_MUX 8 9 select IIO_BUFFER 9 10 select IIO_TRIGGERED_BUFFER 10 - select I2C_MUX 11 11 help 12 12 This driver supports the Invensense MPU6050 devices. 13 13 This driver can also support MPU6500 in MPU6050 compatibility mode
+1 -1
drivers/iio/proximity/pulsedlight-lidar-lite-v2.c
··· 87 87 88 88 ret = i2c_transfer(client->adapter, msg, 2); 89 89 90 - return (ret == 2) ? 0 : ret; 90 + return (ret == 2) ? 0 : -EIO; 91 91 } 92 92 93 93 static int lidar_smbus_xfer(struct lidar_data *data, u8 reg, u8 *val, int len)
+1
drivers/staging/iio/adc/Kconfig
··· 6 6 config AD7606 7 7 tristate "Analog Devices AD7606 ADC driver" 8 8 depends on GPIOLIB || COMPILE_TEST 9 + depends on HAS_IOMEM 9 10 select IIO_BUFFER 10 11 select IIO_TRIGGERED_BUFFER 11 12 help