From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Marek Vasut <marek.vasut@gmail.com>
Cc: Richard Weinberger <richard@nod.at>,
linux-mtd@lists.infradead.org,
David Woodhouse <dwmw2@infradead.org>,
Brian Norris <computersforpeace@gmail.com>,
Cyrille Pitchen <cyrille.pitchen@atmel.com>,
Icenowy Zheng <icenowy@aosc.xyz>,
Valdis.Kletnieks@vt.edu, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 07/15] mtd: nand: move Samsung specific init/detection logic in nand_samsung.c
Date: Sat, 7 Jan 2017 08:49:48 +0100 [thread overview]
Message-ID: <20170107084948.1d5d699c@bbrezillon> (raw)
In-Reply-To: <4982cf88-ff7e-20c9-a158-e1e3826c0762@gmail.com>
On Sat, 7 Jan 2017 00:53:24 +0100
Marek Vasut <marek.vasut@gmail.com> wrote:
> On 01/04/2017 06:08 PM, Boris Brezillon wrote:
> > On Wed, 4 Jan 2017 16:14:07 +0100
> > Marek Vasut <marek.vasut@gmail.com> wrote:
> >
> >> On 01/03/2017 02:01 PM, Boris Brezillon wrote:
> >>> Move Samsung specific initialization and detection logic into
> >>> nand_samsung.c. This is part of the "separate vendor specific code from
> >>> core" cleanup process.
> >>>
> >>> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> >>
> >> [...]
> >>
> >>> diff --git a/drivers/mtd/nand/nand_ids.c b/drivers/mtd/nand/nand_ids.c
> >>> index b3a332f37e14..05e9366696c9 100644
> >>> --- a/drivers/mtd/nand/nand_ids.c
> >>> +++ b/drivers/mtd/nand/nand_ids.c
> >>> @@ -10,7 +10,7 @@
> >>> #include <linux/mtd/nand.h>
> >>> #include <linux/sizes.h>
> >>>
> >>> -#define LP_OPTIONS NAND_SAMSUNG_LP_OPTIONS
> >>> +#define LP_OPTIONS 0
> >>> #define LP_OPTIONS16 (LP_OPTIONS | NAND_BUSWIDTH_16)
> >>>
> >>> #define SP_OPTIONS NAND_NEED_READRDY
> >>> @@ -169,10 +169,12 @@ struct nand_flash_dev nand_flash_ids[] = {
> >>> };
> >>>
> >>> /* Manufacturer IDs */
> >>> +extern const struct nand_manufacturer_ops samsung_nand_manuf_ops;
> >>
> >> Is the extern needed ?
> >
> > Yes, unless you have another solution. If you remove the extern keyword
> > you just redeclare samsung_nand_manuf_ops here, which is not what we
> > want.
>
> Maybe some accessor function can help ?
>
You mean, in nand_ids.c
const struct nand_manufacturer_ops *get_samsung_nand_mafuf_ops();
struct nand_manufacturers nand_manuf_ids[] = {
...
{NAND_MFR_SAMSUNG, "Samsung", get_samsung_nand_mafuf_ops},
...
};
and then, in nand_samsung.c
const struct nand_manufacturer_ops *get_samsung_nand_mafuf_ops()
{
return &samsung_nand_mafuf_ops;
}
What's the point of this extra indirection? I mean, in both cases you
use a symbol that is not part of the same source file, so you'll have
to define this symbol (using a function prototype or an extern object
definition).
Is this all about fixing checkpatch warnings, or do you have a problem
with objects shared between different source files?
Now, I agree that the current approach is not ideal. A real improvement
would be to let the NAND manufacturer drivers (nand_<vendor>.c) register
themselves to the core. Something similar to CLK_OF_DECLARE() or
IRQCHIP_DECLARE() for example. But that means creating a dedicated
section for the nand_manufs_id table, and it's a lot more invasive than
the current approach.
next prev parent reply other threads:[~2017-01-07 7:50 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-03 13:01 [PATCH v4 00/15] mtd: nand: allow vendor specific detection/initialization Boris Brezillon
2017-01-03 13:01 ` [PATCH v4 01/15] mtd: nand: get rid of the mtd parameter in all auto-detection functions Boris Brezillon
2017-01-04 14:53 ` Marek Vasut
2017-01-03 13:01 ` [PATCH v4 02/15] mtd: nand: store nand ID in struct nand_chip Boris Brezillon
2017-01-04 14:57 ` Marek Vasut
2017-01-03 13:01 ` [PATCH v4 03/15] mtd: nand: get rid of busw parameter Boris Brezillon
2017-01-04 14:59 ` Marek Vasut
2017-01-03 13:01 ` [PATCH v4 04/15] mtd: nand: rename nand_get_flash_type() into nand_detect() Boris Brezillon
2017-01-04 15:01 ` Marek Vasut
2017-01-04 17:03 ` Boris Brezillon
2017-01-03 13:01 ` [PATCH v4 05/15] mtd: nand: add manufacturer specific initialization/detection steps Boris Brezillon
2017-01-04 15:07 ` Marek Vasut
2017-05-01 21:02 ` Brian Norris
2017-05-02 9:04 ` Boris Brezillon
2017-01-03 13:01 ` [PATCH v4 06/15] mtd: nand: kill the MTD_NAND_IDS Kconfig option Boris Brezillon
2017-01-04 15:10 ` Marek Vasut
2017-01-03 13:01 ` [PATCH v4 07/15] mtd: nand: move Samsung specific init/detection logic in nand_samsung.c Boris Brezillon
2017-01-04 15:14 ` Marek Vasut
2017-01-04 17:08 ` Boris Brezillon
2017-01-06 23:53 ` Marek Vasut
2017-01-07 7:49 ` Boris Brezillon [this message]
2017-01-10 19:00 ` Marek Vasut
2017-01-11 7:57 ` Boris Brezillon
2017-01-11 13:02 ` Marek Vasut
2017-01-03 13:01 ` [PATCH v4 08/15] mtd: nand: move Hynix specific init/detection logic in nand_hynix.c Boris Brezillon
2017-01-03 13:01 ` [PATCH v4 09/15] mtd: nand: move Toshiba specific init/detection logic in nand_toshiba.c Boris Brezillon
2017-01-03 13:01 ` [PATCH v4 10/15] mtd: nand: move Micron specific init logic in nand_micron.c Boris Brezillon
2017-01-04 15:15 ` Marek Vasut
2017-01-04 17:13 ` Boris Brezillon
2017-01-04 17:22 ` Marek Vasut
2017-01-04 17:58 ` Boris Brezillon
2017-01-04 21:20 ` Marek Vasut
2017-01-03 13:01 ` [PATCH v4 11/15] mtd: nand: move AMD/Spansion specific init/detection logic in nand_amd.c Boris Brezillon
2017-01-03 13:01 ` [PATCH v4 12/15] mtd: nand: move Macronix specific initialization in nand_macronix.c Boris Brezillon
2017-01-03 13:01 ` [PATCH v4 13/15] mtd: nand: samsung: retrieve ECC requirements from extended ID Boris Brezillon
2017-01-03 13:01 ` [PATCH v4 14/15] mtd: nand: hynix: rework NAND ID decoding to extract more information Boris Brezillon
2017-01-03 13:17 ` Icenowy Zheng
2017-01-03 13:32 ` Boris Brezillon
2017-01-03 13:01 ` [PATCH v4 15/15] mtd: nand: hynix: add read-retry support for 1x nm MLC NANDs 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=20170107084948.1d5d699c@bbrezillon \
--to=boris.brezillon@free-electrons.com \
--cc=Valdis.Kletnieks@vt.edu \
--cc=computersforpeace@gmail.com \
--cc=cyrille.pitchen@atmel.com \
--cc=dwmw2@infradead.org \
--cc=icenowy@aosc.xyz \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=marek.vasut@gmail.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.