From: Vikram Narayanan <vikram186@gmail.com>
To: Huang Shijie <b32955@freescale.com>
Cc: linux-mtd@lists.infradead.org, dedekind1@gmail.com
Subject: Re: [PATCH 1/2] mtd: add helpers to set/get features for ONFI nand
Date: Mon, 10 Sep 2012 21:41:22 +0530 [thread overview]
Message-ID: <504E112A.8010405@gmail.com> (raw)
In-Reply-To: <1347256871-18339-1-git-send-email-b32955@freescale.com>
Hello Huang Shijie,
<Dropped cc's>
Just a few nitpicks.
On 9/10/2012 11:31 AM, Huang Shijie wrote:
> Add the set-features(0xef)/get-features(0xee) helpers for ONFI nand.
> Also add the necessary macros.
>
> Signed-off-by: Huang Shijie<b32955@freescale.com>
> ---
> drivers/mtd/nand/nand_base.c | 50 ++++++++++++++++++++++++++++++++++++++++++
> include/linux/mtd/nand.h | 14 +++++++++++
> 2 files changed, 64 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
> index 88f671c..fbc49cc 100644
> --- a/drivers/mtd/nand/nand_base.c
> +++ b/drivers/mtd/nand/nand_base.c
> @@ -2700,6 +2700,50 @@ static int nand_block_markbad(struct mtd_info *mtd, loff_t ofs)
> }
>
> /**
> + * nand_onfi_set_features- [REPLACEABLE] set features for ONFI nand
> + * @mtd: MTD device structure
> + * @chip: nand chip info structure
> + * @feature_addr: feature address.
As the function conveys that you're setting/getting the features, may be
you can drop the prefix from the above addr. Just a thought.
> + * @subfeature_para: the subfeature parameters, a four bytes array.
subfeature_param should be more appropriate.
> + */
> +static int nand_onfi_set_features(struct mtd_info *mtd, struct nand_chip *chip,
> + int feature_addr, uint8_t *subfeature_para)
> +{
> + int status;
> +
> + if (!chip->onfi_version)
> + return -EINVAL;
> +
> + chip->cmdfunc(mtd, NAND_CMD_SET_FEATURES, feature_addr, -1);
> + chip->write_buf(mtd, subfeature_para, ONFI_SUBFEATURE_PARA_LEN);
^ PARAM_LEN here
> + status = chip->waitfunc(mtd, chip);
> + if (status& NAND_STATUS_FAIL)
> + return -EIO;
> + return 0;
> +}
> +
> +/**
> + * nand_onfi_get_features- [REPLACEABLE] get features for ONFI nand
> + * @mtd: MTD device structure
> + * @chip: nand chip info structure
> + * @feature_addr: feature address.
> + * @subfeature_para: the subfeature parameters, a four bytes array.
> + */
> +static int nand_onfi_get_features(struct mtd_info *mtd, struct nand_chip *chip,
> + int feature_addr, uint8_t *subfeature_para)
> +{
> + if (!chip->onfi_version)
> + return -EINVAL;
> +
> + /* clear the sub feature parameters */
> + memset(subfeature_para, 0, ONFI_SUBFEATURE_PARA_LEN);
> +
> + chip->cmdfunc(mtd, NAND_CMD_GET_FEATURES, feature_addr, -1);
> + chip->read_buf(mtd, subfeature_para, ONFI_SUBFEATURE_PARA_LEN);
> + return 0;
> +}
> +
> +/**
> * nand_suspend - [MTD Interface] Suspend the NAND flash
> * @mtd: MTD device structure
> */
> @@ -3223,6 +3267,12 @@ int nand_scan_tail(struct mtd_info *mtd)
> if (!chip->write_page)
> chip->write_page = nand_write_page;
>
> + /* set for ONFI nand */
> + if (!chip->onfi_set_features)
> + chip->onfi_set_features = nand_onfi_set_features;
> + if (!chip->onfi_get_features)
> + chip->onfi_get_features = nand_onfi_get_features;
> +
> /*
> * Check ECC mode, default to software if 3byte/512byte hardware ECC is
> * selected and we have 256 byte pagesize fallback to software ECC
> diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
> index 8f99d36..641794c 100644
> --- a/include/linux/mtd/nand.h
> +++ b/include/linux/mtd/nand.h
> @@ -92,6 +92,8 @@ extern int nand_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len);
> #define NAND_CMD_READID 0x90
> #define NAND_CMD_ERASE2 0xd0
> #define NAND_CMD_PARAM 0xec
> +#define NAND_CMD_GET_FEATURES 0xee
> +#define NAND_CMD_SET_FEATURES 0xef
> #define NAND_CMD_RESET 0xff
>
> #define NAND_CMD_LOCK 0x2a
> @@ -229,6 +231,12 @@ typedef enum {
> /* Keep gcc happy */
> struct nand_chip;
>
> +/* ONFI feature address */
> +#define ONFI_FEATURE_ADDR_TIMING_MODE 0x1
> +
> +/* ONFI subfeature parameters length */
> +#define ONFI_SUBFEATURE_PARA_LEN 4
PARAM_LEN
> +
> struct nand_onfi_params {
> /* rev info and features block */
> /* 'O' 'N' 'F' 'I' */
> @@ -452,6 +460,8 @@ struct nand_buffers {
> * non 0 if ONFI supported.
> * @onfi_params: [INTERN] holds the ONFI page parameter when ONFI is
> * supported, 0 otherwise.
> + * @onfi_set_features [REPLACEABLE] set the features for ONFI nand
> + * @onfi_get_features [REPLACEABLE] get the features for ONFI nand
> * @ecclayout: [REPLACEABLE] the default ECC placement scheme
> * @bbt: [INTERN] bad block table pointer
> * @bbt_td: [REPLACEABLE] bad block table descriptor for flash
> @@ -494,6 +504,10 @@ struct nand_chip {
> int (*write_page)(struct mtd_info *mtd, struct nand_chip *chip,
> const uint8_t *buf, int oob_required, int page,
> int cached, int raw);
> + int (*onfi_set_features)(struct mtd_info *mtd, struct nand_chip *chip,
> + int feature_addr, uint8_t *subfeature_para);
> + int (*onfi_get_features)(struct mtd_info *mtd, struct nand_chip *chip,
> + int feature_addr, uint8_t *subfeature_para);
>
> int chip_delay;
> unsigned int options;
Regards,
Vikram
next prev parent reply other threads:[~2012-09-10 16:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-10 6:01 [PATCH 1/2] mtd: add helpers to set/get features for ONFI nand Huang Shijie
2012-09-10 6:01 ` Huang Shijie
2012-09-10 6:01 ` [PATCH 2/2] mtd: add helpers to get the supportted ONFI timing mode Huang Shijie
2012-09-10 6:01 ` Huang Shijie
2012-09-10 16:11 ` Vikram Narayanan [this message]
2012-09-11 1:59 ` [PATCH 1/2] mtd: add helpers to set/get features for ONFI nand Huang Shijie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=504E112A.8010405@gmail.com \
--to=vikram186@gmail.com \
--cc=b32955@freescale.com \
--cc=dedekind1@gmail.com \
--cc=linux-mtd@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.