linux/drivers/nfc/fdp/fdp.c

// SPDX-License-Identifier: GPL-2.0-or-later
/* -------------------------------------------------------------------------
 * Copyright (C) 2014-2016, Intel Corporation
 *
 * -------------------------------------------------------------------------
 */

#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)
{}

/*
 * Register a packet sent counter and a callback
 *
 * We have no other way of knowing when all firmware packets were sent out
 * on the i2c bus. We need to know that in order to close the connection and
 * send the patch end message.
 */
static void fdp_nci_set_data_pkt_counter(struct nci_dev *ndev,
				  void (*cb)(struct nci_dev *ndev), int count)
{}

/*
 * The device is expecting a stream of packets. All packets need to
 * have the PBF flag set to 0x0 (last packet) even if the firmware
 * file is segmented and there are multiple packets. If we give the
 * whole firmware to nci_send_data it will segment it and it will set
 * the PBF flag to 0x01 so we need to do the segmentation here.
 *
 * The firmware will be analyzed and applied when we send NCI_OP_PROP_PATCH_CMD
 * command with NCI_PATCH_TYPE_EOT parameter. The device will send a
 * NFCC_PATCH_NTF packet and a NCI_OP_CORE_RESET_NTF packet.
 */
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();