FAILED: patch "[PATCH] iio: magnetometer: st_magn: fix drdy line configuration for" failed to apply to 4.13-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.13-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
c65e3d6ef4bfdc4c8460509f08507cf7dc026974Mon Sep 17 00:00:00 2001
From: Lorenzo Bianconi <[email protected]>
Date: Tue, 29 Aug 2017 13:45:11 +0200
Subject: [PATCH] iio: magnetometer: st_magn: fix drdy line configuration for
LIS3MDL
Data-ready line in LIS3MDL is routed to drdy pin and it is not possible to select a different INT pin. st_sensors_set_dataready_irq() assumes that if drdy int address is not exported in register map, irq trigger is not supported by the sensor and hw_irq_trigger is always false. Based on this configuration st_sensors_irq_thread does not consume generated interrupt causing an unhandled irq.
Fix this taking into account status register address in st_sensors_set_dataready_irq()
drivers/iio/common/st_sensors/st_sensors_core.c +10 -1
@@ -463,8 +463,17 @@ int st_sensors_set_dataready_irq(struct iio_dev *indio_dev, bool enable)u8 drdy_mask;struct st_sensor_data *sdata =iio_priv (indio_dev); -if (!sdata->sensor_settings->drdy_irq.addr) +if (!sdata->sensor_settings->drdy_irq.addr) { +/* +* there are some devices (e.g. LIS3MDL) where drdy line is +* routed to a given pin and it is not possible to select a +* different one. Take into account irq status register +* to understand if irq trigger can be properly supported +*/ +if (sdata->sensor_settings->drdy_irq.addr_stat_drdy) + sdata->hw_irq_trigger = enable;return 0 ; + }/* Enable/Disable the interrupt generator 1. */ if (sdata->sensor_settings->drdy_irq.ig1.en_addr >0 ) {
drivers/iio/magnetometer/st_magn_core.c +4 -0
@@ -315,6 +315,10 @@ static const struct st_sensor_settings st_magn_sensors_settings[] = { }, }, }, + .drdy_irq = { +/* drdy line is routed drdy pin */ + .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR, + }, .multi_read_bit = true, .bootime = 2, },