#include <linux/array_size.h>
#include <linux/bits.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/gpio/consumer.h>
#include <linux/kstrtox.h>
#include <linux/log2.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/property.h>
#include <linux/slab.h>
#include <linux/spi/spi.h>
#include <linux/string_choices.h>
#include <linux/nvmem-provider.h>
struct eeprom_93xx46_platform_data { … };
#define OP_START …
#define OP_WRITE …
#define OP_READ …
#define ADDR_EWDS …
#define ADDR_ERAL …
#define ADDR_EWEN …
struct eeprom_93xx46_devtype_data { … };
static const struct eeprom_93xx46_devtype_data at93c46_data = …;
static const struct eeprom_93xx46_devtype_data at93c56_data = …;
static const struct eeprom_93xx46_devtype_data at93c66_data = …;
static const struct eeprom_93xx46_devtype_data atmel_at93c46d_data = …;
static const struct eeprom_93xx46_devtype_data microchip_93lc46b_data = …;
struct eeprom_93xx46_dev { … };
static inline bool has_quirk_single_word_read(struct eeprom_93xx46_dev *edev)
{ … }
static inline bool has_quirk_instruction_length(struct eeprom_93xx46_dev *edev)
{ … }
static inline bool has_quirk_extra_read_cycle(struct eeprom_93xx46_dev *edev)
{ … }
static int eeprom_93xx46_read(void *priv, unsigned int off,
void *val, size_t count)
{ … }
static int eeprom_93xx46_ew(struct eeprom_93xx46_dev *edev, int is_on)
{ … }
static ssize_t
eeprom_93xx46_write_word(struct eeprom_93xx46_dev *edev,
const char *buf, unsigned off)
{ … }
static int eeprom_93xx46_write(void *priv, unsigned int off,
void *val, size_t count)
{ … }
static int eeprom_93xx46_eral(struct eeprom_93xx46_dev *edev)
{ … }
static ssize_t erase_store(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count)
{ … }
static DEVICE_ATTR_WO(erase);
static const struct of_device_id eeprom_93xx46_of_table[] = …;
MODULE_DEVICE_TABLE(of, eeprom_93xx46_of_table);
static const struct spi_device_id eeprom_93xx46_spi_ids[] = …;
MODULE_DEVICE_TABLE(spi, eeprom_93xx46_spi_ids);
static int eeprom_93xx46_probe_fw(struct device *dev)
{ … }
static int eeprom_93xx46_probe(struct spi_device *spi)
{ … }
static void eeprom_93xx46_remove(struct spi_device *spi)
{ … }
static struct spi_driver eeprom_93xx46_driver = …;
module_spi_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_ALIAS(…) …;