aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/nfc
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2012-07-03 17:45:26 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-07-09 16:42:23 -0400
commita1fbbf1817c671a396b7ae3832bdfab63acea2e5 (patch)
treea41b63e510813fb10e2a4f7cfe5d3f823ee1f257 /drivers/nfc
parent5c7b0531299dad4255ff5c5106d060150cda75a4 (diff)
NFC: Use communicate thru only for PaSoRi when trying to read Felica tags
Otherwise DATA_EXCHANGE seems to be just fine. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/nfc')
-rw-r--r--drivers/nfc/pn533.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/nfc/pn533.c b/drivers/nfc/pn533.c
index 37786ff18c36..84d8175db818 100644
--- a/drivers/nfc/pn533.c
+++ b/drivers/nfc/pn533.c
@@ -1806,7 +1806,17 @@ static int pn533_build_tx_frame(struct pn533 *dev, struct sk_buff *skb,
1806 1806
1807 if (target == true) { 1807 if (target == true) {
1808 switch (dev->device_type) { 1808 switch (dev->device_type) {
1809 case PN533_DEVICE_STD: 1809 case PN533_DEVICE_PASORI:
1810 if (dev->tgt_active_prot == NFC_PROTO_FELICA) {
1811 skb_push(skb, PN533_CMD_DATAEXCH_HEAD_LEN - 1);
1812 out_frame = (struct pn533_frame *) skb->data;
1813 pn533_tx_frame_init(out_frame,
1814 PN533_CMD_IN_COMM_THRU);
1815
1816 break;
1817 }
1818
1819 default:
1810 skb_push(skb, PN533_CMD_DATAEXCH_HEAD_LEN); 1820 skb_push(skb, PN533_CMD_DATAEXCH_HEAD_LEN);
1811 out_frame = (struct pn533_frame *) skb->data; 1821 out_frame = (struct pn533_frame *) skb->data;
1812 pn533_tx_frame_init(out_frame, 1822 pn533_tx_frame_init(out_frame,
@@ -1815,19 +1825,8 @@ static int pn533_build_tx_frame(struct pn533 *dev, struct sk_buff *skb,
1815 memcpy(PN533_FRAME_CMD_PARAMS_PTR(out_frame), 1825 memcpy(PN533_FRAME_CMD_PARAMS_PTR(out_frame),
1816 &tg, sizeof(u8)); 1826 &tg, sizeof(u8));
1817 out_frame->datalen += sizeof(u8); 1827 out_frame->datalen += sizeof(u8);
1818 break;
1819
1820 case PN533_DEVICE_PASORI:
1821 skb_push(skb, PN533_CMD_DATAEXCH_HEAD_LEN - 1);
1822 out_frame = (struct pn533_frame *) skb->data;
1823 pn533_tx_frame_init(out_frame, PN533_CMD_IN_COMM_THRU);
1824 1828
1825 break; 1829 break;
1826
1827 default:
1828 nfc_dev_err(&dev->interface->dev,
1829 "Unknown device type %d", dev->device_type);
1830 return -EINVAL;
1831 } 1830 }
1832 1831
1833 } else { 1832 } else {