Re: [PATCH v4 10/15] mtd: nand: move Micron specific init logic in nand_micron.c

From: Boris Brezillon
Date: Wed Jan 04 2017 - 13:11:38 EST


On Wed, 4 Jan 2017 18:22:31 +0100
Marek Vasut <marek.vasut@xxxxxxxxx> wrote:

> On 01/04/2017 06:13 PM, Boris Brezillon wrote:
> > On Wed, 4 Jan 2017 16:15:46 +0100
> > Marek Vasut <marek.vasut@xxxxxxxxx> wrote:
> >
> >> On 01/03/2017 02:01 PM, Boris Brezillon wrote:
> >>> Move Micron specific initialization logic into nand_micron.c. This is
> >>> part of the "separate vendor specific code from core" cleanup process.
> >>>
> >>> Signed-off-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxxxxxxx>
> >>
> >> [...]
> >>
> >>> diff --git a/drivers/mtd/nand/nand_micron.c b/drivers/mtd/nand/nand_micron.c
> >>> new file mode 100644
> >>> index 000000000000..ddb9adf12c21
> >>> --- /dev/null
> >>> +++ b/drivers/mtd/nand/nand_micron.c
> >>> @@ -0,0 +1,83 @@
> >>> +/*
> >>> + * Copyright (C) 2013 Boris Brezillon <boris.brezillon@xxxxxxxxxxxxxxxxxx>
> >>
> >> 2013-2017 ?
> >
> > 2017, indeed.
> >
> >>
> >>> + * This program is free software; you can redistribute it and/or modify
> >>> + * it under the terms of the GNU General Public License as published by
> >>> + * the Free Software Foundation; either version 2 of the License, or
> >>> + * (at your option) any later version.
> >>> + *
> >>> + * This program is distributed in the hope that it will be useful,
> >>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> >>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> >>> + * GNU General Public License for more details.
> >>> + */
> >>> +
> >>> +#include <linux/mtd/nand.h>
> >>> +
> >>> +struct nand_onfi_vendor_micron {
> >>> + u8 two_plane_read;
> >>> + u8 read_cache;
> >>> + u8 read_unique_id;
> >>> + u8 dq_imped;
> >>> + u8 dq_imped_num_settings;
> >>> + u8 dq_imped_feat_addr;
> >>> + u8 rb_pulldown_strength;
> >>> + u8 rb_pulldown_strength_feat_addr;
> >>> + u8 rb_pulldown_strength_num_settings;
> >>> + u8 otp_mode;
> >>> + u8 otp_page_start;
> >>> + u8 otp_data_prot_addr;
> >>> + u8 otp_num_pages;
> >>> + u8 otp_feat_addr;
> >>> + u8 read_retry_options;
> >>> + u8 reserved[72];
> >>> + u8 param_revision;
> >>> +} __packed;
> >>
> >> Is this __packed really needed?
> >>
> >
> > I'm just copying an existing structure. And yes, it's probably unneeded
> > since all fields are u8, and the struct size in a multiple of 8 bytes,
> > but it shouldn't hurt either.
> >
> Could you send a patch to drop it, please ? :)
>

Is there a strong reason to drop this attribute? All ONFI related
structs are using it to make sure the layout is not changed by the
compiler, and be able to cast a buffer container the ONFI param page
content to one of the nand_onfi_xxx struct.

Yes, this is currently not needed (at least for this struct), but I'd
prefer to keep nand_onfi_xxx definitions consistent if you don't mind,
unless you see a good reason to avoid using this __packed attribute.