#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(…);
void nci_req_complete(struct nci_dev *ndev, int result)
{ … }
EXPORT_SYMBOL(…);
static void nci_req_cancel(struct nci_dev *ndev, int err)
{ … }
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)
{ … }
static void nci_cmd_timer(struct timer_list *t)
{ … }
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 = …;
struct nci_dev *nci_allocate_device(const struct nci_ops *ops,
__u32 supported_protocols,
int tx_headroom, int tx_tailroom)
{ … }
EXPORT_SYMBOL(…);
void nci_free_device(struct nci_dev *ndev)
{ … }
EXPORT_SYMBOL(…);
int nci_register_device(struct nci_dev *ndev)
{ … }
EXPORT_SYMBOL(…);
void nci_unregister_device(struct nci_dev *ndev)
{ … }
EXPORT_SYMBOL(…);
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(…);
int nci_send_cmd(struct nci_dev *ndev, __u16 opcode, __u8 plen, const void *payload)
{ … }
EXPORT_SYMBOL(…);
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)
{ … }
static void nci_tx_work(struct work_struct *work)
{ … }
static void nci_rx_work(struct work_struct *work)
{ … }
static void nci_cmd_work(struct work_struct *work)
{ … }
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;