#include <linux/iopoll.h>
#include <linux/module.h>
#include <linux/nvmem-provider.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#define OTP_OTP_PWR_DN(t) …
#define OTP_OTP_PWR_DN_OTP_PWRDN_N …
#define OTP_OTP_ADDR_HI(t) …
#define OTP_OTP_ADDR_LO(t) …
#define OTP_OTP_PRGM_DATA(t) …
#define OTP_OTP_PRGM_MODE(t) …
#define OTP_OTP_PRGM_MODE_OTP_PGM_MODE_BYTE …
#define OTP_OTP_RD_DATA(t) …
#define OTP_OTP_FUNC_CMD(t) …
#define OTP_OTP_FUNC_CMD_OTP_PROGRAM …
#define OTP_OTP_FUNC_CMD_OTP_READ …
#define OTP_OTP_CMD_GO(t) …
#define OTP_OTP_CMD_GO_OTP_GO …
#define OTP_OTP_PASS_FAIL(t) …
#define OTP_OTP_PASS_FAIL_OTP_READ_PROHIBITED …
#define OTP_OTP_PASS_FAIL_OTP_WRITE_PROHIBITED …
#define OTP_OTP_PASS_FAIL_OTP_FAIL …
#define OTP_OTP_STATUS(t) …
#define OTP_OTP_STATUS_OTP_CPUMPEN …
#define OTP_OTP_STATUS_OTP_BUSY …
#define OTP_MEM_SIZE …
#define OTP_SLEEP_US …
#define OTP_TIMEOUT_US …
struct lan9662_otp { … };
static int lan9662_otp_wait_flag_clear(void __iomem *reg, u32 flag)
{ … }
static int lan9662_otp_power(struct lan9662_otp *otp, bool up)
{ … }
static int lan9662_otp_execute(struct lan9662_otp *otp)
{ … }
static void lan9662_otp_set_address(struct lan9662_otp *otp, u32 offset)
{ … }
static int lan9662_otp_read_byte(struct lan9662_otp *otp, u32 offset, u8 *dst)
{ … }
static int lan9662_otp_write_byte(struct lan9662_otp *otp, u32 offset, u8 data)
{ … }
static int lan9662_otp_read(void *context, unsigned int offset,
void *_val, size_t bytes)
{ … }
static int lan9662_otp_write(void *context, unsigned int offset,
void *_val, size_t bytes)
{ … }
static struct nvmem_config otp_config = …;
static int lan9662_otp_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id lan9662_otp_match[] = …;
MODULE_DEVICE_TABLE(of, lan9662_otp_match);
static struct platform_driver lan9662_otp_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;