Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

NFC: HCI drivers don't have to keep track of polling state

The NFC core code already does that for them.

Signed-off-by: Eric Lapuyade <eric.lapuyade@intel.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

authored by

Eric Lapuyade and committed by
John W. Linville
03bed29e 4333459f

+4 -19
-2
include/net/nfc/hci.h
··· 84 84 85 85 u8 gate2pipe[NFC_HCI_MAX_GATES]; 86 86 87 - bool poll_started; 88 - 89 87 u8 sw_romlib; 90 88 u8 sw_patch; 91 89 u8 sw_flashlib_major;
+4 -17
net/nfc/hci/core.c
··· 251 251 252 252 switch (event) { 253 253 case NFC_HCI_EVT_TARGET_DISCOVERED: 254 - if (hdev->poll_started == false) { 255 - r = -EPROTO; 256 - goto exit; 257 - } 258 - 259 254 if (skb->len < 1) { /* no status data? */ 260 255 r = -EPROTO; 261 256 goto exit; ··· 484 489 static int hci_start_poll(struct nfc_dev *nfc_dev, u32 protocols) 485 490 { 486 491 struct nfc_hci_dev *hdev = nfc_get_drvdata(nfc_dev); 487 - int r; 488 492 489 493 if (hdev->ops->start_poll) 490 - r = hdev->ops->start_poll(hdev, protocols); 494 + return hdev->ops->start_poll(hdev, protocols); 491 495 else 492 - r = nfc_hci_send_event(hdev, NFC_HCI_RF_READER_A_GATE, 496 + return nfc_hci_send_event(hdev, NFC_HCI_RF_READER_A_GATE, 493 497 NFC_HCI_EVT_READER_REQUESTED, NULL, 0); 494 - if (r == 0) 495 - hdev->poll_started = true; 496 - 497 - return r; 498 498 } 499 499 500 500 static void hci_stop_poll(struct nfc_dev *nfc_dev) 501 501 { 502 502 struct nfc_hci_dev *hdev = nfc_get_drvdata(nfc_dev); 503 503 504 - if (hdev->poll_started) { 505 - nfc_hci_send_event(hdev, NFC_HCI_RF_READER_A_GATE, 506 - NFC_HCI_EVT_END_OPERATION, NULL, 0); 507 - hdev->poll_started = false; 508 - } 504 + nfc_hci_send_event(hdev, NFC_HCI_RF_READER_A_GATE, 505 + NFC_HCI_EVT_END_OPERATION, NULL, 0); 509 506 } 510 507 511 508 static int hci_activate_target(struct nfc_dev *nfc_dev,