|
@@ -21,7 +21,7 @@
|
|
* TODO:
|
|
* TODO:
|
|
* Enable cached programming for 2k page size chips
|
|
* Enable cached programming for 2k page size chips
|
|
* Check, if mtd->ecctype should be set to MTD_ECC_HW
|
|
* Check, if mtd->ecctype should be set to MTD_ECC_HW
|
|
- * if we have HW ecc support.
|
|
|
|
|
|
+ * if we have HW ECC support.
|
|
* The AG-AND chips have nice features for speed improvement,
|
|
* The AG-AND chips have nice features for speed improvement,
|
|
* which are not supported yet. Read / program 4 pages in one go.
|
|
* which are not supported yet. Read / program 4 pages in one go.
|
|
* BBT table is not serialized, has to be fixed
|
|
* BBT table is not serialized, has to be fixed
|
|
@@ -159,7 +159,7 @@ static void nand_release_device(struct mtd_info *mtd)
|
|
* nand_read_byte - [DEFAULT] read one byte from the chip
|
|
* nand_read_byte - [DEFAULT] read one byte from the chip
|
|
* @mtd: MTD device structure
|
|
* @mtd: MTD device structure
|
|
*
|
|
*
|
|
- * Default read function for 8bit buswith.
|
|
|
|
|
|
+ * Default read function for 8bit buswidth
|
|
*/
|
|
*/
|
|
static uint8_t nand_read_byte(struct mtd_info *mtd)
|
|
static uint8_t nand_read_byte(struct mtd_info *mtd)
|
|
{
|
|
{
|
|
@@ -169,9 +169,11 @@ static uint8_t nand_read_byte(struct mtd_info *mtd)
|
|
|
|
|
|
/**
|
|
/**
|
|
* nand_read_byte16 - [DEFAULT] read one byte endianess aware from the chip
|
|
* nand_read_byte16 - [DEFAULT] read one byte endianess aware from the chip
|
|
|
|
+ * nand_read_byte16 - [DEFAULT] read one byte endianness aware from the chip
|
|
* @mtd: MTD device structure
|
|
* @mtd: MTD device structure
|
|
*
|
|
*
|
|
- * Default read function for 16bit buswith with endianess conversion.
|
|
|
|
|
|
+ * Default read function for 16bit buswidth with endianness conversion.
|
|
|
|
+ *
|
|
*/
|
|
*/
|
|
static uint8_t nand_read_byte16(struct mtd_info *mtd)
|
|
static uint8_t nand_read_byte16(struct mtd_info *mtd)
|
|
{
|
|
{
|
|
@@ -183,7 +185,7 @@ static uint8_t nand_read_byte16(struct mtd_info *mtd)
|
|
* nand_read_word - [DEFAULT] read one word from the chip
|
|
* nand_read_word - [DEFAULT] read one word from the chip
|
|
* @mtd: MTD device structure
|
|
* @mtd: MTD device structure
|
|
*
|
|
*
|
|
- * Default read function for 16bit buswith without endianess conversion.
|
|
|
|
|
|
+ * Default read function for 16bit buswidth without endianness conversion.
|
|
*/
|
|
*/
|
|
static u16 nand_read_word(struct mtd_info *mtd)
|
|
static u16 nand_read_word(struct mtd_info *mtd)
|
|
{
|
|
{
|
|
@@ -220,7 +222,7 @@ static void nand_select_chip(struct mtd_info *mtd, int chipnr)
|
|
* @buf: data buffer
|
|
* @buf: data buffer
|
|
* @len: number of bytes to write
|
|
* @len: number of bytes to write
|
|
*
|
|
*
|
|
- * Default write function for 8bit buswith.
|
|
|
|
|
|
+ * Default write function for 8bit buswidth.
|
|
*/
|
|
*/
|
|
static void nand_write_buf(struct mtd_info *mtd, const uint8_t *buf, int len)
|
|
static void nand_write_buf(struct mtd_info *mtd, const uint8_t *buf, int len)
|
|
{
|
|
{
|
|
@@ -237,7 +239,7 @@ static void nand_write_buf(struct mtd_info *mtd, const uint8_t *buf, int len)
|
|
* @buf: buffer to store date
|
|
* @buf: buffer to store date
|
|
* @len: number of bytes to read
|
|
* @len: number of bytes to read
|
|
*
|
|
*
|
|
- * Default read function for 8bit buswith.
|
|
|
|
|
|
+ * Default read function for 8bit buswidth.
|
|
*/
|
|
*/
|
|
static void nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
|
|
static void nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
|
|
{
|
|
{
|
|
@@ -254,7 +256,7 @@ static void nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
|
|
* @buf: buffer containing the data to compare
|
|
* @buf: buffer containing the data to compare
|
|
* @len: number of bytes to compare
|
|
* @len: number of bytes to compare
|
|
*
|
|
*
|
|
- * Default verify function for 8bit buswith.
|
|
|
|
|
|
+ * Default verify function for 8bit buswidth.
|
|
*/
|
|
*/
|
|
static int nand_verify_buf(struct mtd_info *mtd, const uint8_t *buf, int len)
|
|
static int nand_verify_buf(struct mtd_info *mtd, const uint8_t *buf, int len)
|
|
{
|
|
{
|
|
@@ -273,7 +275,7 @@ static int nand_verify_buf(struct mtd_info *mtd, const uint8_t *buf, int len)
|
|
* @buf: data buffer
|
|
* @buf: data buffer
|
|
* @len: number of bytes to write
|
|
* @len: number of bytes to write
|
|
*
|
|
*
|
|
- * Default write function for 16bit buswith.
|
|
|
|
|
|
+ * Default write function for 16bit buswidth.
|
|
*/
|
|
*/
|
|
static void nand_write_buf16(struct mtd_info *mtd, const uint8_t *buf, int len)
|
|
static void nand_write_buf16(struct mtd_info *mtd, const uint8_t *buf, int len)
|
|
{
|
|
{
|
|
@@ -293,7 +295,7 @@ static void nand_write_buf16(struct mtd_info *mtd, const uint8_t *buf, int len)
|
|
* @buf: buffer to store date
|
|
* @buf: buffer to store date
|
|
* @len: number of bytes to read
|
|
* @len: number of bytes to read
|
|
*
|
|
*
|
|
- * Default read function for 16bit buswith.
|
|
|
|
|
|
+ * Default read function for 16bit buswidth.
|
|
*/
|
|
*/
|
|
static void nand_read_buf16(struct mtd_info *mtd, uint8_t *buf, int len)
|
|
static void nand_read_buf16(struct mtd_info *mtd, uint8_t *buf, int len)
|
|
{
|
|
{
|
|
@@ -312,7 +314,7 @@ static void nand_read_buf16(struct mtd_info *mtd, uint8_t *buf, int len)
|
|
* @buf: buffer containing the data to compare
|
|
* @buf: buffer containing the data to compare
|
|
* @len: number of bytes to compare
|
|
* @len: number of bytes to compare
|
|
*
|
|
*
|
|
- * Default verify function for 16bit buswith.
|
|
|
|
|
|
+ * Default verify function for 16bit buswidth.
|
|
*/
|
|
*/
|
|
static int nand_verify_buf16(struct mtd_info *mtd, const uint8_t *buf, int len)
|
|
static int nand_verify_buf16(struct mtd_info *mtd, const uint8_t *buf, int len)
|
|
{
|
|
{
|
|
@@ -499,7 +501,7 @@ static void panic_nand_wait_ready(struct mtd_info *mtd, unsigned long timeo)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-/* Wait for the ready pin, after a command. The timeout is catched later */
|
|
|
|
|
|
+/* Wait for the ready pin, after a command. The timeout is caught later. */
|
|
void nand_wait_ready(struct mtd_info *mtd)
|
|
void nand_wait_ready(struct mtd_info *mtd)
|
|
{
|
|
{
|
|
struct nand_chip *chip = mtd->priv;
|
|
struct nand_chip *chip = mtd->priv;
|
|
@@ -510,7 +512,7 @@ void nand_wait_ready(struct mtd_info *mtd)
|
|
return panic_nand_wait_ready(mtd, 400);
|
|
return panic_nand_wait_ready(mtd, 400);
|
|
|
|
|
|
led_trigger_event(nand_led_trigger, LED_FULL);
|
|
led_trigger_event(nand_led_trigger, LED_FULL);
|
|
- /* Wait until command is processed or timeout occures */
|
|
|
|
|
|
+ /* Wait until command is processed or timeout occurs */
|
|
do {
|
|
do {
|
|
if (chip->dev_ready(mtd))
|
|
if (chip->dev_ready(mtd))
|
|
break;
|
|
break;
|
|
@@ -629,8 +631,8 @@ static void nand_command(struct mtd_info *mtd, unsigned int command,
|
|
* @page_addr: the page address for this command, -1 if none
|
|
* @page_addr: the page address for this command, -1 if none
|
|
*
|
|
*
|
|
* Send command to NAND device. This is the version for the new large page
|
|
* Send command to NAND device. This is the version for the new large page
|
|
- * devices We dont have the separate regions as we have in the small page
|
|
|
|
- * devices. We must emulate NAND_CMD_READOOB to keep the code compatible.
|
|
|
|
|
|
+ * devices. We don't have the separate regions as we have in the small page
|
|
|
|
+ * devices. We must emulate NAND_CMD_READOOB to keep the code compatible.
|
|
*/
|
|
*/
|
|
static void nand_command_lp(struct mtd_info *mtd, unsigned int command,
|
|
static void nand_command_lp(struct mtd_info *mtd, unsigned int command,
|
|
int column, int page_addr)
|
|
int column, int page_addr)
|
|
@@ -754,7 +756,7 @@ static void nand_command_lp(struct mtd_info *mtd, unsigned int command,
|
|
static void panic_nand_get_device(struct nand_chip *chip,
|
|
static void panic_nand_get_device(struct nand_chip *chip,
|
|
struct mtd_info *mtd, int new_state)
|
|
struct mtd_info *mtd, int new_state)
|
|
{
|
|
{
|
|
- /* Hardware controller shared among independend devices */
|
|
|
|
|
|
+ /* Hardware controller shared among independent devices */
|
|
chip->controller->active = chip;
|
|
chip->controller->active = chip;
|
|
chip->state = new_state;
|
|
chip->state = new_state;
|
|
}
|
|
}
|
|
@@ -1032,14 +1034,13 @@ out:
|
|
EXPORT_SYMBOL(nand_lock);
|
|
EXPORT_SYMBOL(nand_lock);
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_read_page_raw - [Intern] read raw page data without ecc
|
|
|
|
|
|
+ * nand_read_page_raw - [INTERN] read raw page data without ecc
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @buf: buffer to store read data
|
|
* @buf: buffer to store read data
|
|
* @page: page number to read
|
|
* @page: page number to read
|
|
*
|
|
*
|
|
- * Not for syndrome calculating ecc controllers, which use a special oob
|
|
|
|
- * layout.
|
|
|
|
|
|
+ * Not for syndrome calculating ECC controllers, which use a special oob layout.
|
|
*/
|
|
*/
|
|
static int nand_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
|
|
static int nand_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
|
|
uint8_t *buf, int page)
|
|
uint8_t *buf, int page)
|
|
@@ -1050,7 +1051,7 @@ static int nand_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_read_page_raw_syndrome - [Intern] read raw page data without ecc
|
|
|
|
|
|
+ * nand_read_page_raw_syndrome - [INTERN] read raw page data without ecc
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @buf: buffer to store read data
|
|
* @buf: buffer to store read data
|
|
@@ -1093,7 +1094,7 @@ static int nand_read_page_raw_syndrome(struct mtd_info *mtd,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_read_page_swecc - [REPLACABLE] software ecc based page read function
|
|
|
|
|
|
+ * nand_read_page_swecc - [REPLACEABLE] software ECC based page read function
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @buf: buffer to store read data
|
|
* @buf: buffer to store read data
|
|
@@ -1134,7 +1135,7 @@ static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip *chip,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_read_subpage - [REPLACABLE] software ecc based sub-page read function
|
|
|
|
|
|
+ * nand_read_subpage - [REPLACEABLE] software ECC based sub-page read function
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @data_offs: offset of requested data within the page
|
|
* @data_offs: offset of requested data within the page
|
|
@@ -1152,7 +1153,7 @@ static int nand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip,
|
|
int busw = (chip->options & NAND_BUSWIDTH_16) ? 2 : 1;
|
|
int busw = (chip->options & NAND_BUSWIDTH_16) ? 2 : 1;
|
|
int index = 0;
|
|
int index = 0;
|
|
|
|
|
|
- /* Column address wihin the page aligned to ECC size (256bytes) */
|
|
|
|
|
|
+ /* Column address within the page aligned to ECC size (256bytes) */
|
|
start_step = data_offs / chip->ecc.size;
|
|
start_step = data_offs / chip->ecc.size;
|
|
end_step = (data_offs + readlen - 1) / chip->ecc.size;
|
|
end_step = (data_offs + readlen - 1) / chip->ecc.size;
|
|
num_steps = end_step - start_step + 1;
|
|
num_steps = end_step - start_step + 1;
|
|
@@ -1175,7 +1176,7 @@ static int nand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip,
|
|
|
|
|
|
/*
|
|
/*
|
|
* The performance is faster if we position offsets according to
|
|
* The performance is faster if we position offsets according to
|
|
- * ecc.pos. Let's make sure that there are no gaps in ecc positions.
|
|
|
|
|
|
+ * ecc.pos. Let's make sure that there are no gaps in ECC positions.
|
|
*/
|
|
*/
|
|
for (i = 0; i < eccfrag_len - 1; i++) {
|
|
for (i = 0; i < eccfrag_len - 1; i++) {
|
|
if (eccpos[i + start_step * chip->ecc.bytes] + 1 !=
|
|
if (eccpos[i + start_step * chip->ecc.bytes] + 1 !=
|
|
@@ -1189,7 +1190,7 @@ static int nand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip,
|
|
chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
|
|
chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
|
|
} else {
|
|
} else {
|
|
/*
|
|
/*
|
|
- * Send the command to read the particular ecc bytes take care
|
|
|
|
|
|
+ * Send the command to read the particular ECC bytes take care
|
|
* about buswidth alignment in read_buf.
|
|
* about buswidth alignment in read_buf.
|
|
*/
|
|
*/
|
|
index = start_step * chip->ecc.bytes;
|
|
index = start_step * chip->ecc.bytes;
|
|
@@ -1224,14 +1225,13 @@ static int nand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_read_page_hwecc - [REPLACABLE] hardware ecc based page read function
|
|
|
|
|
|
+ * nand_read_page_hwecc - [REPLACEABLE] hardware ECC based page read function
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @buf: buffer to store read data
|
|
* @buf: buffer to store read data
|
|
* @page: page number to read
|
|
* @page: page number to read
|
|
*
|
|
*
|
|
- * Not for syndrome calculating ecc controllers which need a special oob
|
|
|
|
- * layout.
|
|
|
|
|
|
+ * Not for syndrome calculating ECC controllers which need a special oob layout.
|
|
*/
|
|
*/
|
|
static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
|
|
static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
|
|
uint8_t *buf, int page)
|
|
uint8_t *buf, int page)
|
|
@@ -1270,7 +1270,7 @@ static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_read_page_hwecc_oob_first - [REPLACABLE] hw ecc, read oob first
|
|
|
|
|
|
+ * nand_read_page_hwecc_oob_first - [REPLACEABLE] hw ecc, read oob first
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @buf: buffer to store read data
|
|
* @buf: buffer to store read data
|
|
@@ -1318,7 +1318,7 @@ static int nand_read_page_hwecc_oob_first(struct mtd_info *mtd,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_read_page_syndrome - [REPLACABLE] hardware ecc syndrom based page read
|
|
|
|
|
|
+ * nand_read_page_syndrome - [REPLACEABLE] hardware ECC syndrome based page read
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @buf: buffer to store read data
|
|
* @buf: buffer to store read data
|
|
@@ -1373,7 +1373,7 @@ static int nand_read_page_syndrome(struct mtd_info *mtd, struct nand_chip *chip,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_transfer_oob - [Internal] Transfer oob to client buffer
|
|
|
|
|
|
+ * nand_transfer_oob - [INTERN] Transfer oob to client buffer
|
|
* @chip: nand chip structure
|
|
* @chip: nand chip structure
|
|
* @oob: oob destination address
|
|
* @oob: oob destination address
|
|
* @ops: oob ops structure
|
|
* @ops: oob ops structure
|
|
@@ -1421,7 +1421,7 @@ static uint8_t *nand_transfer_oob(struct nand_chip *chip, uint8_t *oob,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_do_read_ops - [Internal] Read data with ECC
|
|
|
|
|
|
+ * nand_do_read_ops - [INTERN] Read data with ECC
|
|
* @mtd: MTD device structure
|
|
* @mtd: MTD device structure
|
|
* @from: offset to read from
|
|
* @from: offset to read from
|
|
* @ops: oob ops structure
|
|
* @ops: oob ops structure
|
|
@@ -1599,7 +1599,7 @@ static int nand_read(struct mtd_info *mtd, loff_t from, size_t len,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_read_oob_std - [REPLACABLE] the most common OOB data read function
|
|
|
|
|
|
+ * nand_read_oob_std - [REPLACEABLE] the most common OOB data read function
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @page: page number to read
|
|
* @page: page number to read
|
|
@@ -1617,7 +1617,7 @@ static int nand_read_oob_std(struct mtd_info *mtd, struct nand_chip *chip,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_read_oob_syndrome - [REPLACABLE] OOB data read function for HW ECC
|
|
|
|
|
|
+ * nand_read_oob_syndrome - [REPLACEABLE] OOB data read function for HW ECC
|
|
* with syndromes
|
|
* with syndromes
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
@@ -1656,7 +1656,7 @@ static int nand_read_oob_syndrome(struct mtd_info *mtd, struct nand_chip *chip,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_write_oob_std - [REPLACABLE] the most common OOB data write function
|
|
|
|
|
|
+ * nand_write_oob_std - [REPLACEABLE] the most common OOB data write function
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @page: page number to write
|
|
* @page: page number to write
|
|
@@ -1679,7 +1679,7 @@ static int nand_write_oob_std(struct mtd_info *mtd, struct nand_chip *chip,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_write_oob_syndrome - [REPLACABLE] OOB data write function for HW ECC
|
|
|
|
|
|
+ * nand_write_oob_syndrome - [REPLACEABLE] OOB data write function for HW ECC
|
|
* with syndrome - only for large page flash
|
|
* with syndrome - only for large page flash
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
@@ -1738,7 +1738,7 @@ static int nand_write_oob_syndrome(struct mtd_info *mtd,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_do_read_oob - [Intern] NAND read out-of-band
|
|
|
|
|
|
+ * nand_do_read_oob - [INTERN] NAND read out-of-band
|
|
* @mtd: MTD device structure
|
|
* @mtd: MTD device structure
|
|
* @from: offset to read from
|
|
* @from: offset to read from
|
|
* @ops: oob operations description structure
|
|
* @ops: oob operations description structure
|
|
@@ -1878,13 +1878,12 @@ out:
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_write_page_raw - [Intern] raw page write function
|
|
|
|
|
|
+ * nand_write_page_raw - [INTERN] raw page write function
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @buf: data buffer
|
|
* @buf: data buffer
|
|
*
|
|
*
|
|
- * Not for syndrome calculating ecc controllers, which use a special oob
|
|
|
|
- * layout.
|
|
|
|
|
|
+ * Not for syndrome calculating ECC controllers, which use a special oob layout.
|
|
*/
|
|
*/
|
|
static void nand_write_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
|
|
static void nand_write_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
|
|
const uint8_t *buf)
|
|
const uint8_t *buf)
|
|
@@ -1894,7 +1893,7 @@ static void nand_write_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_write_page_raw_syndrome - [Intern] raw page write function
|
|
|
|
|
|
+ * nand_write_page_raw_syndrome - [INTERN] raw page write function
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @buf: data buffer
|
|
* @buf: data buffer
|
|
@@ -1933,7 +1932,7 @@ static void nand_write_page_raw_syndrome(struct mtd_info *mtd,
|
|
chip->write_buf(mtd, oob, size);
|
|
chip->write_buf(mtd, oob, size);
|
|
}
|
|
}
|
|
/**
|
|
/**
|
|
- * nand_write_page_swecc - [REPLACABLE] software ecc based page write function
|
|
|
|
|
|
+ * nand_write_page_swecc - [REPLACEABLE] software ECC based page write function
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @buf: data buffer
|
|
* @buf: data buffer
|
|
@@ -1948,7 +1947,7 @@ static void nand_write_page_swecc(struct mtd_info *mtd, struct nand_chip *chip,
|
|
const uint8_t *p = buf;
|
|
const uint8_t *p = buf;
|
|
uint32_t *eccpos = chip->ecc.layout->eccpos;
|
|
uint32_t *eccpos = chip->ecc.layout->eccpos;
|
|
|
|
|
|
- /* Software ecc calculation */
|
|
|
|
|
|
+ /* Software ECC calculation */
|
|
for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize)
|
|
for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize)
|
|
chip->ecc.calculate(mtd, p, &ecc_calc[i]);
|
|
chip->ecc.calculate(mtd, p, &ecc_calc[i]);
|
|
|
|
|
|
@@ -1959,7 +1958,7 @@ static void nand_write_page_swecc(struct mtd_info *mtd, struct nand_chip *chip,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_write_page_hwecc - [REPLACABLE] hardware ecc based page write function
|
|
|
|
|
|
+ * nand_write_page_hwecc - [REPLACEABLE] hardware ECC based page write function
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @buf: data buffer
|
|
* @buf: data buffer
|
|
@@ -1987,7 +1986,7 @@ static void nand_write_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_write_page_syndrome - [REPLACABLE] hardware ecc syndrom based page write
|
|
|
|
|
|
+ * nand_write_page_syndrome - [REPLACEABLE] hardware ECC syndrome based page write
|
|
* @mtd: mtd info structure
|
|
* @mtd: mtd info structure
|
|
* @chip: nand chip info structure
|
|
* @chip: nand chip info structure
|
|
* @buf: data buffer
|
|
* @buf: data buffer
|
|
@@ -2052,7 +2051,7 @@ static int nand_write_page(struct mtd_info *mtd, struct nand_chip *chip,
|
|
chip->ecc.write_page(mtd, chip, buf);
|
|
chip->ecc.write_page(mtd, chip, buf);
|
|
|
|
|
|
/*
|
|
/*
|
|
- * Cached progamming disabled for now, Not sure if its worth the
|
|
|
|
|
|
+ * Cached progamming disabled for now. Not sure if it's worth the
|
|
* trouble. The speed gain is not very impressive. (2.3->2.6Mib/s).
|
|
* trouble. The speed gain is not very impressive. (2.3->2.6Mib/s).
|
|
*/
|
|
*/
|
|
cached = 0;
|
|
cached = 0;
|
|
@@ -2087,7 +2086,7 @@ static int nand_write_page(struct mtd_info *mtd, struct nand_chip *chip,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_fill_oob - [Internal] Transfer client buffer to oob
|
|
|
|
|
|
+ * nand_fill_oob - [INTERN] Transfer client buffer to oob
|
|
* @mtd: MTD device structure
|
|
* @mtd: MTD device structure
|
|
* @oob: oob data buffer
|
|
* @oob: oob data buffer
|
|
* @len: oob data write length
|
|
* @len: oob data write length
|
|
@@ -2145,7 +2144,7 @@ static uint8_t *nand_fill_oob(struct mtd_info *mtd, uint8_t *oob, size_t len,
|
|
#define NOTALIGNED(x) ((x & (chip->subpagesize - 1)) != 0)
|
|
#define NOTALIGNED(x) ((x & (chip->subpagesize - 1)) != 0)
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nand_do_write_ops - [Internal] NAND write with ECC
|
|
|
|
|
|
+ * nand_do_write_ops - [INTERN] NAND write with ECC
|
|
* @mtd: MTD device structure
|
|
* @mtd: MTD device structure
|
|
* @to: offset to write to
|
|
* @to: offset to write to
|
|
* @ops: oob operations description structure
|
|
* @ops: oob operations description structure
|
|
@@ -2454,7 +2453,7 @@ out:
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * single_erease_cmd - [GENERIC] NAND standard block erase command function
|
|
|
|
|
|
+ * single_erase_cmd - [GENERIC] NAND standard block erase command function
|
|
* @mtd: MTD device structure
|
|
* @mtd: MTD device structure
|
|
* @page: the page address of the block which will be erased
|
|
* @page: the page address of the block which will be erased
|
|
*
|
|
*
|
|
@@ -2469,7 +2468,7 @@ static void single_erase_cmd(struct mtd_info *mtd, int page)
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * multi_erease_cmd - [GENERIC] AND specific block erase command function
|
|
|
|
|
|
+ * multi_erase_cmd - [GENERIC] AND specific block erase command function
|
|
* @mtd: MTD device structure
|
|
* @mtd: MTD device structure
|
|
* @page: the page address of the block which will be erased
|
|
* @page: the page address of the block which will be erased
|
|
*
|
|
*
|
|
@@ -2500,7 +2499,7 @@ static int nand_erase(struct mtd_info *mtd, struct erase_info *instr)
|
|
|
|
|
|
#define BBT_PAGE_MASK 0xffffff3f
|
|
#define BBT_PAGE_MASK 0xffffff3f
|
|
/**
|
|
/**
|
|
- * nand_erase_nand - [Internal] erase block(s)
|
|
|
|
|
|
+ * nand_erase_nand - [INTERN] erase block(s)
|
|
* @mtd: MTD device structure
|
|
* @mtd: MTD device structure
|
|
* @instr: erase instruction
|
|
* @instr: erase instruction
|
|
* @allowbbt: allow erasing the bbt area
|
|
* @allowbbt: allow erasing the bbt area
|
|
@@ -2550,7 +2549,7 @@ int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr,
|
|
* If BBT requires refresh, set the BBT page mask to see if the BBT
|
|
* If BBT requires refresh, set the BBT page mask to see if the BBT
|
|
* should be rewritten. Otherwise the mask is set to 0xffffffff which
|
|
* should be rewritten. Otherwise the mask is set to 0xffffffff which
|
|
* can not be matched. This is also done when the bbt is actually
|
|
* can not be matched. This is also done when the bbt is actually
|
|
- * erased to avoid recusrsive updates.
|
|
|
|
|
|
+ * erased to avoid recursive updates.
|
|
*/
|
|
*/
|
|
if (chip->options & BBT_AUTO_REFRESH && !allowbbt)
|
|
if (chip->options & BBT_AUTO_REFRESH && !allowbbt)
|
|
bbt_masked_page = chip->bbt_td->pages[chipnr] & BBT_PAGE_MASK;
|
|
bbt_masked_page = chip->bbt_td->pages[chipnr] & BBT_PAGE_MASK;
|
|
@@ -2824,7 +2823,7 @@ static int nand_flash_detect_onfi(struct mtd_info *mtd, struct nand_chip *chip,
|
|
int i;
|
|
int i;
|
|
int val;
|
|
int val;
|
|
|
|
|
|
- /* Try ONFI for unknow chip or LP */
|
|
|
|
|
|
+ /* Try ONFI for unknown chip or LP */
|
|
chip->cmdfunc(mtd, NAND_CMD_READID, 0x20, -1);
|
|
chip->cmdfunc(mtd, NAND_CMD_READID, 0x20, -1);
|
|
if (chip->read_byte(mtd) != 'O' || chip->read_byte(mtd) != 'N' ||
|
|
if (chip->read_byte(mtd) != 'O' || chip->read_byte(mtd) != 'N' ||
|
|
chip->read_byte(mtd) != 'F' || chip->read_byte(mtd) != 'I')
|
|
chip->read_byte(mtd) != 'F' || chip->read_byte(mtd) != 'I')
|
|
@@ -3395,7 +3394,7 @@ int nand_scan_tail(struct mtd_info *mtd)
|
|
*/
|
|
*/
|
|
chip->ecc.steps = mtd->writesize / chip->ecc.size;
|
|
chip->ecc.steps = mtd->writesize / chip->ecc.size;
|
|
if (chip->ecc.steps * chip->ecc.size != mtd->writesize) {
|
|
if (chip->ecc.steps * chip->ecc.size != mtd->writesize) {
|
|
- printk(KERN_WARNING "Invalid ecc parameters\n");
|
|
|
|
|
|
+ printk(KERN_WARNING "Invalid ECC parameters\n");
|
|
BUG();
|
|
BUG();
|
|
}
|
|
}
|
|
chip->ecc.total = chip->ecc.steps * chip->ecc.bytes;
|
|
chip->ecc.total = chip->ecc.steps * chip->ecc.bytes;
|