#include <linux/module.h>
#include <linux/nfc.h>
#include <linux/i2c.h>
#include <linux/delay.h>
#include <linux/firmware.h>
#include <net/nfc/nci_core.h>
#include "fdp.h"
#define FDP_OTP_PATCH_NAME …
#define FDP_RAM_PATCH_NAME …
#define FDP_FW_HEADER_SIZE …
#define FDP_FW_UPDATE_SLEEP …
#define NCI_GET_VERSION_TIMEOUT …
#define NCI_PATCH_REQUEST_TIMEOUT …
#define FDP_PATCH_CONN_DEST …
#define FDP_PATCH_CONN_PARAM_TYPE …
#define NCI_PATCH_TYPE_RAM …
#define NCI_PATCH_TYPE_OTP …
#define NCI_PATCH_TYPE_EOT …
#define NCI_PARAM_ID_FW_RAM_VERSION …
#define NCI_PARAM_ID_FW_OTP_VERSION …
#define NCI_PARAM_ID_OTP_LIMITED_VERSION …
#define NCI_PARAM_ID_KEY_INDEX_ID …
#define NCI_GID_PROP …
#define NCI_OP_PROP_PATCH_OID …
#define NCI_OP_PROP_SET_PDATA_OID …
struct fdp_nci_info { … };
static const u8 nci_core_get_config_otp_ram_version[5] = …;
struct nci_core_get_config_rsp { … };
static int fdp_nci_create_conn(struct nci_dev *ndev)
{ … }
static inline int fdp_nci_get_versions(struct nci_dev *ndev)
{ … }
static inline int fdp_nci_patch_cmd(struct nci_dev *ndev, u8 type)
{ … }
static inline int fdp_nci_set_production_data(struct nci_dev *ndev, u8 len,
const char *data)
{ … }
static int fdp_nci_set_clock(struct nci_dev *ndev, u8 clock_type,
u32 clock_freq)
{ … }
static void fdp_nci_send_patch_cb(struct nci_dev *ndev)
{ … }
static void fdp_nci_set_data_pkt_counter(struct nci_dev *ndev,
void (*cb)(struct nci_dev *ndev), int count)
{ … }
static int fdp_nci_send_patch(struct nci_dev *ndev, u8 conn_id, u8 type)
{ … }
static int fdp_nci_open(struct nci_dev *ndev)
{ … }
static int fdp_nci_close(struct nci_dev *ndev)
{ … }
static int fdp_nci_send(struct nci_dev *ndev, struct sk_buff *skb)
{ … }
static int fdp_nci_request_firmware(struct nci_dev *ndev)
{ … }
static void fdp_nci_release_firmware(struct nci_dev *ndev)
{ … }
static int fdp_nci_patch_otp(struct nci_dev *ndev)
{ … }
static int fdp_nci_patch_ram(struct nci_dev *ndev)
{ … }
static int fdp_nci_setup(struct nci_dev *ndev)
{ … }
static int fdp_nci_post_setup(struct nci_dev *ndev)
{ … }
static int fdp_nci_core_reset_ntf_packet(struct nci_dev *ndev,
struct sk_buff *skb)
{ … }
static int fdp_nci_prop_patch_ntf_packet(struct nci_dev *ndev,
struct sk_buff *skb)
{ … }
static int fdp_nci_prop_patch_rsp_packet(struct nci_dev *ndev,
struct sk_buff *skb)
{ … }
static int fdp_nci_prop_set_production_data_rsp_packet(struct nci_dev *ndev,
struct sk_buff *skb)
{ … }
static int fdp_nci_core_get_config_rsp_packet(struct nci_dev *ndev,
struct sk_buff *skb)
{ … }
static const struct nci_driver_ops fdp_core_ops[] = …;
static const struct nci_driver_ops fdp_prop_ops[] = …;
static const struct nci_ops nci_ops = …;
int fdp_nci_probe(struct fdp_i2c_phy *phy, const struct nfc_phy_ops *phy_ops,
struct nci_dev **ndevp, int tx_headroom,
int tx_tailroom, u8 clock_type, u32 clock_freq,
const u8 *fw_vsc_cfg)
{ … }
EXPORT_SYMBOL(…);
void fdp_nci_remove(struct nci_dev *ndev)
{ … }
EXPORT_SYMBOL(…);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_FIRMWARE(…);
MODULE_FIRMWARE(…);