diff options
author | Christophe Ricard <christophe.ricard@gmail.com> | 2014-09-13 04:28:49 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2014-09-23 20:02:24 -0400 |
commit | 9e87f9a9c4c4754508b2c2638fbde9e10c7a103b (patch) | |
tree | 1576b2a01cfa325e3860a6d4f0445a6944d1469f /drivers/nfc | |
parent | fa0daa02fb063ecef39b7d421c3d9c4109381dc2 (diff) |
NFC: nci: Add support for proprietary RF Protocols
In NFC Forum NCI specification, some RF Protocol values are
reserved for proprietary use (from 0x80 to 0xfe).
Some CLF vendor may need to use one value within this range
for specific technology.
Furthermore, some CLF may not becompliant with NFC Froum NCI
specification 2.0 and therefore will not support RF Protocol
value 0x06 for PROTOCOL_T5T as mention in a draft specification
and in a recent push.
Adding get_rf_protocol handle to the nci_ops structure will
help to set the correct technology to target.
Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/nfc')
-rw-r--r-- | drivers/nfc/st21nfcb/st21nfcb.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/nfc/st21nfcb/st21nfcb.c b/drivers/nfc/st21nfcb/st21nfcb.c index 90d37156169e..e72dae816e72 100644 --- a/drivers/nfc/st21nfcb/st21nfcb.c +++ b/drivers/nfc/st21nfcb/st21nfcb.c | |||
@@ -25,6 +25,8 @@ | |||
25 | 25 | ||
26 | #define DRIVER_DESC "NCI NFC driver for ST21NFCB" | 26 | #define DRIVER_DESC "NCI NFC driver for ST21NFCB" |
27 | 27 | ||
28 | #define ST21NFCB_NCI1_X_PROPRIETARY_ISO15693 0x83 | ||
29 | |||
28 | static int st21nfcb_nci_open(struct nci_dev *ndev) | 30 | static int st21nfcb_nci_open(struct nci_dev *ndev) |
29 | { | 31 | { |
30 | struct st21nfcb_nci_info *info = nci_get_drvdata(ndev); | 32 | struct st21nfcb_nci_info *info = nci_get_drvdata(ndev); |
@@ -64,10 +66,18 @@ static int st21nfcb_nci_send(struct nci_dev *ndev, struct sk_buff *skb) | |||
64 | return ndlc_send(info->ndlc, skb); | 66 | return ndlc_send(info->ndlc, skb); |
65 | } | 67 | } |
66 | 68 | ||
69 | static __u32 st21nfcb_nci_get_rfprotocol(struct nci_dev *ndev, | ||
70 | __u8 rf_protocol) | ||
71 | { | ||
72 | return rf_protocol == ST21NFCB_NCI1_X_PROPRIETARY_ISO15693 ? | ||
73 | NFC_PROTO_ISO15693_MASK : 0; | ||
74 | } | ||
75 | |||
67 | static struct nci_ops st21nfcb_nci_ops = { | 76 | static struct nci_ops st21nfcb_nci_ops = { |
68 | .open = st21nfcb_nci_open, | 77 | .open = st21nfcb_nci_open, |
69 | .close = st21nfcb_nci_close, | 78 | .close = st21nfcb_nci_close, |
70 | .send = st21nfcb_nci_send, | 79 | .send = st21nfcb_nci_send, |
80 | .get_rfprotocol = st21nfcb_nci_get_rfprotocol, | ||
71 | }; | 81 | }; |
72 | 82 | ||
73 | int st21nfcb_nci_probe(struct llt_ndlc *ndlc, int phy_headroom, | 83 | int st21nfcb_nci_probe(struct llt_ndlc *ndlc, int phy_headroom, |