From: Stefan Agner <stefan-XLVq0VzYD2Y@public.gmane.org>
To: Boris Brezillon
<boris.brezillon-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
Cc: Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>,
Alexandre Belloni
<alexandre.belloni-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>,
Rich Felker <dalias-8zAoT0mYgF4@public.gmane.org>,
linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>,
linux-mips-6z/3iImG2C8G8FEW9MqTrA@public.gmane.org,
Masahiro Yamada
<yamada.masahiro-uWyLwvC0a2jby3iVrkZq2A@public.gmane.org>,
Mans Rullgard <mans-2StjZFpD7GcAvxtiuMwx3w@public.gmane.org>,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
Miquel Raynal
<miquel.raynal-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>,
Robert Jarzmik <robert.jarzmik-GANU6spQydw@public.gmane.org>,
Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>,
devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b@public.gmane.org,
Maxime Ripard
<maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>,
Maxim Levitsky
<maximlevitsky-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Yoshinori Sato
<ysato-Rn4VEauK+AKRv+LV9MX5uooqe+aC9MnS@public.gmane.org>,
Aaro Koskinen <aaro.koskinen-X3B1VOXEql0@public.gmane.org>,
Richard Weinberger <richard-/L3Ra7n9ekc@public.gmane.org>,
Gregory Clement
<gregory.clement-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>,
linux-sh-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Lukasz Majewski <lukma-ynQEQJNshbs@public.gmane.org>,
Neil Armstrong
<narmstrong-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>,
Marek Vasut <marek.vasut-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
Subject: Re: [PATCH 08/23] mtd: rawnand: Pass a nand_chip object to ecc->read_xxx() hooks
Date: Sat, 18 Aug 2018 10:30:13 +0200 [thread overview]
Message-ID: <c08c6ecf720cc6b242094246b2f296c3@agner.ch> (raw)
In-Reply-To: <20180817160922.6224-9-boris.brezillon-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
Hi Boris,
On 17.08.2018 18:09, Boris Brezillon wrote:
> Let's make the raw NAND API consistent by patching all helpers and
> hooks to take a nand_chip object instead of an mtd_info one or
> remove the mtd_info object when both are passed.
>
> Let's tackle all ecc->read_xxx() hooks at once.
>
> Signed-off-by: Boris Brezillon <boris.brezillon-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
> ---
> drivers/mtd/nand/raw/atmel/nand-controller.c | 12 ++---
> drivers/mtd/nand/raw/brcmnand/brcmnand.c | 21 ++++----
> drivers/mtd/nand/raw/cafe_nand.c | 10 ++--
> drivers/mtd/nand/raw/denali.c | 17 +++---
> drivers/mtd/nand/raw/docg4.c | 20 ++++----
> drivers/mtd/nand/raw/fsl_elbc_nand.c | 5 +-
> drivers/mtd/nand/raw/fsl_ifc_nand.c | 5 +-
> drivers/mtd/nand/raw/fsmc_nand.c | 6 +--
> drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 23 ++++-----
> drivers/mtd/nand/raw/hisi504_nand.c | 9 ++--
> drivers/mtd/nand/raw/lpc32xx_mlc.c | 10 ++--
> drivers/mtd/nand/raw/lpc32xx_slc.c | 14 ++---
> drivers/mtd/nand/raw/marvell_nand.c | 30 +++++------
> drivers/mtd/nand/raw/mtk_nand.c | 23 +++++----
> drivers/mtd/nand/raw/mxc_nand.c | 11 ++--
> drivers/mtd/nand/raw/nand_base.c | 74 +++++++++++++--------------
> drivers/mtd/nand/raw/nand_micron.c | 6 +--
> drivers/mtd/nand/raw/omap2.c | 6 +--
> drivers/mtd/nand/raw/qcom_nandc.c | 11 ++--
> drivers/mtd/nand/raw/r852.c | 5 +-
> drivers/mtd/nand/raw/sh_flctl.c | 6 ++-
> drivers/mtd/nand/raw/sunxi_nand.c | 26 +++++-----
> drivers/mtd/nand/raw/tango_nand.c | 16 +++---
> drivers/mtd/nand/raw/tegra_nand.c | 15 +++---
> drivers/mtd/nand/raw/vf610_nfc.c | 18 +++----
> drivers/staging/mt29f_spinand/mt29f_spinand.c | 5 +-
> include/linux/mtd/rawnand.h | 30 +++++------
> 27 files changed, 216 insertions(+), 218 deletions(-)
>
[...]
> diff --git a/drivers/mtd/nand/raw/tegra_nand.c
> b/drivers/mtd/nand/raw/tegra_nand.c
> index 5dcee20e2a8c..bcc3a2888c4f 100644
> --- a/drivers/mtd/nand/raw/tegra_nand.c
> +++ b/drivers/mtd/nand/raw/tegra_nand.c
> @@ -615,10 +615,10 @@ static int tegra_nand_page_xfer(struct mtd_info
> *mtd, struct nand_chip *chip,
> return ret;
> }
>
> -static int tegra_nand_read_page_raw(struct mtd_info *mtd,
> - struct nand_chip *chip, u8 *buf,
> +static int tegra_nand_read_page_raw(struct nand_chip *chip, u8 *buf,
> int oob_required, int page)
> {
> + struct mtd_info *mtd = nand_to_mtd(chip);
> void *oob_buf = oob_required ? chip->oob_poi : NULL;
>
> return tegra_nand_page_xfer(mtd, chip, buf, oob_buf,
Since mtd is only required to pass it to tegra_nand_page_xfer, it would
be better to change tegra_nand_page_xfer to only take chip.
--
Stefan
> @@ -635,9 +635,10 @@ static int tegra_nand_write_page_raw(struct mtd_info *mtd,
> mtd->oobsize, page, false);
> }
>
> -static int tegra_nand_read_oob(struct mtd_info *mtd, struct nand_chip *chip,
> - int page)
> +static int tegra_nand_read_oob(struct nand_chip *chip, int page)
> {
> + struct mtd_info *mtd = nand_to_mtd(chip);
> +
> return tegra_nand_page_xfer(mtd, chip, NULL, chip->oob_poi,
> mtd->oobsize, page, true);
> }
> @@ -649,10 +650,10 @@ static int tegra_nand_write_oob(struct mtd_info
> *mtd, struct nand_chip *chip,
> mtd->oobsize, page, false);
> }
>
> -static int tegra_nand_read_page_hwecc(struct mtd_info *mtd,
> - struct nand_chip *chip, u8 *buf,
> +static int tegra_nand_read_page_hwecc(struct nand_chip *chip, u8 *buf,
> int oob_required, int page)
> {
> + struct mtd_info *mtd = nand_to_mtd(chip);
> struct tegra_nand_controller *ctrl = to_tegra_ctrl(chip->controller);
> struct tegra_nand_chip *nand = to_tegra_chip(chip);
> void *oob_buf = oob_required ? chip->oob_poi : NULL;
> @@ -716,7 +717,7 @@ static int tegra_nand_read_page_hwecc(struct mtd_info *mtd,
> * erased or if error correction just failed for all sub-
> * pages.
> */
> - ret = tegra_nand_read_oob(mtd, chip, page);
> + ret = tegra_nand_read_oob(chip, page);
> if (ret < 0)
> return ret;
>
> diff --git a/drivers/mtd/nand/raw/vf610_nfc.c b/drivers/mtd/nand/raw/vf610_nfc.c
> index a73213c835a5..7cbcc41cea95 100644
> --- a/drivers/mtd/nand/raw/vf610_nfc.c
> +++ b/drivers/mtd/nand/raw/vf610_nfc.c
> @@ -557,9 +557,10 @@ static void vf610_nfc_fill_row(struct nand_chip
> *chip, int page, u32 *code,
> }
> }
>
> -static int vf610_nfc_read_page(struct mtd_info *mtd, struct nand_chip *chip,
> - uint8_t *buf, int oob_required, int page)
> +static int vf610_nfc_read_page(struct nand_chip *chip, uint8_t *buf,
> + int oob_required, int page)
> {
> + struct mtd_info *mtd = nand_to_mtd(chip);
> struct vf610_nfc *nfc = mtd_to_nfc(mtd);
> int trfr_sz = mtd->writesize + mtd->oobsize;
> u32 row = 0, cmd1 = 0, cmd2 = 0, code = 0;
> @@ -643,15 +644,15 @@ static int vf610_nfc_write_page(struct mtd_info
> *mtd, struct nand_chip *chip,
> return 0;
> }
>
> -static int vf610_nfc_read_page_raw(struct mtd_info *mtd,
> - struct nand_chip *chip, u8 *buf,
> +static int vf610_nfc_read_page_raw(struct nand_chip *chip, u8 *buf,
> int oob_required, int page)
> {
> + struct mtd_info *mtd = nand_to_mtd(chip);
> struct vf610_nfc *nfc = mtd_to_nfc(mtd);
> int ret;
>
> nfc->data_access = true;
> - ret = nand_read_page_raw(mtd, chip, buf, oob_required, page);
> + ret = nand_read_page_raw(chip, buf, oob_required, page);
> nfc->data_access = false;
>
> return ret;
> @@ -677,14 +678,13 @@ static int vf610_nfc_write_page_raw(struct mtd_info *mtd,
> return nand_prog_page_end_op(chip);
> }
>
> -static int vf610_nfc_read_oob(struct mtd_info *mtd, struct nand_chip *chip,
> - int page)
> +static int vf610_nfc_read_oob(struct nand_chip *chip, int page)
> {
> - struct vf610_nfc *nfc = mtd_to_nfc(mtd);
> + struct vf610_nfc *nfc = mtd_to_nfc(nand_to_mtd(chip));
> int ret;
>
> nfc->data_access = true;
> - ret = nand_read_oob_std(mtd, chip, page);
> + ret = nand_read_oob_std(chip, page);
> nfc->data_access = false;
>
> return ret;
> diff --git a/drivers/staging/mt29f_spinand/mt29f_spinand.c
> b/drivers/staging/mt29f_spinand/mt29f_spinand.c
> index b50788b2d1d9..0776d38d4498 100644
> --- a/drivers/staging/mt29f_spinand/mt29f_spinand.c
> +++ b/drivers/staging/mt29f_spinand/mt29f_spinand.c
> @@ -643,14 +643,15 @@ static int spinand_write_page_hwecc(struct mtd_info *mtd,
> return nand_prog_page_op(chip, page, 0, p, eccsize * eccsteps);
> }
>
> -static int spinand_read_page_hwecc(struct mtd_info *mtd, struct
> nand_chip *chip,
> - u8 *buf, int oob_required, int page)
> +static int spinand_read_page_hwecc(struct nand_chip *chip, u8 *buf,
> + int oob_required, int page)
> {
> int retval;
> u8 status;
> u8 *p = buf;
> int eccsize = chip->ecc.size;
> int eccsteps = chip->ecc.steps;
> + struct mtd_info *mtd = nand_to_mtd(chip);
> struct spinand_info *info = nand_get_controller_data(chip);
>
> enable_read_hw_ecc = 1;
> diff --git a/include/linux/mtd/rawnand.h b/include/linux/mtd/rawnand.h
> index 24434310d126..a5f4a585f749 100644
> --- a/include/linux/mtd/rawnand.h
> +++ b/include/linux/mtd/rawnand.h
> @@ -652,14 +652,14 @@ struct nand_ecc_ctrl {
> uint8_t *ecc_code);
> int (*correct)(struct nand_chip *chip, uint8_t *dat, uint8_t *read_ecc,
> uint8_t *calc_ecc);
> - int (*read_page_raw)(struct mtd_info *mtd, struct nand_chip *chip,
> - uint8_t *buf, int oob_required, int page);
> + int (*read_page_raw)(struct nand_chip *chip, uint8_t *buf,
> + int oob_required, int page);
> int (*write_page_raw)(struct mtd_info *mtd, struct nand_chip *chip,
> const uint8_t *buf, int oob_required, int page);
> - int (*read_page)(struct mtd_info *mtd, struct nand_chip *chip,
> - uint8_t *buf, int oob_required, int page);
> - int (*read_subpage)(struct mtd_info *mtd, struct nand_chip *chip,
> - uint32_t offs, uint32_t len, uint8_t *buf, int page);
> + int (*read_page)(struct nand_chip *chip, uint8_t *buf,
> + int oob_required, int page);
> + int (*read_subpage)(struct nand_chip *chip, uint32_t offs,
> + uint32_t len, uint8_t *buf, int page);
> int (*write_subpage)(struct mtd_info *mtd, struct nand_chip *chip,
> uint32_t offset, uint32_t data_len,
> const uint8_t *data_buf, int oob_required, int page);
> @@ -667,9 +667,8 @@ struct nand_ecc_ctrl {
> const uint8_t *buf, int oob_required, int page);
> int (*write_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip,
> int page);
> - int (*read_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip,
> - int page);
> - int (*read_oob)(struct mtd_info *mtd, struct nand_chip *chip, int page);
> + int (*read_oob_raw)(struct nand_chip *chip, int page);
> + int (*read_oob)(struct nand_chip *chip, int page);
> int (*write_oob)(struct mtd_info *mtd, struct nand_chip *chip,
> int page);
> };
> @@ -1676,11 +1675,10 @@ int nand_write_oob_syndrome(struct mtd_info
> *mtd, struct nand_chip *chip,
> int page);
>
> /* Default read_oob implementation */
> -int nand_read_oob_std(struct mtd_info *mtd, 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 mtd_info *mtd, struct nand_chip *chip,
> - int page);
> +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);
> @@ -1690,10 +1688,10 @@ int nand_get_set_features_notsupp(struct
> mtd_info *mtd, struct nand_chip *chip,
> int addr, u8 *subfeature_param);
>
> /* Default read_page_raw implementation */
> -int nand_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
> - uint8_t *buf, int oob_required, int page);
> -int nand_read_page_raw_notsupp(struct mtd_info *mtd, struct nand_chip *chip,
> - u8 *buf, int oob_required, int page);
> +int nand_read_page_raw(struct nand_chip *chip, uint8_t *buf, int oob_required,
> + int page);
> +int nand_read_page_raw_notsupp(struct nand_chip *chip, u8 *buf,
> + int oob_required, int page);
>
> /* Default write_page_raw implementation */
> int nand_write_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
next prev parent reply other threads:[~2018-08-18 8:30 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-17 16:08 [PATCH 00/23] mtd: rawnand: Stop passing mtd_info to drivers Boris Brezillon
2018-08-17 16:09 ` [PATCH 01/23] mtd: rawnand: plat_nand: Pass a nand_chip object to all platform_nand_ctrl hooks Boris Brezillon
2018-08-19 10:13 ` Alexander Sverdlin
[not found] ` <20180817160922.6224-2-boris.brezillon-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-08-22 19:14 ` Robert Jarzmik
2018-08-22 19:24 ` Boris Brezillon
2018-08-17 16:09 ` [PATCH 02/23] mtd: rawnand: Pass a nand_chip object to nand_scan() & co Boris Brezillon
2018-08-17 16:09 ` [PATCH 03/23] mtd: rawnand: Pass a nand_chip object to nand_release() Boris Brezillon
2018-08-17 16:09 ` [PATCH 04/23] mtd: rawnand: Pass a nand_chip object to nand_wait_ready() Boris Brezillon
2018-08-17 16:09 ` [PATCH 05/23] mtd: rawnand: Pass a nand_chip object to ecc->hwctl() Boris Brezillon
2018-08-17 16:09 ` [PATCH 06/23] mtd: rawnand: Pass a nand_chip object to ecc->calculate() Boris Brezillon
2018-08-17 16:09 ` [PATCH 07/23] mtd: rawnand: Pass a nand_chip object to ecc->correct() Boris Brezillon
2018-08-17 16:09 ` [PATCH 08/23] mtd: rawnand: Pass a nand_chip object to ecc->read_xxx() hooks Boris Brezillon
[not found] ` <20180817160922.6224-9-boris.brezillon-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-08-18 8:30 ` Stefan Agner [this message]
2018-08-19 11:26 ` Boris Brezillon
2018-08-20 7:57 ` Stefan Agner
[not found] ` <f75fc1c2e3c70cdb6c2f9ca2dbba3f2f-XLVq0VzYD2Y@public.gmane.org>
2018-08-20 8:09 ` Boris Brezillon
2018-08-20 8:57 ` Stefan Agner
2018-08-17 16:09 ` [PATCH 09/23] mtd: rawnand: Pass a nand_chip object to ecc->write_xxx() hooks Boris Brezillon
2018-08-17 16:09 ` [PATCH 10/23] mtd: rawnand: Pass a nand_chip object to chip->read_xxx() hooks Boris Brezillon
2018-08-17 16:09 ` [PATCH 11/23] mtd: rawnand: Pass a nand_chip object to chip->write_xxx() hooks Boris Brezillon
2018-08-17 16:09 ` [PATCH 12/23] mtd: rawnand: Pass a nand_chip object to chip->select_chip() Boris Brezillon
2018-08-17 16:09 ` [PATCH 13/23] mtd: rawnand: Pass a nand_chip object to chip->block_xxx() hooks Boris Brezillon
2018-08-17 16:09 ` [PATCH 14/23] mtd: rawnand: Pass a nand_chip object to chip->cmd_ctrl() Boris Brezillon
2018-08-17 16:09 ` [PATCH 15/23] mtd: rawnand: Pass a nand_chip object to chip->dev_ready() Boris Brezillon
2018-08-17 16:09 ` [PATCH 16/23] mtd: rawnand: Pass a nand_chip object to chip->cmdfunc() Boris Brezillon
2018-08-17 16:09 ` [PATCH 17/23] mtd: rawnand: Pass a nand_chip object to chip->waitfunc() Boris Brezillon
2018-08-17 16:09 ` [PATCH 18/23] mtd: rawnand: Pass a nand_chip object to chip->erase() Boris Brezillon
2018-08-17 16:09 ` [PATCH 19/23] mtd: rawnand: Pass a nand_chip object to chip->{get, set}_features() Boris Brezillon
2018-08-17 16:09 ` [PATCH 20/23] mtd: rawnand: Pass a nand_chip object to chip->setup_read_retry() Boris Brezillon
2018-08-17 16:09 ` [PATCH 21/23] mtd: rawnand: Pass a nand_chip object to chip->setup_data_interface() Boris Brezillon
2018-08-17 16:09 ` [PATCH 22/23] mtd: rawnand: Pass a nand_chip object to all nand_xxx_bbt() helpers Boris Brezillon
2018-08-17 16:09 ` [PATCH 23/23] mtd: rawnand: Pass a nand_chip object nand_erase_nand() Boris Brezillon
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=c08c6ecf720cc6b242094246b2f296c3@agner.ch \
--to=stefan-xlvq0vzyd2y@public.gmane.org \
--cc=aaro.koskinen-X3B1VOXEql0@public.gmane.org \
--cc=alexandre.belloni-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org \
--cc=andrew-g2DYL2Zd6BY@public.gmane.org \
--cc=boris.brezillon-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org \
--cc=dalias-8zAoT0mYgF4@public.gmane.org \
--cc=devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b@public.gmane.org \
--cc=gregory.clement-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org \
--cc=jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org \
--cc=linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-mips-6z/3iImG2C8G8FEW9MqTrA@public.gmane.org \
--cc=linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-sh-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=lukma-ynQEQJNshbs@public.gmane.org \
--cc=mans-2StjZFpD7GcAvxtiuMwx3w@public.gmane.org \
--cc=marek.vasut-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org \
--cc=maximlevitsky-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=miquel.raynal-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org \
--cc=narmstrong-rdvid1DuHRBWk0Htik3J/w@public.gmane.org \
--cc=richard-/L3Ra7n9ekc@public.gmane.org \
--cc=robert.jarzmik-GANU6spQydw@public.gmane.org \
--cc=tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org \
--cc=wens-jdAy2FN1RRM@public.gmane.org \
--cc=yamada.masahiro-uWyLwvC0a2jby3iVrkZq2A@public.gmane.org \
--cc=ysato-Rn4VEauK+AKRv+LV9MX5uooqe+aC9MnS@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox