From: Boris Brezillon <boris.brezillon@collabora.com>
To: Richard Weinberger <richard@nod.at>
Cc: bbrezillon@kernel.org, linux-kernel@vger.kernel.org,
marek.vasut@gmail.com, linux-mtd@lists.infradead.org,
miquel.raynal@bootlin.com, computersforpeace@gmail.com,
dwmw2@infradead.org
Subject: Re: [PATCH 1/2] mtd: nandsim: Embed struct nand_chip in struct nandsim
Date: Sun, 14 Apr 2019 10:44:34 +0200 [thread overview]
Message-ID: <20190414104434.148dfa50@collabora.com> (raw)
In-Reply-To: <20190413084052.15416-1-richard@nod.at>
On Sat, 13 Apr 2019 10:40:51 +0200
Richard Weinberger <richard@nod.at> wrote:
> We well need struct nand_controller soon, so more stuff need to
> be parts of struct nandsim.
> While we are here, rename "nand" to "ns" to use the same naming scheme
> everywhere in nandsim.
>
> Signed-off-by: Richard Weinberger <richard@nod.at>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
> ---
> drivers/mtd/nand/raw/nandsim.c | 49 +++++++++++++++++-----------------
> 1 file changed, 24 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/mtd/nand/raw/nandsim.c b/drivers/mtd/nand/raw/nandsim.c
> index 933d1a629c51..3d80e2d23b6e 100644
> --- a/drivers/mtd/nand/raw/nandsim.c
> +++ b/drivers/mtd/nand/raw/nandsim.c
> @@ -298,6 +298,7 @@ union ns_mem {
> * The structure which describes all the internal simulator data.
> */
> struct nandsim {
> + struct nand_chip chip;
> struct mtd_partition partitions[CONFIG_NANDSIM_MAX_PARTS];
> unsigned int nbparts;
>
> @@ -2216,7 +2217,7 @@ static const struct nand_controller_ops ns_controller_ops = {
> static int __init ns_init_module(void)
> {
> struct nand_chip *chip;
> - struct nandsim *nand;
> + struct nandsim *ns;
> int retval = -ENOMEM, i;
>
> if (bus_width != 8 && bus_width != 16) {
> @@ -2224,16 +2225,14 @@ static int __init ns_init_module(void)
> return -EINVAL;
> }
>
> - /* Allocate and initialize mtd_info, nand_chip and nandsim structures */
> - chip = kzalloc(sizeof(struct nand_chip) + sizeof(struct nandsim),
> - GFP_KERNEL);
> - if (!chip) {
> + ns = kzalloc(sizeof(struct nandsim), GFP_KERNEL);
> + if (!ns) {
> NS_ERR("unable to allocate core structures.\n");
> return -ENOMEM;
> }
> + chip = &ns->chip;
> nsmtd = nand_to_mtd(chip);
> - nand = (struct nandsim *)(chip + 1);
> - nand_set_controller_data(chip, (void *)nand);
> + nand_set_controller_data(chip, (void *)ns);
>
> /*
> * Register simulator's callbacks.
> @@ -2266,19 +2265,19 @@ static int __init ns_init_module(void)
> * the initial ID read command correctly
> */
> if (id_bytes[6] != 0xFF || id_bytes[7] != 0xFF)
> - nand->geom.idbytes = 8;
> + ns->geom.idbytes = 8;
> else if (id_bytes[4] != 0xFF || id_bytes[5] != 0xFF)
> - nand->geom.idbytes = 6;
> + ns->geom.idbytes = 6;
> else if (id_bytes[2] != 0xFF || id_bytes[3] != 0xFF)
> - nand->geom.idbytes = 4;
> + ns->geom.idbytes = 4;
> else
> - nand->geom.idbytes = 2;
> - nand->regs.status = NS_STATUS_OK(nand);
> - nand->nxstate = STATE_UNKNOWN;
> - nand->options |= OPT_PAGE512; /* temporary value */
> - memcpy(nand->ids, id_bytes, sizeof(nand->ids));
> + ns->geom.idbytes = 2;
> + ns->regs.status = NS_STATUS_OK(ns);
> + ns->nxstate = STATE_UNKNOWN;
> + ns->options |= OPT_PAGE512; /* temporary value */
> + memcpy(ns->ids, id_bytes, sizeof(ns->ids));
> if (bus_width == 16) {
> - nand->busw = 16;
> + ns->busw = 16;
> chip->options |= NAND_BUSWIDTH_16;
> }
>
> @@ -2323,27 +2322,27 @@ static int __init ns_init_module(void)
> if ((retval = nand_create_bbt(chip)) != 0)
> goto err_exit;
>
> - if ((retval = parse_badblocks(nand, nsmtd)) != 0)
> + if ((retval = parse_badblocks(ns, nsmtd)) != 0)
> goto err_exit;
>
> /* Register NAND partitions */
> - retval = mtd_device_register(nsmtd, &nand->partitions[0],
> - nand->nbparts);
> + retval = mtd_device_register(nsmtd, &ns->partitions[0],
> + ns->nbparts);
> if (retval != 0)
> goto err_exit;
>
> - if ((retval = nandsim_debugfs_create(nand)) != 0)
> + if ((retval = nandsim_debugfs_create(ns)) != 0)
> goto err_exit;
>
> return 0;
>
> err_exit:
> - free_nandsim(nand);
> + free_nandsim(ns);
> nand_release(chip);
> - for (i = 0;i < ARRAY_SIZE(nand->partitions); ++i)
> - kfree(nand->partitions[i].name);
> + for (i = 0;i < ARRAY_SIZE(ns->partitions); ++i)
> + kfree(ns->partitions[i].name);
> error:
> - kfree(chip);
> + kfree(ns);
> free_lists();
>
> return retval;
> @@ -2364,7 +2363,7 @@ static void __exit ns_cleanup_module(void)
> nand_release(chip); /* Unregister driver */
> for (i = 0;i < ARRAY_SIZE(ns->partitions); ++i)
> kfree(ns->partitions[i].name);
> - kfree(mtd_to_nand(nsmtd)); /* Free other structures */
> + kfree(ns); /* Free other structures */
> free_lists();
> }
>
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
WARNING: multiple messages have this Message-ID (diff)
From: Boris Brezillon <boris.brezillon@collabora.com>
To: Richard Weinberger <richard@nod.at>
Cc: linux-mtd@lists.infradead.org, bbrezillon@kernel.org,
linux-kernel@vger.kernel.org, marek.vasut@gmail.com,
miquel.raynal@bootlin.com, computersforpeace@gmail.com,
dwmw2@infradead.org
Subject: Re: [PATCH 1/2] mtd: nandsim: Embed struct nand_chip in struct nandsim
Date: Sun, 14 Apr 2019 10:44:34 +0200 [thread overview]
Message-ID: <20190414104434.148dfa50@collabora.com> (raw)
In-Reply-To: <20190413084052.15416-1-richard@nod.at>
On Sat, 13 Apr 2019 10:40:51 +0200
Richard Weinberger <richard@nod.at> wrote:
> We well need struct nand_controller soon, so more stuff need to
> be parts of struct nandsim.
> While we are here, rename "nand" to "ns" to use the same naming scheme
> everywhere in nandsim.
>
> Signed-off-by: Richard Weinberger <richard@nod.at>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
> ---
> drivers/mtd/nand/raw/nandsim.c | 49 +++++++++++++++++-----------------
> 1 file changed, 24 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/mtd/nand/raw/nandsim.c b/drivers/mtd/nand/raw/nandsim.c
> index 933d1a629c51..3d80e2d23b6e 100644
> --- a/drivers/mtd/nand/raw/nandsim.c
> +++ b/drivers/mtd/nand/raw/nandsim.c
> @@ -298,6 +298,7 @@ union ns_mem {
> * The structure which describes all the internal simulator data.
> */
> struct nandsim {
> + struct nand_chip chip;
> struct mtd_partition partitions[CONFIG_NANDSIM_MAX_PARTS];
> unsigned int nbparts;
>
> @@ -2216,7 +2217,7 @@ static const struct nand_controller_ops ns_controller_ops = {
> static int __init ns_init_module(void)
> {
> struct nand_chip *chip;
> - struct nandsim *nand;
> + struct nandsim *ns;
> int retval = -ENOMEM, i;
>
> if (bus_width != 8 && bus_width != 16) {
> @@ -2224,16 +2225,14 @@ static int __init ns_init_module(void)
> return -EINVAL;
> }
>
> - /* Allocate and initialize mtd_info, nand_chip and nandsim structures */
> - chip = kzalloc(sizeof(struct nand_chip) + sizeof(struct nandsim),
> - GFP_KERNEL);
> - if (!chip) {
> + ns = kzalloc(sizeof(struct nandsim), GFP_KERNEL);
> + if (!ns) {
> NS_ERR("unable to allocate core structures.\n");
> return -ENOMEM;
> }
> + chip = &ns->chip;
> nsmtd = nand_to_mtd(chip);
> - nand = (struct nandsim *)(chip + 1);
> - nand_set_controller_data(chip, (void *)nand);
> + nand_set_controller_data(chip, (void *)ns);
>
> /*
> * Register simulator's callbacks.
> @@ -2266,19 +2265,19 @@ static int __init ns_init_module(void)
> * the initial ID read command correctly
> */
> if (id_bytes[6] != 0xFF || id_bytes[7] != 0xFF)
> - nand->geom.idbytes = 8;
> + ns->geom.idbytes = 8;
> else if (id_bytes[4] != 0xFF || id_bytes[5] != 0xFF)
> - nand->geom.idbytes = 6;
> + ns->geom.idbytes = 6;
> else if (id_bytes[2] != 0xFF || id_bytes[3] != 0xFF)
> - nand->geom.idbytes = 4;
> + ns->geom.idbytes = 4;
> else
> - nand->geom.idbytes = 2;
> - nand->regs.status = NS_STATUS_OK(nand);
> - nand->nxstate = STATE_UNKNOWN;
> - nand->options |= OPT_PAGE512; /* temporary value */
> - memcpy(nand->ids, id_bytes, sizeof(nand->ids));
> + ns->geom.idbytes = 2;
> + ns->regs.status = NS_STATUS_OK(ns);
> + ns->nxstate = STATE_UNKNOWN;
> + ns->options |= OPT_PAGE512; /* temporary value */
> + memcpy(ns->ids, id_bytes, sizeof(ns->ids));
> if (bus_width == 16) {
> - nand->busw = 16;
> + ns->busw = 16;
> chip->options |= NAND_BUSWIDTH_16;
> }
>
> @@ -2323,27 +2322,27 @@ static int __init ns_init_module(void)
> if ((retval = nand_create_bbt(chip)) != 0)
> goto err_exit;
>
> - if ((retval = parse_badblocks(nand, nsmtd)) != 0)
> + if ((retval = parse_badblocks(ns, nsmtd)) != 0)
> goto err_exit;
>
> /* Register NAND partitions */
> - retval = mtd_device_register(nsmtd, &nand->partitions[0],
> - nand->nbparts);
> + retval = mtd_device_register(nsmtd, &ns->partitions[0],
> + ns->nbparts);
> if (retval != 0)
> goto err_exit;
>
> - if ((retval = nandsim_debugfs_create(nand)) != 0)
> + if ((retval = nandsim_debugfs_create(ns)) != 0)
> goto err_exit;
>
> return 0;
>
> err_exit:
> - free_nandsim(nand);
> + free_nandsim(ns);
> nand_release(chip);
> - for (i = 0;i < ARRAY_SIZE(nand->partitions); ++i)
> - kfree(nand->partitions[i].name);
> + for (i = 0;i < ARRAY_SIZE(ns->partitions); ++i)
> + kfree(ns->partitions[i].name);
> error:
> - kfree(chip);
> + kfree(ns);
> free_lists();
>
> return retval;
> @@ -2364,7 +2363,7 @@ static void __exit ns_cleanup_module(void)
> nand_release(chip); /* Unregister driver */
> for (i = 0;i < ARRAY_SIZE(ns->partitions); ++i)
> kfree(ns->partitions[i].name);
> - kfree(mtd_to_nand(nsmtd)); /* Free other structures */
> + kfree(ns); /* Free other structures */
> free_lists();
> }
>
next prev parent reply other threads:[~2019-04-14 8:44 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-13 8:40 [PATCH 1/2] mtd: nandsim: Embed struct nand_chip in struct nandsim Richard Weinberger
2019-04-13 8:40 ` Richard Weinberger
2019-04-13 8:40 ` [PATCH 2/2] mtd: nandsim: switch to exec_op interface Richard Weinberger
2019-04-13 8:40 ` Richard Weinberger
2019-04-14 8:36 ` Boris Brezillon
2019-04-14 8:36 ` Boris Brezillon
2019-04-13 8:51 ` [PATCH 1/2] mtd: nandsim: Embed struct nand_chip in struct nandsim Sergei Shtylyov
2019-04-13 8:51 ` Sergei Shtylyov
2019-04-14 8:44 ` Boris Brezillon [this message]
2019-04-14 8:44 ` 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=20190414104434.148dfa50@collabora.com \
--to=boris.brezillon@collabora.com \
--cc=bbrezillon@kernel.org \
--cc=computersforpeace@gmail.com \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=marek.vasut@gmail.com \
--cc=miquel.raynal@bootlin.com \
--cc=richard@nod.at \
/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.