#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/nfc.h>
#include <linux/of_irq.h>
#include <net/nfc/nci.h>
#include <net/nfc/nci_core.h>
#include <linux/spi/spi.h>
#include "nfcmrvl.h"
#define SPI_WAIT_HANDSHAKE …
struct nfcmrvl_spi_drv_data { … };
static irqreturn_t nfcmrvl_spi_int_irq_thread_fn(int irq, void *drv_data_ptr)
{ … }
static int nfcmrvl_spi_nci_open(struct nfcmrvl_private *priv)
{ … }
static int nfcmrvl_spi_nci_close(struct nfcmrvl_private *priv)
{ … }
static int nfcmrvl_spi_nci_send(struct nfcmrvl_private *priv,
struct sk_buff *skb)
{ … }
static void nfcmrvl_spi_nci_update_config(struct nfcmrvl_private *priv,
const void *param)
{ … }
static const struct nfcmrvl_if_ops spi_ops = …;
static int nfcmrvl_spi_parse_dt(struct device_node *node,
struct nfcmrvl_platform_data *pdata)
{ … }
static int nfcmrvl_spi_probe(struct spi_device *spi)
{ … }
static void nfcmrvl_spi_remove(struct spi_device *spi)
{ … }
static const struct of_device_id of_nfcmrvl_spi_match[] __maybe_unused = …;
MODULE_DEVICE_TABLE(of, of_nfcmrvl_spi_match);
static const struct spi_device_id nfcmrvl_spi_id_table[] = …;
MODULE_DEVICE_TABLE(spi, nfcmrvl_spi_id_table);
static struct spi_driver nfcmrvl_spi_driver = …;
module_spi_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;