#include <linux/bitfield.h>
#include <linux/device.h>
#include <linux/errno.h>
#include <linux/mtd/spi-nor.h>
#include "core.h"
#define USE_CLSR …
#define USE_CLPEF …
#define SPINOR_OP_CLSR …
#define SPINOR_OP_CLPEF …
#define SPINOR_OP_CYPRESS_DIE_ERASE …
#define SPINOR_OP_RD_ANY_REG …
#define SPINOR_OP_WR_ANY_REG …
#define SPINOR_REG_CYPRESS_VREG …
#define SPINOR_REG_CYPRESS_STR1 …
#define SPINOR_REG_CYPRESS_STR1V …
#define SPINOR_REG_CYPRESS_CFR1 …
#define SPINOR_REG_CYPRESS_CFR1_QUAD_EN …
#define SPINOR_REG_CYPRESS_CFR2 …
#define SPINOR_REG_CYPRESS_CFR2V …
#define SPINOR_REG_CYPRESS_CFR2_MEMLAT_MASK …
#define SPINOR_REG_CYPRESS_CFR2_MEMLAT_11_24 …
#define SPINOR_REG_CYPRESS_CFR2_ADRBYT …
#define SPINOR_REG_CYPRESS_CFR3 …
#define SPINOR_REG_CYPRESS_CFR3_PGSZ …
#define SPINOR_REG_CYPRESS_CFR5 …
#define SPINOR_REG_CYPRESS_CFR5_BIT6 …
#define SPINOR_REG_CYPRESS_CFR5_DDR …
#define SPINOR_REG_CYPRESS_CFR5_OPI …
#define SPINOR_REG_CYPRESS_CFR5_OCT_DTR_EN …
#define SPINOR_REG_CYPRESS_CFR5_OCT_DTR_DS …
#define SPINOR_OP_CYPRESS_RD_FAST …
#define SPINOR_REG_CYPRESS_ARCFN …
#define CYPRESS_NOR_WR_ANY_REG_OP(naddr, addr, ndata, buf) …
#define CYPRESS_NOR_RD_ANY_REG_OP(naddr, addr, ndummy, buf) …
#define SPANSION_OP(opcode) …
struct spansion_nor_params { … };
static void spansion_nor_clear_sr(struct spi_nor *nor)
{ … }
static int cypress_nor_sr_ready_and_clear_reg(struct spi_nor *nor, u64 addr)
{ … }
static int cypress_nor_sr_ready_and_clear(struct spi_nor *nor)
{ … }
static int cypress_nor_set_memlat(struct spi_nor *nor, u64 addr)
{ … }
static int cypress_nor_set_octal_dtr_bits(struct spi_nor *nor, u64 addr)
{ … }
static int cypress_nor_octal_dtr_en(struct spi_nor *nor)
{ … }
static int cypress_nor_set_single_spi_bits(struct spi_nor *nor, u64 addr)
{ … }
static int cypress_nor_octal_dtr_dis(struct spi_nor *nor)
{ … }
static int cypress_nor_quad_enable_volatile_reg(struct spi_nor *nor, u64 addr)
{ … }
static int cypress_nor_quad_enable_volatile(struct spi_nor *nor)
{ … }
static int cypress_nor_determine_addr_mode_by_sr1(struct spi_nor *nor,
u8 *addr_mode)
{ … }
static int cypress_nor_set_addr_mode_nbytes(struct spi_nor *nor)
{ … }
static int cypress_nor_get_page_size(struct spi_nor *nor)
{ … }
static void cypress_nor_ecc_init(struct spi_nor *nor)
{ … }
static int
s25fs256t_post_bfpt_fixup(struct spi_nor *nor,
const struct sfdp_parameter_header *bfpt_header,
const struct sfdp_bfpt *bfpt)
{ … }
static int s25fs256t_post_sfdp_fixup(struct spi_nor *nor)
{ … }
static int s25fs256t_late_init(struct spi_nor *nor)
{ … }
static struct spi_nor_fixups s25fs256t_fixups = …;
static int
s25hx_t_post_bfpt_fixup(struct spi_nor *nor,
const struct sfdp_parameter_header *bfpt_header,
const struct sfdp_bfpt *bfpt)
{ … }
static int s25hx_t_post_sfdp_fixup(struct spi_nor *nor)
{ … }
static int s25hx_t_late_init(struct spi_nor *nor)
{ … }
static struct spi_nor_fixups s25hx_t_fixups = …;
static int cypress_nor_set_octal_dtr(struct spi_nor *nor, bool enable)
{ … }
static int s28hx_t_post_sfdp_fixup(struct spi_nor *nor)
{ … }
static int s28hx_t_post_bfpt_fixup(struct spi_nor *nor,
const struct sfdp_parameter_header *bfpt_header,
const struct sfdp_bfpt *bfpt)
{ … }
static int s28hx_t_late_init(struct spi_nor *nor)
{ … }
static const struct spi_nor_fixups s28hx_t_fixups = …;
static int
s25fs_s_nor_post_bfpt_fixups(struct spi_nor *nor,
const struct sfdp_parameter_header *bfpt_header,
const struct sfdp_bfpt *bfpt)
{ … }
static const struct spi_nor_fixups s25fs_s_nor_fixups = …;
static const struct flash_info spansion_nor_parts[] = …;
static int spansion_nor_sr_ready_and_clear(struct spi_nor *nor)
{ … }
static int spansion_nor_late_init(struct spi_nor *nor)
{ … }
static const struct spi_nor_fixups spansion_nor_fixups = …;
const struct spi_nor_manufacturer spi_nor_spansion = …;