18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * NCI based driver for Samsung S3FWRN5 NFC chip
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright (C) 2015 Samsung Electrnoics
68c2ecf20Sopenharmony_ci * Robert Baldyga <r.baldyga@samsung.com>
78c2ecf20Sopenharmony_ci */
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#ifndef __LOCAL_S3FWRN5_NCI_H_
108c2ecf20Sopenharmony_ci#define __LOCAL_S3FWRN5_NCI_H_
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#include "s3fwrn5.h"
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#define NCI_PROP_AGAIN		0x01
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci#define NCI_PROP_GET_RFREG	0x21
178c2ecf20Sopenharmony_ci#define NCI_PROP_SET_RFREG	0x22
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_cistruct nci_prop_set_rfreg_cmd {
208c2ecf20Sopenharmony_ci	__u8 index;
218c2ecf20Sopenharmony_ci	__u8 data[252];
228c2ecf20Sopenharmony_ci};
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_cistruct nci_prop_set_rfreg_rsp {
258c2ecf20Sopenharmony_ci	__u8 status;
268c2ecf20Sopenharmony_ci};
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci#define NCI_PROP_GET_RFREG_VER	0x24
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_cistruct nci_prop_get_rfreg_ver_rsp {
318c2ecf20Sopenharmony_ci	__u8 status;
328c2ecf20Sopenharmony_ci	__u8 data[8];
338c2ecf20Sopenharmony_ci};
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci#define NCI_PROP_SET_RFREG_VER	0x25
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_cistruct nci_prop_set_rfreg_ver_cmd {
388c2ecf20Sopenharmony_ci	__u8 data[8];
398c2ecf20Sopenharmony_ci};
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_cistruct nci_prop_set_rfreg_ver_rsp {
428c2ecf20Sopenharmony_ci	__u8 status;
438c2ecf20Sopenharmony_ci};
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci#define NCI_PROP_START_RFREG	0x26
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_cistruct nci_prop_start_rfreg_rsp {
488c2ecf20Sopenharmony_ci	__u8 status;
498c2ecf20Sopenharmony_ci};
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci#define NCI_PROP_STOP_RFREG	0x27
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_cistruct nci_prop_stop_rfreg_cmd {
548c2ecf20Sopenharmony_ci	__u16 checksum;
558c2ecf20Sopenharmony_ci};
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_cistruct nci_prop_stop_rfreg_rsp {
588c2ecf20Sopenharmony_ci	__u8 status;
598c2ecf20Sopenharmony_ci};
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_ci#define NCI_PROP_FW_CFG		0x28
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_cistruct nci_prop_fw_cfg_cmd {
648c2ecf20Sopenharmony_ci	__u8 clk_type;
658c2ecf20Sopenharmony_ci	__u8 clk_speed;
668c2ecf20Sopenharmony_ci	__u8 clk_req;
678c2ecf20Sopenharmony_ci};
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_cistruct nci_prop_fw_cfg_rsp {
708c2ecf20Sopenharmony_ci	__u8 status;
718c2ecf20Sopenharmony_ci};
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ci#define NCI_PROP_WR_RESET	0x2f
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_civoid s3fwrn5_nci_get_prop_ops(struct nci_driver_ops **ops, size_t *n);
768c2ecf20Sopenharmony_ciint s3fwrn5_nci_rf_configure(struct s3fwrn5_info *info, const char *fw_name);
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci#endif /* __LOCAL_S3FWRN5_NCI_H_ */
79