NFC: st21nfcb: Fix logic when running into i2c read retry
authorChristophe Ricard <christophe.ricard@gmail.com>
Wed, 3 Sep 2014 21:30:26 +0000 (23:30 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Sun, 7 Sep 2014 22:29:50 +0000 (00:29 +0200)
When retrying to read the NCI header, the CLF might not be
available the first time. However it may not be successful
the second time and this may cause an error in the function.
Enforce the retrieve data length is as expected.

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 ff67bbf53011a146249453d050003dd50dfabaa8..02fac319dfa9f3026ecbb2c0a7e007ee18bf459a 100644 (file)
@@ -168,7 +168,9 @@ static int st21nfcb_nci_i2c_read(struct st21nfcb_i2c_phy *phy,
        if (r == -EREMOTEIO) {  /* Retry, chip was in standby */
                usleep_range(1000, 4000);
                r = i2c_master_recv(client, buf, ST21NFCB_NCI_I2C_MIN_SIZE);
-       } else if (r != ST21NFCB_NCI_I2C_MIN_SIZE) {
+       }
+
+       if (r != ST21NFCB_NCI_I2C_MIN_SIZE) {
                nfc_err(&client->dev, "cannot read ndlc & nci header\n");
                return -EREMOTEIO;
        }