Thread (1 message) 1 message, 1 author, 2015-06-06

[RFC v2 11/17] nfc: st21nfcb: Add support for nci proprietary commands

From: Christophe Ricard <hidden>
Date: 2015-06-06 11:16:47
Subsystem: nfc subsystem, the rest · Maintainers: David Heidelberg, Linus Torvalds

On st21nfcb, nci proprietary commands are available to run specific chip
operation (for example: power management)

Signed-off-by: Christophe Ricard <redacted>
---
 drivers/nfc/st21nfcb/st21nfcb.c | 21 +++++++++++++++++++++
 drivers/nfc/st21nfcb/st21nfcb.h |  6 ++++++
 2 files changed, 27 insertions(+)
diff --git a/drivers/nfc/st21nfcb/st21nfcb.c b/drivers/nfc/st21nfcb/st21nfcb.c
index 12699fa..50ad6d0 100644
--- a/drivers/nfc/st21nfcb/st21nfcb.c
+++ b/drivers/nfc/st21nfcb/st21nfcb.c
@@ -20,6 +20,8 @@
 #include <linux/nfc.h>
 #include <net/nfc/nci.h>
 #include <net/nfc/nci_core.h>
+#include <linux/gpio.h>
+#include <linux/delay.h>
 
 #include "st21nfcb.h"
 #include "st21nfcb_se.h"
@@ -76,6 +78,23 @@ static __u32 st21nfcb_nci_get_rfprotocol(struct nci_dev *ndev,
 		NFC_PROTO_ISO15693_MASK : 0;
 }
 
+static int st21nfcb_nci_prop_rsp_packet(struct nci_dev *ndev,
+					struct sk_buff *skb)
+{
+	__u8 status = skb->data[0];
+
+	nci_req_complete(ndev, status);
+	return 0;
+}
+
+static struct nci_prop_ops st21nfcb_nci_prop_ops[] = {
+	{
+		.opcode = nci_opcode_pack(NCI_GID_PROPRIETARY,
+					  ST21NFCB_NCI_CORE_PROP),
+		.rsp = st21nfcb_nci_prop_rsp_packet,
+	},
+};
+
 static struct nci_ops st21nfcb_nci_ops = {
 	.open = st21nfcb_nci_open,
 	.close = st21nfcb_nci_close,
@@ -88,6 +107,8 @@ static struct nci_ops st21nfcb_nci_ops = {
 	.hci_load_session = st21nfcb_hci_load_session,
 	.hci_event_received = st21nfcb_hci_event_received,
 	.hci_cmd_received = st21nfcb_hci_cmd_received,
+	.prop_ops = st21nfcb_nci_prop_ops,
+	.n_prop_ops = ARRAY_SIZE(st21nfcb_nci_prop_ops),
 };
 
 int st21nfcb_nci_probe(struct llt_ndlc *ndlc, int phy_headroom,
diff --git a/drivers/nfc/st21nfcb/st21nfcb.h b/drivers/nfc/st21nfcb/st21nfcb.h
index 5ef8a58..7c12d9d 100644
--- a/drivers/nfc/st21nfcb/st21nfcb.h
+++ b/drivers/nfc/st21nfcb/st21nfcb.h
@@ -25,6 +25,12 @@
 /* Define private flags: */
 #define ST21NFCB_NCI_RUNNING			1
 
+#define ST21NFCB_NCI_CORE_PROP                0x01
+
+struct nci_mode_set_rsp {
+	u8 status;
+} __packed;
+
 struct st21nfcb_nci_info {
 	struct llt_ndlc *ndlc;
 	unsigned long flags;
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help