Browse Source

NFC: pn533: Send ATR_REQ only if NFC_PROTO_NFC_DEP bit is set

Currently it is not possible to only poll for passive targets
with the pn533 driver. To change this ATR_REQ is only sent when
NFC_PROTO_NFC_DEP is explicitly requested in poll_protocols.
As most implementations (e.g. neard) poll for all protocols
that are reported to be supported by the adapter, this should
not have much of an effect on current implementations.

Signed-off-by: Michael Thalmeier <michael.thalmeier@hale.at>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Michael Thalmeier 9 years ago
parent
commit
e997ebbe46
1 changed files with 3 additions and 2 deletions
  1. 3 2
      drivers/nfc/pn533.c

+ 3 - 2
drivers/nfc/pn533.c

@@ -1540,7 +1540,8 @@ static int pn533_start_poll_complete(struct pn533 *dev, struct sk_buff *resp)
 	int rc, tgdata_len;
 	int rc, tgdata_len;
 
 
 	/* Toggle the DEP polling */
 	/* Toggle the DEP polling */
-	dev->poll_dep = 1;
+	if (dev->poll_protocols & NFC_PROTO_NFC_DEP_MASK)
+		dev->poll_dep = 1;
 
 
 	nbtg = resp->data[0];
 	nbtg = resp->data[0];
 	tg = resp->data[1];
 	tg = resp->data[1];
@@ -2054,7 +2055,7 @@ static int pn533_send_poll_frame(struct pn533 *dev)
 	dev_dbg(&dev->interface->dev, "%s mod len %d\n",
 	dev_dbg(&dev->interface->dev, "%s mod len %d\n",
 		__func__, mod->len);
 		__func__, mod->len);
 
 
-	if (dev->poll_dep)  {
+	if ((dev->poll_protocols & NFC_PROTO_NFC_DEP_MASK) && dev->poll_dep)  {
 		dev->poll_dep = 0;
 		dev->poll_dep = 0;
 		return pn533_poll_dep(dev->nfc_dev);
 		return pn533_poll_dep(dev->nfc_dev);
 	}
 	}