public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Marek Vasut <marek.vasut@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 4/4 V3] PXA: Adapt Voipac PXA270 to OneNAND SPL
Date: Fri, 4 Nov 2011 21:07:08 +0100	[thread overview]
Message-ID: <201111042107.08821.marek.vasut@gmail.com> (raw)
In-Reply-To: <4EB414E6.8010204@freescale.com>

> On 11/03/2011 07:55 PM, Marek Vasut wrote:
> >> On 11/03/2011 04:52 PM, Marek Vasut wrote:
> >> Why do we want to separate them?  What is the fundamental difference
> >> between OneNAND, and a high-level NAND controller such as fsl_elbc?
> > 
> > Honestly, I'm not the author of the subsystem, but please check the
> > documentation. The way we retrieve data from onenand is different to
> > NAND.
> 
> What documentation?  How is it different?  There are substantial
> differences in how we "retrieve data" between drivers that use the NAND
> subsystem.  Surely you've seen that in the mxs_nand driver. :-)
> 
> >> Maybe there would be some differences on init if we can't produce
> >> "normal" ID data, but that doesn't justify duplicating the whole
> >> subsystem.
> > 
> > Where do you see such duplication? cmd_onenand ?
> 
> cmd_onenand and env_onenand are the most irritating, since they're at a
> layer that really shouldn't care about the differences -- we should
> probably have a plain "mtd" command instead, for most of the functionality.
> 
> There's also onenand_bbt.c -- what are the hardware-based differences in
> how the bad block table is managed?
> 
> nand_base.c/onenand_base.c are less clear.  Obviously much of what is in
> onenand_base.c would be in the controller driver if it used the NAND
> subsystem.  But it looks like some of it is duplication.
> 
> >> Why should the code that just wants to use an API to move data around
> >> need to care which it is?  Why should there be behavioral differences
> >> that aren't rooted in the actual hardware?  Another approach might be to
> >> use MTD as the common interface, but factor out common code into
> >> libraries that drivers can use, and avoid the main nand_base.c code even
> >> for things like fsl_elbc.
> > 
> > I think you're mistaken here. OneNAND != NAND.
> 
> Well, last I tried I couldn't find any public documentation, so all I
> have to go on is the code, some marketing-type info, and asking
> questions of people that appear to know more about OneNAND than I do. :-)
> 
> From what I can see, it looks like NAND with an integrated controller
> that exposes an unusual command set, but still for the most part
> provides the same operations.  Several of our existing NAND-subsystem
> drivers have to fake the command set for the generic layer as well.
> Initialization/identification might be a problem area that current
> drivers don't have to deal with, though.  Actually integrating OneNAND
> with NAND would likely involve an already-needed restructuring of the
> subsystem.
> 
> If the answer really is that it makes sense to consider OneNAND to be a
> totally different thing from NAND, then it's outside my jurisdiction as
> NAND custodian -- which is fine with me.  Frankly, even if it does make
> sense to merge them, I'd rather not be custodian of the OneNAND stuff
> unless someone is actually willing to do the merge.  I don't have access
> to hardware or documentation, and it's an entirely separate codebase.
> People just started sending me the patches a few years back.
> 
> >> This is not a new complaint -- I've asked for this before but nobody's
> >> put the time into sorting out the mess (and I have neither time nor
> >> hardware nor documentation).  The SPL load_image function is a simple
> >> enough interface to start with, though. :-)
> > 
> > Well, it seems what you are proposing is way beyond the scope of this
> > patchset.
> > 
> >> In fact, it should probably just be spl_load_image() with whatever boot
> >> source has been configured into this SPL build.
> > 
> > What if you have two boot sources?
> 
> Traditionally SPL has been small and purpose-built to do exactly one
> thing -- so we decide at compile-time things that we might otherwise
> decide at runtime.
> 
> If there's a requirement for multiple boot sources decided at runtime,
> then we'll obviously need a runtime mechanism. -- but it seems a bit
> hackish to why does it matter whether it's two different types of
> device, or two of the same type of device (possibly with different
> controller types)?  If the answer is that, for example, NAND versus USB
> versus MMC is a likely use case, but two different NANDs is not likely,
> is NAND versus OneNAND any more likely?
> 
> Maybe spl_load_image should be a function pointer that board code sets,
> with each implementation being distinctly named (in which case
> nand_spl_load_image would become nand_spl_simple_load_image, unless we
> move it to nand_spl_load.c and make nand_read_page a function pointer).
>  If needed to save a few bytes, we could use #defines to eliminate the
> function pointers in a single-target SPL build.
> 
> For now, until we decide to do something SPL-wide, call it what you want.
> 

