NFC: st21nfcb: disable irq when st21nfcb is disabled
authorChristophe Ricard <christophe.ricard@gmail.com>
Sat, 6 Jun 2015 11:16:51 +0000 (13:16 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Mon, 8 Jun 2015 22:34:26 +0000 (00:34 +0200)
When st21nfcb is disabled, the irq line may remain active
while no data are available, flooding the system with
irrelevant i2c transaction.

Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/nfc/st21nfcb/i2c.c

index 41b5bdb11cdbca10c073e3b5429df0580c369b13..dbc0dfd8ae85d8e2facf068d27c3eb2851801f57 100644 (file)
@@ -70,6 +70,9 @@ static int st21nfcb_nci_i2c_enable(void *phy_id)
        gpio_set_value(phy->gpio_reset, 1);
        usleep_range(80000, 85000);
 
+       if (phy->ndlc->powered == 0)
+               enable_irq(phy->i2c_dev->irq);
+
        return 0;
 }
 
@@ -77,10 +80,7 @@ static void st21nfcb_nci_i2c_disable(void *phy_id)
 {
        struct st21nfcb_i2c_phy *phy = phy_id;
 
-       /* reset chip in order to flush clf */
-       gpio_set_value(phy->gpio_reset, 0);
-       usleep_range(10000, 15000);
-       gpio_set_value(phy->gpio_reset, 1);
+       disable_irq_nosync(phy->i2c_dev->irq);
 }
 
 /*