#include <linux/crc8.h>
#include <linux/etherdevice.h>
#include <linux/nvmem-consumer.h>
#include <linux/nvmem-provider.h>
#include <linux/of.h>
#include <uapi/linux/if_ether.h>
#define SL28VPD_MAGIC …
struct sl28vpd_header { … } __packed;
struct sl28vpd_v1 { … } __packed;
static int sl28vpd_mac_address_pp(void *priv, const char *id, int index,
unsigned int offset, void *buf,
size_t bytes)
{ … }
static const struct nvmem_cell_info sl28vpd_v1_entries[] = …;
static int sl28vpd_v1_check_crc(struct device *dev, struct nvmem_device *nvmem)
{ … }
static int sl28vpd_add_cells(struct nvmem_layout *layout)
{ … }
static int sl28vpd_probe(struct nvmem_layout *layout)
{ … }
static void sl28vpd_remove(struct nvmem_layout *layout)
{ … }
static const struct of_device_id sl28vpd_of_match_table[] = …;
MODULE_DEVICE_TABLE(of, sl28vpd_of_match_table);
static struct nvmem_layout_driver sl28vpd_layout = …;
module_nvmem_layout_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;