Well basically from what I see, you'd like me to do the NAND/OneNAND merge. As I 
already said, that's way out of the scope of this patchset so I'm not doing 
that. Either way, are you OK with current state of the patch?

M

  reply	other threads:[~2011-11-04 20:07 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-31 13:23 [U-Boot] [PATCH 0/4] Voipac PXA270 OneNAND SPL Marek Vasut
2011-10-31 13:23 ` [U-Boot] [PATCH 1/4] PXA: Drop Voipac PXA270 OneNAND IPL Marek Vasut
2011-10-31 13:23 ` [U-Boot] [PATCH 2/4] PXA: Rework start.S to be closer to other ARMs Marek Vasut
2011-11-01 22:53   ` [U-Boot] [PATCH 2/4 V2] " Marek Vasut
2011-11-02  9:01   ` [U-Boot] [PATCH 2/4] " Stefan Herbrechtsmeier
2011-11-02 10:25     ` Marek Vasut
2011-11-02 10:53       ` Stefan Herbrechtsmeier
2011-10-31 13:23 ` [U-Boot] [PATCH 3/4] OneNAND: Add simple OneNAND SPL Marek Vasut
2011-10-31 23:15   ` Scott Wood
2011-11-01 22:54   ` [U-Boot] [PATCH 3/4 V2] " Marek Vasut
2011-11-02 22:41     ` Scott Wood
2011-11-03  0:15       ` Marek Vasut
2011-11-03  0:36         ` Kyungmin Park
2011-11-03  0:59           ` Marek Vasut
2011-11-03 16:19         ` Scott Wood
2011-11-03 16:56           ` Marek Vasut
2011-11-03 17:06             ` Scott Wood
2011-11-03 17:25               ` Marek Vasut
2011-11-03  1:55     ` [U-Boot] [PATCH 3/4 V3] " Marek Vasut
2011-11-03 21:59       ` [U-Boot] [PATCH 3/4 V4] " Marek Vasut
2011-10-31 13:23 ` [U-Boot] [PATCH 4/4] PXA: Adapt Voipac PXA270 to " Marek Vasut
2011-10-31 23:03   ` Scott Wood
2011-11-01 22:12     ` Marek Vasut
2011-11-01 22:34       ` Scott Wood
2011-11-01 22:44         ` Marek Vasut
2011-11-02 22:18           ` Scott Wood
2011-11-01 22:54   ` [U-Boot] [PATCH 4/4 V2] " Marek Vasut
2011-11-02 22:23     ` Scott Wood
2011-11-03  1:56     ` [U-Boot] [PATCH 4/4 V3] " Marek Vasut
2011-11-03 18:09       ` Scott Wood
2011-11-03 21:52         ` Marek Vasut
2011-11-03 22:20           ` Scott Wood
2011-11-04  0:55             ` Marek Vasut
2011-11-04 16:37               ` Scott Wood
2011-11-04 20:07                 ` Marek Vasut [this message]
2011-11-04 20:13                   ` Scott Wood
2011-11-04 20:31                     ` Marek Vasut
2011-11-05 22:40                     ` Marek Vasut

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=201111042107.08821.marek.vasut@gmail.com \
    --to=marek.vasut@gmail.com \
    --cc=u-boot@lists.denx.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox