[PATCH v2 3/4] mtd: nand: support Micron READ RETRY
Huang Shijie
shijie8 at gmail.com
Wed Dec 11 08:54:54 EST 2013
On Mon, Dec 09, 2013 at 12:09:12PM -0800, Brian Norris wrote:
> + * nand_set_read_retry - [INTERN] Set the READ RETRY mode
> + * @mtd: MTD device structure
> + * @retry_mode: the retry mode to use
> + *
> + * Some vendors supply a special command to shift the Vt threshold, to be used
> + * when there are too many bitflips in a page (i.e., ECC error). After setting
> + * a new threshold, the host should retry reading the page.
> + */
> +static int nand_set_read_retry(struct mtd_info *mtd, int retry_mode)
> +{
> + struct nand_chip *chip = mtd->priv;
> + uint8_t feature[ONFI_SUBFEATURE_PARAM_LEN] = {retry_mode};
> +
This can cause a DMA warning.
> + if (retry_mode >= chip->read_retries)
> + return -EINVAL;
> +
> + if (chip->onfi_params.jedec_id == NAND_MFR_MICRON)
> + return chip->onfi_set_features(mtd, chip,
> + ONFI_FEATURE_ADDR_READ_RETRY, feature);
I suggest to add a hook such as for nand_chip{}:
chip->read_retry(..)
Different nand chips fill different hook.
For Micron, fill it with micron_read_retry();
for Toshiba, fill it with a toshiab_read_retry();
For Hynix, fill it with hynix_read_retry().
I am wondar if we should add a file for the read-retry in the
drivers/mtd/nand folder.
thanks
Huang Shijie
More information about the linux-mtd
mailing list