#include <linux/delay.h>
#include <linux/device.h>
#include <linux/err.h>
#include <linux/errno.h>
#include <linux/i2c.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/scatterlist.h>
#include <linux/slab.h>
#include <linux/workqueue.h>
#include "atmel-i2c.h"
static void atmel_sha204a_rng_done(struct atmel_i2c_work_data *work_data,
void *areq, int status)
{ … }
static int atmel_sha204a_rng_read_nonblocking(struct hwrng *rng, void *data,
size_t max)
{ … }
static int atmel_sha204a_rng_read(struct hwrng *rng, void *data, size_t max,
bool wait)
{ … }
static int atmel_sha204a_otp_read(struct i2c_client *client, u16 addr, u8 *otp)
{ … }
static ssize_t otp_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR_RO(otp);
static struct attribute *atmel_sha204a_attrs[] = …;
static const struct attribute_group atmel_sha204a_groups = …;
static int atmel_sha204a_probe(struct i2c_client *client)
{ … }
static void atmel_sha204a_remove(struct i2c_client *client)
{ … }
static const struct of_device_id atmel_sha204a_dt_ids[] __maybe_unused = …;
MODULE_DEVICE_TABLE(of, atmel_sha204a_dt_ids);
static const struct i2c_device_id atmel_sha204a_id[] = …;
MODULE_DEVICE_TABLE(i2c, atmel_sha204a_id);
static struct i2c_driver atmel_sha204a_driver = …;
static int __init atmel_sha204a_init(void)
{ … }
static void __exit atmel_sha204a_exit(void)
{ … }
module_init(…) …;
module_exit(atmel_sha204a_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;