linux/net/nfc/nci/core.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 *  The NFC Controller Interface is the communication protocol between an
 *  NFC Controller (NFCC) and a Device Host (DH).
 *
 *  Copyright (C) 2011 Texas Instruments, Inc.
 *  Copyright (C) 2014 Marvell International Ltd.
 *
 *  Written by Ilan Elias <[email protected]>
 *
 *  Acknowledgements:
 *  This file is based on hci_core.c, which was written
 *  by Maxim Krasnyansky.
 */

#define pr_fmt(fmt)

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/workqueue.h>
#include <linux/completion.h>
#include <linux/export.h>
#include <linux/sched.h>
#include <linux/bitops.h>
#include <linux/skbuff.h>
#include <linux/kcov.h>

#include "../nfc.h"
#include <net/nfc/nci.h>
#include <net/nfc/nci_core.h>
#include <linux/nfc.h>

struct core_conn_create_data {};

static void nci_cmd_work(struct work_struct *work);
static void nci_rx_work(struct work_struct *work);
static void nci_tx_work(struct work_struct *work);

struct nci_conn_info *nci_get_conn_info_by_conn_id(struct nci_dev *ndev,
						   int conn_id)
{}

int nci_get_conn_info_by_dest_type_params(struct nci_dev *ndev, u8 dest_type,
					  const struct dest_spec_params *params)
{}
EXPORT_SYMBOL();

/* ---- NCI requests ---- */

void nci_req_complete(struct nci_dev *ndev, int result)
{}
EXPORT_SYMBOL();

static void nci_req_cancel(struct nci_dev *ndev, int err)
{}

/* Execute request and wait for completion. */
static int __nci_request(struct nci_dev *ndev,
			 void (*req)(struct nci_dev *ndev, const void *opt),
			 const void *opt, __u32 timeout)
{}

inline int nci_request(struct nci_dev *ndev,
		       void (*req)(struct nci_dev *ndev,
				   const void *opt),
		       const void *opt, __u32 timeout)
{}

static void nci_reset_req(struct nci_dev *ndev, const void *opt)
{}

static void nci_init_req(struct nci_dev *ndev, const void *opt)
{}

static void nci_init_complete_req(struct nci_dev *ndev, const void *opt)
{}

struct nci_set_config_param {};

static void nci_set_config_req(struct nci_dev *ndev, const void *opt)
{}

struct nci_rf_discover_param {};

static void nci_rf_discover_req(struct nci_dev *ndev, const void *opt)
{}

struct nci_rf_discover_select_param {};

static void nci_rf_discover_select_req(struct nci_dev *ndev, const void *opt)
{}

static void nci_rf_deactivate_req(struct nci_dev *ndev, const void *opt)
{}

struct nci_cmd_param {};

static void nci_generic_req(struct nci_dev *ndev, const void *opt)
{}

int nci_prop_cmd(struct nci_dev *ndev, __u8 oid, size_t len, const __u8 *payload)
{}
EXPORT_SYMBOL();

int nci_core_cmd(struct nci_dev *ndev, __u16 opcode, size_t len,
		 const __u8 *payload)
{}
EXPORT_SYMBOL();

int nci_core_reset(struct nci_dev *ndev)
{}
EXPORT_SYMBOL();

int nci_core_init(struct nci_dev *ndev)
{}
EXPORT_SYMBOL();

struct nci_loopback_data {};

static void nci_send_data_req(struct nci_dev *ndev, const void *opt)
{}

static void nci_nfcc_loopback_cb(void *context, struct sk_buff *skb, int err)
{}

int nci_nfcc_loopback(struct nci_dev *ndev, const void *data, size_t data_len,
		      struct sk_buff **resp)
{}
EXPORT_SYMBOL();

static int nci_open_device(struct nci_dev *ndev)
{}

static int nci_close_device(struct nci_dev *ndev)
{}

/* NCI command timer function */
static void nci_cmd_timer(struct timer_list *t)
{}

/* NCI data exchange timer function */
static void nci_data_timer(struct timer_list *t)
{}

static int nci_dev_up(struct nfc_dev *nfc_dev)
{}

static int nci_dev_down(struct nfc_dev *nfc_dev)
{}

int nci_set_config(struct nci_dev *ndev, __u8 id, size_t len, const __u8 *val)
{}
EXPORT_SYMBOL();

static void nci_nfcee_discover_req(struct nci_dev *ndev, const void *opt)
{}

int nci_nfcee_discover(struct nci_dev *ndev, u8 action)
{}
EXPORT_SYMBOL();

static void nci_nfcee_mode_set_req(struct nci_dev *ndev, const void *opt)
{}

int nci_nfcee_mode_set(struct nci_dev *ndev, u8 nfcee_id, u8 nfcee_mode)
{}
EXPORT_SYMBOL();

static void nci_core_conn_create_req(struct nci_dev *ndev, const void *opt)
{}

int nci_core_conn_create(struct nci_dev *ndev, u8 destination_type,
			 u8 number_destination_params,
			 size_t params_len,
			 const struct core_conn_create_dest_spec_params *params)
{}
EXPORT_SYMBOL();

static void nci_core_conn_close_req(struct nci_dev *ndev, const void *opt)
{}

