From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Ricard Wanderlof <ricard.wanderlof@axis.com>
Cc: Linux mtd <linux-mtd@lists.infradead.org>
Subject: Re: [PATCH 1/4] of: Add device tree bindings for Evatronix
Date: Fri, 28 Oct 2016 18:20:22 +0200 [thread overview]
Message-ID: <20161028182022.7643c4ea@bbrezillon> (raw)
In-Reply-To: <alpine.DEB.2.02.1610281725060.9986@lnxricardw1.se.axis.com>
On Fri, 28 Oct 2016 18:01:44 +0200
Ricard Wanderlof <ricard.wanderlof@axis.com> wrote:
> On Fri, 28 Oct 2016, Boris Brezillon wrote:
>
> > > One thing I would have liked to have is to have the actual timing mode
> > > number in the nand_data_interface struct, for controllers like in my case
> > > where it's problematic to take the numeric timing values and map them to
> > > register values, and the timing register values need to be pre-computed.
> >
> > What do you mean by pre-computed? If you're able to pre-compute the
> > timings, why can't you do that at runtime?
>
> The short answer in this case is because the timing values were delivered
> by our ASIC integration vendor, partly after running simulations to verify
> the exact timing using the actual silicon layout. That is why I originally
> wanted to put those timing register values directly in the DT, becuase
> they are in practice part of the specifications for the actual ASIC. In
> essence, we looked at the flash chips we wanted to use with the ASIC, and
> realized they all conformed to ONFi mode 2. Our vendor then provided us
> with mode 2 timing values that they guaranteed would work with the chip.
> (In addition, mode 0 is used during initial boot so minimize the
> likeleyhood that something would go wrong, given that the boot loader is
> in a ROM.) Especially given that there was no mtd timing setup
> infrastructure at the time, we had no interest in how the values were
> derived, or to support more modes.
>
> Another issue is how to model the internal delays within the ASIC between
> the NAND controller IP and the pads, which are also part of the equation.
>
> I don't know if our case is unique, but at least it is an example of a
> situation in which runtime calculation of the timing register values is
> problematic.
Okay. I guess we could add the associated ONFI timing mode to the
nand_data_interface struct (it would represent the closest one if the
NAND is not ONFI and some vendor specific implementation decided to
tweak the timing values).
>
> > > There might be other reasons where the driver might want to know the mode
> > > number.
> >
> > Do you have real examples?
>
> No, it just seemed like a reasonable concept, given that
> nand_init_data_interface() actually does this mapping anyway, so it might
> as well inform chip->setup_data_interface() about it, since the
> information is right there anyway.
>
> > We could pass the ONFI timing mode here, but some timings are not
> > defined using this mode (like tCCS), and I'm not sure we have the same
> > mapping between ONFI and JEDEC modes. The other thing is that I wanted
> > to leave the door open for vendor specific timing definitions which do
> > not exactly match one of the timing mode defined in the ONFI spec.
> >
> > That's why I didn't bother exposing the ONFI timing mode to the NAND
> > controller ->setup_data_interface() implementation.
>
> Ok, so the reason is really future expansion, where ONFi modes 0..5 may
> not be the only modes to be configured. Fair enough.
Yep.
prev parent reply other threads:[~2016-10-28 16:20 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-02 7:47 [PATCH 1/4] of: Add device tree bindings for Evatronix Ricard Wanderlof
2016-06-02 7:47 ` Ricard Wanderlof
2016-06-03 14:22 ` Boris Brezillon
2016-06-07 15:01 ` Ricard Wanderlof
2016-06-07 15:01 ` Ricard Wanderlof
2016-06-08 15:50 ` Boris Brezillon
2016-06-08 15:50 ` Boris Brezillon
2016-06-10 15:35 ` Ricard Wanderlof
2016-06-10 15:35 ` Ricard Wanderlof
2016-06-10 15:54 ` Boris Brezillon
2016-06-10 15:54 ` Boris Brezillon
2016-06-10 16:46 ` Ricard Wanderlof
2016-06-10 16:46 ` Ricard Wanderlof
2016-06-10 17:03 ` Boris Brezillon
2016-06-10 17:03 ` Boris Brezillon
2016-06-10 17:14 ` Ricard Wanderlof
2016-06-10 17:14 ` Ricard Wanderlof
2016-10-26 11:27 ` Ricard Wanderlof
2016-10-26 11:52 ` Boris Brezillon
2016-10-26 12:02 ` Boris Brezillon
2016-10-26 12:31 ` Ricard Wanderlof
2016-10-26 13:05 ` Boris Brezillon
2016-10-28 14:35 ` Ricard Wanderlof
2016-10-28 14:44 ` Boris Brezillon
2016-10-28 16:01 ` Ricard Wanderlof
2016-10-28 16:20 ` Boris Brezillon [this message]
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=20161028182022.7643c4ea@bbrezillon \
--to=boris.brezillon@free-electrons.com \
--cc=linux-mtd@lists.infradead.org \
--cc=ricard.wanderlof@axis.com \
/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.