linux/net/nfc/nci/hci.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).
 *  This is the HCI over NCI implementation, as specified in the 10.2
 *  section of the NCI 1.1 specification.
 *
 *  Copyright (C) 2014  STMicroelectronics SAS. All rights reserved.
 */

#include <linux/skbuff.h>

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

struct nci_data {} __packed;

struct nci_hci_create_pipe_params {} __packed;

struct nci_hci_create_pipe_resp {} __packed;

struct nci_hci_delete_pipe_noti {} __packed;

struct nci_hci_all_pipe_cleared_noti {} __packed;

struct nci_hcp_message {} __packed;

struct nci_hcp_packet {} __packed;

#define NCI_HCI_ANY_SET_PARAMETER
#define NCI_HCI_ANY_GET_PARAMETER
#define NCI_HCI_ANY_CLOSE_PIPE
#define NCI_HCI_ADM_CLEAR_ALL_PIPE

#define NCI_HFP_NO_CHAINING

#define NCI_NFCEE_ID_HCI

#define NCI_EVT_HOT_PLUG

#define NCI_HCI_ADMIN_PARAM_SESSION_IDENTITY
#define NCI_HCI_ADM_CREATE_PIPE
#define NCI_HCI_ADM_DELETE_PIPE

/* HCP headers */
#define NCI_HCI_HCP_PACKET_HEADER_LEN
#define NCI_HCI_HCP_MESSAGE_HEADER_LEN
#define NCI_HCI_HCP_HEADER_LEN

/* HCP types */
#define NCI_HCI_HCP_COMMAND
#define NCI_HCI_HCP_EVENT
#define NCI_HCI_HCP_RESPONSE

#define NCI_HCI_ADM_NOTIFY_PIPE_CREATED
#define NCI_HCI_ADM_NOTIFY_PIPE_DELETED
#define NCI_HCI_ADM_NOTIFY_ALL_PIPE_CLEARED

#define NCI_HCI_FRAGMENT
#define NCI_HCP_HEADER(type, instr)

#define NCI_HCP_MSG_GET_TYPE(header)
#define NCI_HCP_MSG_GET_CMD(header)
#define NCI_HCP_MSG_GET_PIPE(header)

static int nci_hci_result_to_errno(u8 result)
{}

/* HCI core */
static void nci_hci_reset_pipes(struct nci_hci_dev *hdev)
{}

static void nci_hci_reset_pipes_per_host(struct nci_dev *ndev, u8 host)
{}

/* Fragment HCI data over NCI packet.
 * NFC Forum NCI 10.2.2 Data Exchange:
 * The payload of the Data Packets sent on the Logical Connection SHALL be
 * valid HCP packets, as defined within [ETSI_102622]. Each Data Packet SHALL
 * contain a single HCP packet. NCI Segmentation and Reassembly SHALL NOT be
 * applied to Data Messages in either direction. The HCI fragmentation mechanism
 * is used if required.
 */
static int nci_hci_send_data(struct nci_dev *ndev, u8 pipe,
			     const u8 data_type, const u8 *data,
			     size_t data_len)
{}

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

int nci_hci_send_event(struct nci_dev *ndev, u8 gate, u8 event,
		       const u8 *param, size_t param_len)
{}
EXPORT_SYMBOL();

int nci_hci_send_cmd(struct nci_dev *ndev, u8 gate, u8 cmd,
		     const u8 *param, size_t param_len,
		     struct sk_buff **skb)
{}
EXPORT_SYMBOL();

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

static void nci_hci_event_received(struct nci_dev *ndev, u8 pipe,
				   u8 event, struct sk_buff *skb)
{}

static void nci_hci_cmd_received(struct nci_dev *ndev, u8 pipe,
				 u8 cmd, struct sk_buff *skb)
{}

static void nci_hci_resp_received(struct nci_dev *ndev, u8 pipe,
				  struct sk_buff *skb)
{}

/* Receive hcp message for pipe, with type and cmd.
 * skb contains optional message data only.
 */
static void nci_hci_hcp_message_rx(struct nci_dev *ndev, u8 pipe,
				   u8 type, u8 instruction, struct sk_buff *skb)
{}

static void nci_hci_msg_rx_work(struct work_struct *work)
{}

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

int nci_hci_open_pipe(struct nci_dev *ndev, u8 pipe)
{}
EXPORT_SYMBOL();

static u8 nci_hci_create_pipe(struct nci_dev *ndev, u8 dest_host,
			      u8 dest_gate, int *result)
{}

static int nci_hci_delete_pipe(struct nci_dev *ndev, u8 pipe)
{}

int nci_hci_set_param(struct nci_dev *ndev, u8 gate, u8 idx,
		      const u8 *param, size_t param_len)
{}
EXPORT_SYMBOL();

int nci_hci_get_param(struct nci_dev *ndev, u8 gate, u8 idx,
		      struct sk_buff **skb)
{}
EXPORT_SYMBOL();

int nci_hci_connect_gate(struct nci_dev *ndev,
			 u8 dest_host, u8 dest_gate, u8 pipe)
{}
EXPORT_SYMBOL();

static int nci_hci_dev_connect_gates(struct nci_dev *ndev,
				     u8 gate_count,
				     const struct nci_hci_gate *gates)
{}

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

struct nci_hci_dev *nci_hci_allocate(struct nci_dev *ndev)
{}

void nci_hci_deallocate(struct nci_dev *ndev)
{}