int nci_core_conn_close(struct nci_dev *ndev, u8 conn_id)
{}
EXPORT_SYMBOL();

static int nci_set_local_general_bytes(struct nfc_dev *nfc_dev)
{}

static int nci_set_listen_parameters(struct nfc_dev *nfc_dev)
{}

static int nci_start_poll(struct nfc_dev *nfc_dev,
			  __u32 im_protocols, __u32 tm_protocols)
{}

static void nci_stop_poll(struct nfc_dev *nfc_dev)
{}

static int nci_activate_target(struct nfc_dev *nfc_dev,
			       struct nfc_target *target, __u32 protocol)
{}

static void nci_deactivate_target(struct nfc_dev *nfc_dev,
				  struct nfc_target *target,
				  __u8 mode)
{}

static int nci_dep_link_up(struct nfc_dev *nfc_dev, struct nfc_target *target,
			   __u8 comm_mode, __u8 *gb, size_t gb_len)
{}

static int nci_dep_link_down(struct nfc_dev *nfc_dev)
{}


static int nci_transceive(struct nfc_dev *nfc_dev, struct nfc_target *target,
			  struct sk_buff *skb,
			  data_exchange_cb_t cb, void *cb_context)
{}

static int nci_tm_send(struct nfc_dev *nfc_dev, struct sk_buff *skb)
{}

static int nci_enable_se(struct nfc_dev *nfc_dev, u32 se_idx)
{}

static int nci_disable_se(struct nfc_dev *nfc_dev, u32 se_idx)
{}

static int nci_discover_se(struct nfc_dev *nfc_dev)
{}

static int nci_se_io(struct nfc_dev *nfc_dev, u32 se_idx,
		     u8 *apdu, size_t apdu_length,
		     se_io_cb_t cb, void *cb_context)
{}

static int nci_fw_download(struct nfc_dev *nfc_dev, const char *firmware_name)
{}

static const struct nfc_ops nci_nfc_ops =;

/* ---- Interface to NCI drivers ---- */
/**
 * nci_allocate_device - allocate a new nci device
 *
 * @ops: device operations
 * @supported_protocols: NFC protocols supported by the device
 * @tx_headroom: Reserved space at beginning of skb
 * @tx_tailroom: Reserved space at end of skb
 */
struct nci_dev *nci_allocate_device(const struct nci_ops *ops,
				    __u32 supported_protocols,
				    int tx_headroom, int tx_tailroom)
{}
EXPORT_SYMBOL();

/**
 * nci_free_device - deallocate nci device
 *
 * @ndev: The nci device to deallocate
 */
void nci_free_device(struct nci_dev *ndev)
{}
EXPORT_SYMBOL();

/**
 * nci_register_device - register a nci device in the nfc subsystem
 *
 * @ndev: The nci device to register
 */
int nci_register_device(struct nci_dev *ndev)
{}
EXPORT_SYMBOL();

/**
 * nci_unregister_device - unregister a nci device in the nfc subsystem
 *
 * @ndev: The nci device to unregister
 */
void nci_unregister_device(struct nci_dev *ndev)
{}
EXPORT_SYMBOL();

/**
 * nci_recv_frame - receive frame from NCI drivers
 *
 * @ndev: The nci device
 * @skb: The sk_buff to receive
 */
int nci_recv_frame(struct nci_dev *ndev, struct sk_buff *skb)
{}
EXPORT_SYMBOL();

int nci_send_frame(struct nci_dev *ndev, struct sk_buff *skb)
{}
EXPORT_SYMBOL();

/* Send NCI command */
int nci_send_cmd(struct nci_dev *ndev, __u16 opcode, __u8 plen, const void *payload)
{}
EXPORT_SYMBOL();

/* Proprietary commands API */
static const struct nci_driver_ops *ops_cmd_lookup(const struct nci_driver_ops *ops,
						   size_t n_ops,
						   __u16 opcode)
{}

static int nci_op_rsp_packet(struct nci_dev *ndev, __u16 rsp_opcode,
			     struct sk_buff *skb, const struct nci_driver_ops *ops,
			     size_t n_ops)
{}

static int nci_op_ntf_packet(struct nci_dev *ndev, __u16 ntf_opcode,
			     struct sk_buff *skb, const struct nci_driver_ops *ops,
			     size_t n_ops)
{}

int nci_prop_rsp_packet(struct nci_dev *ndev, __u16 opcode,
			struct sk_buff *skb)
{}

int nci_prop_ntf_packet(struct nci_dev *ndev, __u16 opcode,
			struct sk_buff *skb)
{}

int nci_core_rsp_packet(struct nci_dev *ndev, __u16 opcode,
			struct sk_buff *skb)
{}

int nci_core_ntf_packet(struct nci_dev *ndev, __u16 opcode,
			struct sk_buff *skb)
{}

static bool nci_valid_size(struct sk_buff *skb)
{}

/* ---- NCI TX Data worker thread ---- */

static void nci_tx_work(struct work_struct *work)
{}

/* ----- NCI RX worker thread (data & control) ----- */

static void nci_rx_work(struct work_struct *work)
{}

/* ----- NCI TX CMD worker thread ----- */

static void nci_cmd_work(struct work_struct *work)
{}

MODULE_DESCRIPTION();
MODULE_LICENSE();