#include <linux/clk.h>
#include <linux/i2c.h>
#include <linux/gpio.h>
#include <linux/delay.h>
#include <linux/of_gpio.h>
#include <linux/of_irq.h>
#include <linux/module.h>
#include <net/nfc/nfc.h>
#include "phy_common.h"
#define S3FWRN5_I2C_DRIVER_NAME …
struct s3fwrn5_i2c_phy { … };
static void s3fwrn5_i2c_set_mode(void *phy_id, enum s3fwrn5_mode mode)
{ … }
static int s3fwrn5_i2c_write(void *phy_id, struct sk_buff *skb)
{ … }
static const struct s3fwrn5_phy_ops i2c_phy_ops = …;
static int s3fwrn5_i2c_read(struct s3fwrn5_i2c_phy *phy)
{ … }
static irqreturn_t s3fwrn5_i2c_irq_thread_fn(int irq, void *phy_id)
{ … }
static int s3fwrn5_i2c_parse_dt(struct i2c_client *client)
{ … }
static int s3fwrn5_i2c_probe(struct i2c_client *client)
{ … }
static void s3fwrn5_i2c_remove(struct i2c_client *client)
{ … }
static const struct i2c_device_id s3fwrn5_i2c_id_table[] = …;
MODULE_DEVICE_TABLE(i2c, s3fwrn5_i2c_id_table);
static const struct of_device_id of_s3fwrn5_i2c_match[] __maybe_unused = …;
MODULE_DEVICE_TABLE(of, of_s3fwrn5_i2c_match);
static struct i2c_driver s3fwrn5_i2c_driver = …;
module_i2c_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;