Commit 348d56a8 authored by Boris Brezillon's avatar Boris Brezillon Committed by Miquel Raynal

mtd: rawnand: Keep all internal stuff private

A lot of things defined in rawnand.h should not be exposed to NAND
controller drivers and should only be shared by core files.

Create the drivers/mtd/nand/raw/internals.h header to store such
definitions, and move all private defs to this header.

Also remove EXPORT_SYMBOLS() on functions that are not supposed to be
exposed.
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@bootlin.com>
Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
parent 462f35d3
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2018 - Bootlin
*
* Author: Boris Brezillon <boris.brezillon@bootlin.com>
*
* Header containing internal definitions to be used only by core files.
* NAND controller drivers should not include this file.
*/
#ifndef __LINUX_RAWNAND_INTERNALS
#define __LINUX_RAWNAND_INTERNALS
#include <linux/mtd/rawnand.h>
/*
* NAND Flash Manufacturer ID Codes
*/
#define NAND_MFR_TOSHIBA 0x98
#define NAND_MFR_ESMT 0xc8
#define NAND_MFR_SAMSUNG 0xec
#define NAND_MFR_FUJITSU 0x04
#define NAND_MFR_NATIONAL 0x8f
#define NAND_MFR_RENESAS 0x07
#define NAND_MFR_STMICRO 0x20
#define NAND_MFR_HYNIX 0xad
#define NAND_MFR_MICRON 0x2c
#define NAND_MFR_AMD 0x01
#define NAND_MFR_MACRONIX 0xc2
#define NAND_MFR_EON 0x92
#define NAND_MFR_SANDISK 0x45
#define NAND_MFR_INTEL 0x89
#define NAND_MFR_ATO 0x9b
#define NAND_MFR_WINBOND 0xef
/**
* struct nand_manufacturer_ops - NAND Manufacturer operations
* @detect: detect the NAND memory organization and capabilities
* @init: initialize all vendor specific fields (like the ->read_retry()
* implementation) if any.
* @cleanup: the ->init() function may have allocated resources, ->cleanup()
* is here to let vendor specific code release those resources.
* @fixup_onfi_param_page: apply vendor specific fixups to the ONFI parameter
* page. This is called after the checksum is verified.
*/
struct nand_manufacturer_ops {
void (*detect)(struct nand_chip *chip);
int (*init)(struct nand_chip *chip);
void (*cleanup)(struct nand_chip *chip);
void (*fixup_onfi_param_page)(struct nand_chip *chip,
struct nand_onfi_params *p);
};
/**
* struct nand_manufacturer - NAND Flash Manufacturer structure
* @name: Manufacturer name
* @id: manufacturer ID code of device.
* @ops: manufacturer operations
*/
struct nand_manufacturer {
int id;
char *name;
const struct nand_manufacturer_ops *ops;
};
extern struct nand_flash_dev nand_flash_ids[];
extern const struct nand_manufacturer_ops toshiba_nand_manuf_ops;
extern const struct nand_manufacturer_ops samsung_nand_manuf_ops;
extern const struct nand_manufacturer_ops hynix_nand_manuf_ops;
extern const struct nand_manufacturer_ops micron_nand_manuf_ops;
extern const struct nand_manufacturer_ops amd_nand_manuf_ops;
extern const struct nand_manufacturer_ops macronix_nand_manuf_ops;
/* Core functions */
const struct nand_manufacturer *nand_get_manufacturer(u8 id);
int nand_markbad_bbm(struct nand_chip *chip, loff_t ofs);
int nand_erase_nand(struct nand_chip *chip, struct erase_info *instr,
int allowbbt);
int onfi_fill_data_interface(struct nand_chip *chip,
enum nand_data_interface_type type,
int timing_mode);
int nand_get_features(struct nand_chip *chip, int addr, u8 *subfeature_param);
int nand_set_features(struct nand_chip *chip, int addr, u8 *subfeature_param);
int nand_read_page_raw_notsupp(struct nand_chip *chip, u8 *buf,
int oob_required, int page);
int nand_write_page_raw_notsupp(struct nand_chip *chip, const u8 *buf,
int oob_required, int page);
int nand_exit_status_op(struct nand_chip *chip);
void nand_decode_ext_id(struct nand_chip *chip);
/* BBT functions */
int nand_markbad_bbt(struct nand_chip *chip, loff_t offs);
int nand_isreserved_bbt(struct nand_chip *chip, loff_t offs);
int nand_isbad_bbt(struct nand_chip *chip, loff_t offs, int allowbbt);
#endif /* __LINUX_RAWNAND_INTERNALS */
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
*/ */
#include <linux/mtd/rawnand.h> #include "internals.h"
static void amd_nand_decode_id(struct nand_chip *chip) static void amd_nand_decode_id(struct nand_chip *chip)
{ {
......
...@@ -39,7 +39,6 @@ ...@@ -39,7 +39,6 @@
#include <linux/nmi.h> #include <linux/nmi.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
#include <linux/mtd/rawnand.h>
#include <linux/mtd/nand_ecc.h> #include <linux/mtd/nand_ecc.h>
#include <linux/mtd/nand_bch.h> #include <linux/mtd/nand_bch.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
...@@ -48,6 +47,8 @@ ...@@ -48,6 +47,8 @@
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/of.h> #include <linux/of.h>
#include "internals.h"
static int nand_get_device(struct mtd_info *mtd, int new_state); static int nand_get_device(struct mtd_info *mtd, int new_state);
static int nand_do_write_oob(struct mtd_info *mtd, loff_t to, static int nand_do_write_oob(struct mtd_info *mtd, loff_t to,
...@@ -1319,7 +1320,6 @@ static int nand_init_data_interface(struct nand_chip *chip) ...@@ -1319,7 +1320,6 @@ static int nand_init_data_interface(struct nand_chip *chip)
modes = GENMASK(chip->onfi_timing_mode_default, 0); modes = GENMASK(chip->onfi_timing_mode_default, 0);
} }
for (mode = fls(modes) - 1; mode >= 0; mode--) { for (mode = fls(modes) - 1; mode >= 0; mode--) {
ret = onfi_fill_data_interface(chip, NAND_SDR_IFACE, mode); ret = onfi_fill_data_interface(chip, NAND_SDR_IFACE, mode);
if (ret) if (ret)
...@@ -2043,7 +2043,6 @@ int nand_exit_status_op(struct nand_chip *chip) ...@@ -2043,7 +2043,6 @@ int nand_exit_status_op(struct nand_chip *chip)
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(nand_exit_status_op);
/** /**
* nand_erase_op - Do an erase operation * nand_erase_op - Do an erase operation
...@@ -2816,7 +2815,6 @@ int nand_get_features(struct nand_chip *chip, int addr, ...@@ -2816,7 +2815,6 @@ int nand_get_features(struct nand_chip *chip, int addr,
return nand_get_features_op(chip, addr, subfeature_param); return nand_get_features_op(chip, addr, subfeature_param);
} }
EXPORT_SYMBOL_GPL(nand_get_features);
/** /**
* nand_set_features - wrapper to perform a SET_FEATURE * nand_set_features - wrapper to perform a SET_FEATURE
...@@ -2838,7 +2836,6 @@ int nand_set_features(struct nand_chip *chip, int addr, ...@@ -2838,7 +2836,6 @@ int nand_set_features(struct nand_chip *chip, int addr,
return nand_set_features_op(chip, addr, subfeature_param); return nand_set_features_op(chip, addr, subfeature_param);
} }
EXPORT_SYMBOL_GPL(nand_set_features);
/** /**
* nand_check_erased_buf - check if a buffer contains (almost) only 0xff data * nand_check_erased_buf - check if a buffer contains (almost) only 0xff data
...@@ -2985,7 +2982,6 @@ int nand_read_page_raw_notsupp(struct nand_chip *chip, u8 *buf, ...@@ -2985,7 +2982,6 @@ int nand_read_page_raw_notsupp(struct nand_chip *chip, u8 *buf,
{ {
return -ENOTSUPP; return -ENOTSUPP;
} }
EXPORT_SYMBOL(nand_read_page_raw_notsupp);
/** /**
* nand_read_page_raw - [INTERN] read raw page data without ecc * nand_read_page_raw - [INTERN] read raw page data without ecc
...@@ -3729,7 +3725,7 @@ EXPORT_SYMBOL(nand_read_oob_std); ...@@ -3729,7 +3725,7 @@ EXPORT_SYMBOL(nand_read_oob_std);
* @chip: nand chip info structure * @chip: nand chip info structure
* @page: page number to read * @page: page number to read
*/ */
int nand_read_oob_syndrome(struct nand_chip *chip, int page) static int nand_read_oob_syndrome(struct nand_chip *chip, int page)
{ {
struct mtd_info *mtd = nand_to_mtd(chip); struct mtd_info *mtd = nand_to_mtd(chip);
int length = mtd->oobsize; int length = mtd->oobsize;
...@@ -3776,7 +3772,6 @@ int nand_read_oob_syndrome(struct nand_chip *chip, int page) ...@@ -3776,7 +3772,6 @@ int nand_read_oob_syndrome(struct nand_chip *chip, int page)
return 0; return 0;
} }
EXPORT_SYMBOL(nand_read_oob_syndrome);
/** /**
* nand_write_oob_std - [REPLACEABLE] the most common OOB data write function * nand_write_oob_std - [REPLACEABLE] the most common OOB data write function
...@@ -3798,7 +3793,7 @@ EXPORT_SYMBOL(nand_write_oob_std); ...@@ -3798,7 +3793,7 @@ EXPORT_SYMBOL(nand_write_oob_std);
* @chip: nand chip info structure * @chip: nand chip info structure
* @page: page number to write * @page: page number to write
*/ */
int nand_write_oob_syndrome(struct nand_chip *chip, int page) static int nand_write_oob_syndrome(struct nand_chip *chip, int page)
{ {
struct mtd_info *mtd = nand_to_mtd(chip); struct mtd_info *mtd = nand_to_mtd(chip);
int chunk = chip->ecc.bytes + chip->ecc.prepad + chip->ecc.postpad; int chunk = chip->ecc.bytes + chip->ecc.prepad + chip->ecc.postpad;
...@@ -3864,7 +3859,6 @@ int nand_write_oob_syndrome(struct nand_chip *chip, int page) ...@@ -3864,7 +3859,6 @@ int nand_write_oob_syndrome(struct nand_chip *chip, int page)
return nand_prog_page_end_op(chip); return nand_prog_page_end_op(chip);
} }
EXPORT_SYMBOL(nand_write_oob_syndrome);
/** /**
* nand_do_read_oob - [INTERN] NAND read out-of-band * nand_do_read_oob - [INTERN] NAND read out-of-band
...@@ -3989,7 +3983,6 @@ int nand_write_page_raw_notsupp(struct nand_chip *chip, const u8 *buf, ...@@ -3989,7 +3983,6 @@ int nand_write_page_raw_notsupp(struct nand_chip *chip, const u8 *buf,
{ {
return -ENOTSUPP; return -ENOTSUPP;
} }
EXPORT_SYMBOL(nand_write_page_raw_notsupp);
/** /**
* nand_write_page_raw - [INTERN] raw page write function * nand_write_page_raw - [INTERN] raw page write function
...@@ -5579,6 +5572,12 @@ static void nand_manufacturer_cleanup(struct nand_chip *chip) ...@@ -5579,6 +5572,12 @@ static void nand_manufacturer_cleanup(struct nand_chip *chip)
chip->manufacturer.desc->ops->cleanup(chip); chip->manufacturer.desc->ops->cleanup(chip);
} }
static const char *
nand_manufacturer_name(const struct nand_manufacturer *manufacturer)
{
return manufacturer ? manufacturer->name : "Unknown";
}
/* /*
* Get the flash and manufacturer id and lookup if the type is supported. * Get the flash and manufacturer id and lookup if the type is supported.
*/ */
......
...@@ -61,13 +61,14 @@ ...@@ -61,13 +61,14 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
#include <linux/mtd/bbm.h> #include <linux/mtd/bbm.h>
#include <linux/mtd/rawnand.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/vmalloc.h> #include <linux/vmalloc.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/string.h> #include <linux/string.h>
#include "internals.h"
#define BBT_BLOCK_GOOD 0x00 #define BBT_BLOCK_GOOD 0x00
#define BBT_BLOCK_WORN 0x01 #define BBT_BLOCK_WORN 0x01
#define BBT_BLOCK_RESERVED 0x02 #define BBT_BLOCK_RESERVED 0x02
......
...@@ -15,10 +15,11 @@ ...@@ -15,10 +15,11 @@
* GNU General Public License for more details. * GNU General Public License for more details.
*/ */
#include <linux/mtd/rawnand.h>
#include <linux/sizes.h> #include <linux/sizes.h>
#include <linux/slab.h> #include <linux/slab.h>
#include "internals.h"
#define NAND_HYNIX_CMD_SET_PARAMS 0x36 #define NAND_HYNIX_CMD_SET_PARAMS 0x36
#define NAND_HYNIX_CMD_APPLY_PARAMS 0x16 #define NAND_HYNIX_CMD_APPLY_PARAMS 0x16
......
...@@ -6,9 +6,11 @@ ...@@ -6,9 +6,11 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
* *
*/ */
#include <linux/mtd/rawnand.h>
#include <linux/sizes.h> #include <linux/sizes.h>
#include "internals.h"
#define LP_OPTIONS 0 #define LP_OPTIONS 0
#define LP_OPTIONS16 (LP_OPTIONS | NAND_BUSWIDTH_16) #define LP_OPTIONS16 (LP_OPTIONS | NAND_BUSWIDTH_16)
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
*/ */
#include <linux/mtd/rawnand.h> #include "internals.h"
/* /*
* Macronix AC series does not support using SET/GET_FEATURES to change * Macronix AC series does not support using SET/GET_FEATURES to change
......
...@@ -15,9 +15,10 @@ ...@@ -15,9 +15,10 @@
* GNU General Public License for more details. * GNU General Public License for more details.
*/ */
#include <linux/mtd/rawnand.h>
#include <linux/slab.h> #include <linux/slab.h>
#include "internals.h"
/* /*
* Special Micron status bit 3 indicates that the block has been * Special Micron status bit 3 indicates that the block has been
* corrected by on-die ECC and should be rewritten. * corrected by on-die ECC and should be rewritten.
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
*/ */
#include <linux/mtd/rawnand.h> #include "internals.h"
static void samsung_nand_decode_id(struct nand_chip *chip) static void samsung_nand_decode_id(struct nand_chip *chip)
{ {
......
...@@ -11,7 +11,8 @@ ...@@ -11,7 +11,8 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/mtd/rawnand.h>
#include "internals.h"
#define ONFI_DYN_TIMING_MAX U16_MAX #define ONFI_DYN_TIMING_MAX U16_MAX
...@@ -325,4 +326,3 @@ int onfi_fill_data_interface(struct nand_chip *chip, ...@@ -325,4 +326,3 @@ int onfi_fill_data_interface(struct nand_chip *chip,
return 0; return 0;
} }
EXPORT_SYMBOL(onfi_fill_data_interface);
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
*/ */
#include <linux/mtd/rawnand.h> #include "internals.h"
/* Bit for detecting BENAND */ /* Bit for detecting BENAND */
#define TOSHIBA_NAND_ID4_IS_BENAND BIT(7) #define TOSHIBA_NAND_ID4_IS_BENAND BIT(7)
......
...@@ -775,24 +775,6 @@ nand_get_sdr_timings(const struct nand_data_interface *conf) ...@@ -775,24 +775,6 @@ nand_get_sdr_timings(const struct nand_data_interface *conf)
return &conf->timings.sdr; return &conf->timings.sdr;
} }
/**
* struct nand_manufacturer_ops - NAND Manufacturer operations
* @detect: detect the NAND memory organization and capabilities
* @init: initialize all vendor specific fields (like the ->read_retry()
* implementation) if any.
* @cleanup: the ->init() function may have allocated resources, ->cleanup()
* is here to let vendor specific code release those resources.
* @fixup_onfi_param_page: apply vendor specific fixups to the ONFI parameter
* page. This is called after the checksum is verified.
*/
struct nand_manufacturer_ops {
void (*detect)(struct nand_chip *chip);
int (*init)(struct nand_chip *chip);
void (*cleanup)(struct nand_chip *chip);
void (*fixup_onfi_param_page)(struct nand_chip *chip,
struct nand_onfi_params *p);
};
/** /**
* struct nand_op_cmd_instr - Definition of a command instruction * struct nand_op_cmd_instr - Definition of a command instruction
* @opcode: the command to issue in one cycle * @opcode: the command to issue in one cycle
...@@ -1403,27 +1385,6 @@ static inline void *nand_get_manufacturer_data(struct nand_chip *chip) ...@@ -1403,27 +1385,6 @@ static inline void *nand_get_manufacturer_data(struct nand_chip *chip)
return chip->manufacturer.priv; return chip->manufacturer.priv;
} }
/*
* NAND Flash Manufacturer ID Codes
*/
#define NAND_MFR_TOSHIBA 0x98
#define NAND_MFR_ESMT 0xc8
#define NAND_MFR_SAMSUNG 0xec
#define NAND_MFR_FUJITSU 0x04
#define NAND_MFR_NATIONAL 0x8f
#define NAND_MFR_RENESAS 0x07
#define NAND_MFR_STMICRO 0x20
#define NAND_MFR_HYNIX 0xad
#define NAND_MFR_MICRON 0x2c
#define NAND_MFR_AMD 0x01
#define NAND_MFR_MACRONIX 0xc2
#define NAND_MFR_EON 0x92
#define NAND_MFR_SANDISK 0x45
#define NAND_MFR_INTEL 0x89
#define NAND_MFR_ATO 0x9b
#define NAND_MFR_WINBOND 0xef
/* /*
* A helper for defining older NAND chips where the second ID byte fully * A helper for defining older NAND chips where the second ID byte fully
* defined the chip, including the geometry (chip size, eraseblock size, page * defined the chip, including the geometry (chip size, eraseblock size, page
...@@ -1503,46 +1464,7 @@ struct nand_flash_dev { ...@@ -1503,46 +1464,7 @@ struct nand_flash_dev {
int onfi_timing_mode_default; int onfi_timing_mode_default;
}; };
/**
* struct nand_manufacturer - NAND Flash Manufacturer structure
* @name: Manufacturer name
* @id: manufacturer ID code of device.
* @ops: manufacturer operations
*/
struct nand_manufacturer {
int id;
char *name;
const struct nand_manufacturer_ops *ops;
};
const struct nand_manufacturer *nand_get_manufacturer(u8 id);
static inline const char *
nand_manufacturer_name(const struct nand_manufacturer *manufacturer)
{
return manufacturer ? manufacturer->name : "Unknown";
}
extern struct nand_flash_dev nand_flash_ids[];
extern const struct nand_manufacturer_ops toshiba_nand_manuf_ops;
extern const struct nand_manufacturer_ops samsung_nand_manuf_ops;
extern const struct nand_manufacturer_ops hynix_nand_manuf_ops;
extern const struct nand_manufacturer_ops micron_nand_manuf_ops;
extern const struct nand_manufacturer_ops amd_nand_manuf_ops;
extern const struct nand_manufacturer_ops macronix_nand_manuf_ops;
int nand_create_bbt(struct nand_chip *chip); int nand_create_bbt(struct nand_chip *chip);
int nand_markbad_bbt(struct nand_chip *chip, loff_t offs);
int nand_markbad_bbm(struct nand_chip *chip, loff_t ofs);
int nand_isreserved_bbt(struct nand_chip *chip, loff_t offs);
int nand_isbad_bbt(struct nand_chip *chip, loff_t offs, int allowbbt);
int nand_erase_nand(struct nand_chip *chip, struct erase_info *instr,
int allowbbt);
int onfi_fill_data_interface(struct nand_chip *chip,
enum nand_data_interface_type type,
int timing_mode);
/* /*
* Check if it is a SLC nand. * Check if it is a SLC nand.
...@@ -1574,7 +1496,6 @@ static inline int nand_opcode_8bits(unsigned int command) ...@@ -1574,7 +1496,6 @@ static inline int nand_opcode_8bits(unsigned int command)
return 0; return 0;
} }
int nand_check_erased_ecc_chunk(void *data, int datalen, int nand_check_erased_ecc_chunk(void *data, int datalen,
void *ecc, int ecclen, void *ecc, int ecclen,
void *extraoob, int extraooblen, void *extraoob, int extraooblen,
...@@ -1586,18 +1507,9 @@ int nand_ecc_choose_conf(struct nand_chip *chip, ...@@ -1586,18 +1507,9 @@ int nand_ecc_choose_conf(struct nand_chip *chip,
/* Default write_oob implementation */ /* Default write_oob implementation */
int nand_write_oob_std(struct nand_chip *chip, int page); int nand_write_oob_std(struct nand_chip *chip, int page);
/* Default write_oob syndrome implementation */
int nand_write_oob_syndrome(struct nand_chip *chip, int page);
/* Default read_oob implementation */ /* Default read_oob implementation */
int nand_read_oob_std(struct nand_chip *chip, int page); int nand_read_oob_std(struct nand_chip *chip, int page);
/* Default read_oob syndrome implementation */
int nand_read_oob_syndrome(struct nand_chip *chip, int page);
/* Wrapper to use in order for controllers/vendors to GET/SET FEATURES */
int nand_get_features(struct nand_chip *chip, int addr, u8 *subfeature_param);
int nand_set_features(struct nand_chip *chip, int addr, u8 *subfeature_param);
/* Stub used by drivers that do not support GET/SET FEATURES operations */ /* Stub used by drivers that do not support GET/SET FEATURES operations */
int nand_get_set_features_notsupp(struct nand_chip *chip, int addr, int nand_get_set_features_notsupp(struct nand_chip *chip, int addr,
u8 *subfeature_param); u8 *subfeature_param);
...@@ -1605,14 +1517,10 @@ int nand_get_set_features_notsupp(struct nand_chip *chip, int addr, ...@@ -1605,14 +1517,10 @@ int nand_get_set_features_notsupp(struct nand_chip *chip, int addr,
/* Default read_page_raw implementation */ /* Default read_page_raw implementation */
int nand_read_page_raw(struct nand_chip *chip, uint8_t *buf, int oob_required, int nand_read_page_raw(struct nand_chip *chip, uint8_t *buf, int oob_required,
int page); int page);
int nand_read_page_raw_notsupp(struct nand_chip *chip, u8 *buf,
int oob_required, int page);
/* Default write_page_raw implementation */ /* Default write_page_raw implementation */
int nand_write_page_raw(struct nand_chip *chip, const uint8_t *buf, int nand_write_page_raw(struct nand_chip *chip, const uint8_t *buf,
int oob_required, int page); int oob_required, int page);
int nand_write_page_raw_notsupp(struct nand_chip *chip, const u8 *buf,
int oob_required, int page);
/* Reset and initialize a NAND device */ /* Reset and initialize a NAND device */
int nand_reset(struct nand_chip *chip, int chipnr); int nand_reset(struct nand_chip *chip, int chipnr);
...@@ -1622,7 +1530,6 @@ int nand_reset_op(struct nand_chip *chip); ...@@ -1622,7 +1530,6 @@ int nand_reset_op(struct nand_chip *chip);
int nand_readid_op(struct nand_chip *chip, u8 addr, void *buf, int nand_readid_op(struct nand_chip *chip, u8 addr, void *buf,
unsigned int len); unsigned int len);
int nand_status_op(struct nand_chip *chip, u8 *status); int nand_status_op(struct nand_chip *chip, u8 *status);
int nand_exit_status_op(struct nand_chip *chip);
int nand_erase_op(struct nand_chip *chip, unsigned int eraseblock); int nand_erase_op(struct nand_chip *chip, unsigned int eraseblock);
int nand_read_page_op(struct nand_chip *chip, unsigned int page, int nand_read_page_op(struct nand_chip *chip, unsigned int page,
unsigned int offset_in_page, void *buf, unsigned int len); unsigned int offset_in_page, void *buf, unsigned int len);
...@@ -1666,9 +1573,6 @@ void nand_cleanup(struct nand_chip *chip); ...@@ -1666,9 +1573,6 @@ void nand_cleanup(struct nand_chip *chip);
/* Unregister the MTD device and calls nand_cleanup() */ /* Unregister the MTD device and calls nand_cleanup() */
void nand_release(struct nand_chip *chip); void nand_release(struct nand_chip *chip);
/* Default extended ID decoding function */
void nand_decode_ext_id(struct nand_chip *chip);
/* /*
* External helper for controller drivers that have to implement the WAITRDY * External helper for controller drivers that have to implement the WAITRDY
* instruction and have no physical pin to check it. * instruction and have no physical pin to check it.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment