All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masahiro Yamada <yamada.masahiro@socionext.com>
To: Boris Brezillon <boris.brezillon@free-electrons.com>
Cc: linux-mtd@lists.infradead.org, Enrico Jorns <ejo@pengutronix.de>,
	Artem Bityutskiy <artem.bityutskiy@linux.intel.com>,
	Dinh Nguyen <dinguyen@kernel.org>,
	Marek Vasut <marek.vasut@gmail.com>,
	Graham Moore <grmoore@opensource.altera.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Chuanxiao Dong <chuanxiao.dong@intel.com>,
	Jassi Brar <jaswinder.singh@linaro.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Brian Norris <computersforpeace@gmail.com>,
	Richard Weinberger <richard@nod.at>,
	Cyrille Pitchen <cyrille.pitchen@atmel.com>
Subject: Re: [PATCH v3 26/37] mtd: nand: denali: fix bank reset function
Date: Mon, 3 Apr 2017 16:05:40 +0900	[thread overview]
Message-ID: <CAK7LNARSwcEdC=jm2z2WzoG0au48OgUVYDZqZ6r+wtydq5UYug@mail.gmail.com> (raw)
In-Reply-To: <20170330181623.5b595827@bbrezillon>

Hi Boris,


2017-03-31 1:16 GMT+09:00 Boris Brezillon <boris.brezillon@free-electrons.com>:
> On Thu, 30 Mar 2017 15:46:12 +0900
> Masahiro Yamada <yamada.masahiro@socionext.com> wrote:
>
>> The function denali_nand_reset() is called during the driver probe,
>> and polls the INTR__RST_COMP and INTR__TIME_OUT bits.  However,
>> INTR__RST_COMP is set anyway even if no NAND device is connected to
>> that bank.
>>
>> This can be a problem for ONFi devices.  The nand_scan_ident()
>> iterates over maxchips, and calls nand_reset() for each chip.
>
> Actually, maxchips is a bad name. What should be passed in argument to
> nand_scan_ident() is not the maximum number of CS-line the controller
> has, it's the expected number of CS-lines provided by a chip.
>
> If you're using DT, this information should be retrieved from the DT. If
> you look at this binding doc [1] you'll see that each NAND chip has a
> reg property encoding the CS line. When a chip exposes more than one
> CS-line, the reg property should contain 2 entries describing which
> controller-side CS lines are connected to the chip CS-lines.


Actually, the Denali driver is much older than
commit 2d472aba15ff169 ("mtd: nand: document the NAND
controller/NAND chip DT representation").

So, I guess it is allowed to use the old binding,
then you were kind to merge my

commit 63757d463ea683b469c1976032054d46cecdef09
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Thu Mar 23 05:07:18 2017 +0900

    mtd: nand: denali: call nand_set_flash_node() to set DT node




Having said that, I have to admit the current implementation
(not my fault) is not nice in a long run.

In order to switch to the new binding,
I have to de-couple the controller and chips
(like you did for sunxi_nand)

I am taking a close look for how much efforts are needed
(because I am guessing you will recommend me to do this work  :-)  )





> For non-DT cases, this should be exposed by some other means (for
> example pdata, but I'm not sure it works well with PCI where everything
> is discoverable).
>
> So normally, you shouldn't have a timeout, or something is wrong with
> the DT/board description.
>
> Note that you might have different NAND models connected to the same
> NAND controller. If you call nand_scan_ident() only once and pass
> controllers->max_cs_lines to it, you will only have one chip detected,
> which is not what you expect.


The Denali IP actually supports multiple chip selects,
but has only a single set of parameter registers.

For example,
DEVICE_MAIN_AREA_SIZE must match to a chip's mtd->writesize.

If denali_select_chip() updates all parameter registers every time,
it would be theoretically possible to use different models.

(And, looks like sunxi_select_chip does this.)





