xref: /openbmc/linux/drivers/nfc/s3fwrn5/nci.h (revision a06c488d)
1 /*
2  * NCI based driver for Samsung S3FWRN5 NFC chip
3  *
4  * Copyright (C) 2015 Samsung Electrnoics
5  * Robert Baldyga <r.baldyga@samsung.com>
6  *
7  * This program is free software; you can redistribute it and/or modify it
8  * under the terms and conditions of the GNU General Public License,
9  * version 2 or later, as published by the Free Software Foundation.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef __LOCAL_S3FWRN5_NCI_H_
21 #define __LOCAL_S3FWRN5_NCI_H_
22 
23 #include "s3fwrn5.h"
24 
25 #define NCI_PROP_AGAIN		0x01
26 
27 #define NCI_PROP_GET_RFREG	0x21
28 #define NCI_PROP_SET_RFREG	0x22
29 
30 struct nci_prop_set_rfreg_cmd {
31 	__u8 index;
32 	__u8 data[252];
33 };
34 
35 struct nci_prop_set_rfreg_rsp {
36 	__u8 status;
37 };
38 
39 #define NCI_PROP_GET_RFREG_VER	0x24
40 
41 struct nci_prop_get_rfreg_ver_rsp {
42 	__u8 status;
43 	__u8 data[8];
44 };
45 
46 #define NCI_PROP_SET_RFREG_VER	0x25
47 
48 struct nci_prop_set_rfreg_ver_cmd {
49 	__u8 data[8];
50 };
51 
52 struct nci_prop_set_rfreg_ver_rsp {
53 	__u8 status;
54 };
55 
56 #define NCI_PROP_START_RFREG	0x26
57 
58 struct nci_prop_start_rfreg_rsp {
59 	__u8 status;
60 };
61 
62 #define NCI_PROP_STOP_RFREG	0x27
63 
64 struct nci_prop_stop_rfreg_cmd {
65 	__u16 checksum;
66 };
67 
68 struct nci_prop_stop_rfreg_rsp {
69 	__u8 status;
70 };
71 
72 #define NCI_PROP_FW_CFG		0x28
73 
74 struct nci_prop_fw_cfg_cmd {
75 	__u8 clk_type;
76 	__u8 clk_speed;
77 	__u8 clk_req;
78 };
79 
80 struct nci_prop_fw_cfg_rsp {
81 	__u8 status;
82 };
83 
84 #define NCI_PROP_WR_RESET	0x2f
85 
86 void s3fwrn5_nci_get_prop_ops(struct nci_driver_ops **ops, size_t *n);
87 int s3fwrn5_nci_rf_configure(struct s3fwrn5_info *info, const char *fw_name);
88 
89 #endif /* __LOCAL_S3FWRN5_NCI_H_ */
90