diff options
author | Christophe Ricard | 2015-06-06 13:16:51 +0200 |
---|---|---|
committer | Samuel Ortiz | 2015-06-09 00:34:26 +0200 |
commit | 05f0939f76659260763d31890cb962e8d6060038 (patch) | |
tree | d977a47580c15f1f0a29e36bbc1a75dd36e3ff9a | |
parent | 183fe2d06dba2f45ae47360cdb911f95551917ed (diff) |
NFC: st21nfcb: disable irq when st21nfcb is disabled
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>
-rw-r--r-- | drivers/nfc/st21nfcb/i2c.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/nfc/st21nfcb/i2c.c b/drivers/nfc/st21nfcb/i2c.c index 41b5bdb11cdb..dbc0dfd8ae85 100644 --- a/drivers/nfc/st21nfcb/i2c.c +++ b/drivers/nfc/st21nfcb/i2c.c @@ -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); } /* |