]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
iio: adc: cpcap: Remove hung interrupt quirk
authorTony Lindgren <tony@atomide.com>
Tue, 23 May 2017 00:51:46 +0000 (17:51 -0700)
committerJonathan Cameron <jic23@kernel.org>
Sat, 3 Jun 2017 07:43:17 +0000 (08:43 +0100)
This is no longer needed as the real problem was interrupt flags
not getting passed properly from device tree to the cpcap-core.c
mfd driver. This got fixed with commit ac89473213c6 ("mfd: cpcap:
Fix interrupt to use level interrupt") So let's remove ADC
interrupt specific the quirk.

Cc: Marcel Partap <mpartap@gmx.net>
Cc: Michael Scott <michael.scott@linaro.org>
Reviewed-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/adc/cpcap-adc.c

index 11e65852725a8db179d7f69a65c08eee725e5c19..6e419d5a7c1463b7e58e3aefdb5df612853f005c 100644 (file)
@@ -88,7 +88,7 @@
 #define ST_ADC_CAL_BATTI_LOW_THRESHOLD 494
 #define ST_ADC_CALIBRATE_DIFF_THRESHOLD        3
 
-#define CPCAP_ADC_MAX_RETRIES          5       /* Calibration and quirk */
+#define CPCAP_ADC_MAX_RETRIES          5       /* Calibration */
 
 /**
  * struct cpcap_adc_ato - timing settings for cpcap adc
@@ -634,27 +634,6 @@ static void cpcap_adc_setup_bank(struct cpcap_adc *ddata,
        }
 }
 
-/*
- * Occasionally the ADC does not seem to start and there will be no
- * interrupt. Let's re-init interrupt to prevent the ADC from hanging
- * for the next request. It is unclear why this happens, but the next
- * request will usually work after doing this.
- */
-static void cpcap_adc_quirk_reset_lost_irq(struct cpcap_adc *ddata)
-{
-       int error;
-
-       dev_info(ddata->dev, "lost ADC irq, attempting to reinit\n");
-       disable_irq(ddata->irq);
-       error = regmap_update_bits(ddata->reg, CPCAP_REG_ADCC2,
-                                  CPCAP_BIT_ADTRIG_DIS,
-                                  CPCAP_BIT_ADTRIG_DIS);
-       if (error)
-               dev_warn(ddata->dev, "%s reset failed: %i\n",
-                        __func__, error);
-       enable_irq(ddata->irq);
-}
-
 static int cpcap_adc_start_bank(struct cpcap_adc *ddata,
                                struct cpcap_adc_request *req)
 {
@@ -672,7 +651,6 @@ static int cpcap_adc_start_bank(struct cpcap_adc *ddata,
                        return 0;
 
                if (error == 0) {
-                       cpcap_adc_quirk_reset_lost_irq(ddata);
                        error = -ETIMEDOUT;
                        continue;
                }