-- 
Best Regards
Masahiro Yamada

  reply	other threads:[~2017-04-03  7:05 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-30  6:45 [PATCH v3 00/37] mtd: nand: denali: 2nd round of Denali NAND IP patch bomb Masahiro Yamada
2017-03-30  6:45 ` Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 01/37] mtd: nand: relax ecc.read_page() return value for uncorrectable ECC Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 02/37] mtd: nand: denali: allow to override mtd->name from label DT property Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 03/37] mtd: nand: denali: remove meaningless pipeline read-ahead operation Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 04/37] mtd: nand: denali: fix bitflips calculation in handle_ecc() Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 05/37] mtd: nand: denali: fix erased page checking Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 06/37] mtd: nand: denali: support HW_ECC_FIXUP capability Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 07/37] mtd: nand: denali_dt: enable HW_ECC_FIXUP for Altera SOCFPGA variant Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 08/37] mtd: nand: denali: support 64bit capable DMA engine Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 09/37] mtd: nand: denali_dt: remove dma-mask DT property Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 10/37] mtd: nand: denali_dt: use pdev instead of ofdev for platform_device Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 11/37] mtd: nand: denali: allow to override revision number Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 12/37] mtd: nand: denali: support 1024 byte ECC step size Masahiro Yamada
2017-03-30  6:45   ` Masahiro Yamada
2017-04-01  8:43   ` Masahiro Yamada
2017-04-01  8:43     ` Masahiro Yamada
2017-03-30  6:45 ` [PATCH v3 13/37] mtd: nand: denali: avoid hard-coding ecc.strength and ecc.bytes Masahiro Yamada
2017-03-31  9:09   ` Boris Brezillon
2017-03-30  6:46 ` [PATCH v3 14/37] mtd: nand: denali: support "nand-ecc-strength" DT property Masahiro Yamada
2017-03-30  6:46   ` Masahiro Yamada
2017-03-30 14:02   ` Boris Brezillon
2017-03-30 14:02     ` Boris Brezillon
2017-03-31  5:06     ` Masahiro Yamada
2017-03-31  9:46       ` Boris Brezillon
2017-04-03  3:16         ` Masahiro Yamada
2017-04-03  3:16           ` Masahiro Yamada
2017-04-09 16:33           ` Boris Brezillon
2017-04-09 16:33             ` Boris Brezillon
2017-04-11  6:19             ` Masahiro Yamada
2017-04-11  6:19               ` Masahiro Yamada
2017-04-11  7:56               ` Boris Brezillon
2017-04-11  7:56                 ` Boris Brezillon
2017-04-14  7:57                 ` Masahiro Yamada
2017-04-14  8:19                   ` Boris Brezillon
2017-04-14  8:19                     ` Boris Brezillon
2017-04-22 15:00                     ` Masahiro Yamada
2017-04-22 15:00                       ` Masahiro Yamada
2017-03-30  6:46 ` [PATCH v3 15/37] mtd: nand: denali: remove Toshiba and Hynix specific fixup code Masahiro Yamada
2017-03-30  6:46 ` [PATCH v3 16/37] mtd: nand: denali_dt: add compatible strings for UniPhier SoC variants Masahiro Yamada
2017-04-03 15:46   ` Rob Herring
2017-04-03 15:46     ` Rob Herring
2017-03-30  6:46 ` [PATCH v3 17/37] mtd: nand: denali: set NAND_ECC_CUSTOM_PAGE_ACCESS Masahiro Yamada
2017-03-30  6:46 ` [PATCH v3 18/37] mtd: nand: denali: do not propagate NAND_STATUS_FAIL to waitfunc() Masahiro Yamada
2017-03-30 15:17   ` Boris Brezillon
2017-03-30  6:46 ` [PATCH v3 19/37] mtd: nand: denali: use BIT() and GENMASK() for register macros Masahiro Yamada
2017-03-30  6:46 ` [PATCH v3 20/37] mtd: nand: denali: remove unneeded find_valid_banks() Masahiro Yamada
2017-03-30  6:46 ` [PATCH v3 21/37] mtd: nand: denali: handle timing parameters by setup_data_interface() Masahiro Yamada
2017-03-30  6:46 ` [PATCH v3 22/37] mtd: nand: denali: rework interrupt handling Masahiro Yamada
2017-03-30  6:46 ` [PATCH v3 23/37] mtd: nand: denali: fix NAND_CMD_STATUS handling Masahiro Yamada
2017-03-30  6:46 ` [PATCH v3 24/37] mtd: nand: denali: fix NAND_CMD_PARAM handling Masahiro Yamada
2017-03-30  6:46 ` [PATCH v3 25/37] mtd: nand: denali: switch over to cmd_ctrl instead of cmdfunc Masahiro Yamada
2017-03-30 15:55   ` Boris Brezillon
2017-03-30  6:46 ` [PATCH v3 26/37] mtd: nand: denali: fix bank reset function Masahiro Yamada
2017-03-30 16:16   ` Boris Brezillon
2017-04-03  7:05     ` Masahiro Yamada [this message]
2017-03-30  6:46 ` [PATCH v3 27/37] mtd: nand: denali: use interrupt instead of polling for bank reset Masahiro Yamada
2017-03-30  6:46 ` [PATCH v3 28/37] mtd: nand: denali: propagate page to helpers via function argument Masahiro Yamada
2017-03-30  6:46 ` [PATCH v3 29/37] mtd: nand: denali: merge struct nand_buf into struct denali_nand_info Masahiro Yamada
2017-03-30  6:46 ` [PATCH v3 30/37] mtd: nand: denali: use flag instead of register macro for direction Masahiro Yamada
2017-03-30 16:38 ` [PATCH v3 00/37] mtd: nand: denali: 2nd round of Denali NAND IP patch bomb Boris Brezillon
2017-03-30 16:38   ` Boris Brezillon
2017-03-31  4:05   ` Masahiro Yamada
2017-03-31  8:27     ` 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='CAK7LNARSwcEdC=jm2z2WzoG0au48OgUVYDZqZ6r+wtydq5UYug@mail.gmail.com' \
    --to=yamada.masahiro@socionext.com \
    --cc=artem.bityutskiy@linux.intel.com \
    --cc=boris.brezillon@free-electrons.com \
    --cc=chuanxiao.dong@intel.com \
    --cc=computersforpeace@gmail.com \
    --cc=cyrille.pitchen@atmel.com \
    --cc=dinguyen@kernel.org \
    --cc=dwmw2@infradead.org \
    --cc=ejo@pengutronix.de \
    --cc=grmoore@opensource.altera.com \
    --cc=jaswinder.singh@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=marek.vasut@gmail.com \
    --cc=mhiramat@kernel.org \
    --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.