public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Scott Wood <scottwood@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 09/15] iMX28: Add GPMI NAND driver
Date: Wed, 28 Sep 2011 16:57:49 -0500	[thread overview]
Message-ID: <4E83985D.2000802@freescale.com> (raw)
In-Reply-To: <201109282342.10073.marek.vasut@gmail.com>

On 09/28/2011 04:42 PM, Marek Vasut wrote:
> On Wednesday, September 28, 2011 11:26:45 PM Scott Wood wrote:
>> On 09/11/2011 11:06 PM, Marek Vasut wrote:
>>> +		desc = info->desc[i];
>>> +		memset(desc, 0, sizeof(struct mxs_dma_desc));
>>> +		desc->address = (dma_addr_t)desc;
>>> +	}
>>> +
>>> +	info->desc_index = 0;
>>> +}
>>> +
>>> +static inline uint32_t mxs_nand_ecc_chunk_cnt(uint32_t page_data_size)
>>> +{
>>> +	return page_data_size / MXS_NAND_CHUNK_DATA_CHUNK_SIZE;
>>> +}
>>
>> No need for inline in .c files, GCC should take care of this automatically.
> 
> Does it really ?

Very small functions (and anything used only once) get inlined
automatically.

It might need the hint if you have a larger function that collapses down
to something small due to constant propagation (and of course if it's a
header or otherwise *must* be inlined), but usually it does a decent job
on its own.

>> Hmm, I thought raw was just supposed to disable ECC, not change the
>> layout from what is used in normal operation.
> 
> You see the page as is ... I see no problem with this part.

What if the raw access is being done to e.g. force bit flips for testing?

There seems to be a difference between U-Boot and Linux here.

Linux has this in mtd.h:
>  * MTD_OOB_RAW:         mode to read oob and data without doing ECC checking

Doesn't say anything about layout.

Whereas U-Boot says:
>  * MTD_OOB_RAW:         mode to read raw data+oob in one chunk. The oob data
>  *                      is inserted into the data. Thats a raw image of the
>  *                      flash contents.

Linux used to say what U-Boot says, but changed in commit
b64d39d8b03fea88417d53715ccbebf71d4dcc9f

This commit message includes the comment "Now MTD_OOB_RAW behaves just
like MTD_OOB_PLACE, but doesn't do ECC validation".

So I think if you need something that changes the layout from normal
operations, it needs to be a new mode.  And it's about time to sync up
U-Boot's NAND code with Linux again...

>>> +	/*
>>> +	 * There are fundamental incompatibilities between the i.MX GPMI NFC
>>> and +	 * the NAND Flash MTD model that make it essentially impossible 
> to
>>> write +	 * the out-of-band bytes.
>>> +	 *
>>> +	 * We permit *ONE* exception. If the *intent* of writing the OOB is to
>>> +	 * mark a block bad, we can do that.
>>> +	 */
>>
>> Is this just an issue with writing OOB separately from the main data
>> (which would also be an issue on MLC chips that don't allow multiple
>> partial programming), or can you not even write user OOB bytes as part
>> of a full page write?
>>
>> Based on fake_ecc_layout I'm guessing the latter.
> 
> My understanding of the original FSL driver is that you should never be allowed 
> to access the physical NAND media at all. Only through the driver, which does 
> the magic.

I'm not talking about circumventing the driver, just accessing some user
OOB bytes through it.

>> The nand_base.c code actually does have a split here
>> (nand_scan_ident/nand_scan_tail), but U-Boot's glue code is too
>> inflexible, and insists on calling nand_scan.  The right fix is to let
>> drivers call nand_scan_ident/nand_scan_tail themselves.
> 
> I can't test now, so this has to wait. I'd prefer to get this mainline and then 
> start poking around fixing this.

OK.  It's been on my TODO list for a while now...

-Scott

  reply	other threads:[~2011-09-28 21:57 UTC|newest]

Thread overview: 116+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-12  4:06 [U-Boot] [PATCH 00/15 V2] Support for the DENX M28 SoM Marek Vasut
2011-09-12  4:06 ` [U-Boot] [PATCH 01/15] iMX28: Initial support for iMX28 CPU Marek Vasut
2011-09-14  7:10   ` Stefano Babic
2011-09-27 13:45   ` [U-Boot] [PATCH 01/15 V2] " Marek Vasut
2011-09-30  9:42     ` [U-Boot] [PATCH 01/15 V3] " Marek Vasut
2011-10-13 16:19       ` Stefano Babic
2011-10-13 18:14         ` Marek Vasut
2011-10-13 20:45           ` Wolfgang Denk
2011-10-14  7:51           ` Stefano Babic
2011-10-14  7:59             ` Marek Vasut
2011-10-14 21:00               ` Wolfgang Denk
2011-10-14 21:06                 ` Marek Vasut
2011-10-13 23:38       ` [U-Boot] [PATCH 01/15 V4] " Marek Vasut
2011-10-14 21:14         ` [U-Boot] [PATCH 01/15 V5] " Marek Vasut
2011-10-14 21:01       ` [U-Boot] [PATCH 01/15 V3] " Wolfgang Denk
2011-10-14 21:10         ` Marek Vasut
2011-09-12  4:06 ` [U-Boot] [PATCH 02/15] iMX28: Add SSP MMC driver Marek Vasut
2011-09-12  4:06 ` [U-Boot] [PATCH 03/15] FEC: Add support for iMX28 quirks Marek Vasut
2011-09-14  7:17   ` Stefano Babic
2011-09-14 12:11     ` Marek Vasut
2011-09-14 15:38       ` Mike Frysinger
2011-09-12  4:06 ` [U-Boot] [PATCH 04/15] iMX28: Add PINMUX control Marek Vasut
2011-09-12  4:06 ` [U-Boot] [PATCH 05/15] iMX28: Add I2C bus driver Marek Vasut
2011-09-12  5:30   ` Heiko Schocher
2011-09-12 13:31     ` Marek Vasut
2011-09-13 12:05   ` Wolfram Sang
2011-09-13 12:56     ` Marek Vasut
2011-09-13 13:12       ` Wolfram Sang
2011-09-13 13:20         ` Marek Vasut
2011-09-13 13:31           ` Wolfram Sang
2011-09-13 22:24   ` [U-Boot] [PATCH 05/15 V2] " Marek Vasut
2011-09-12  4:06 ` [U-Boot] [PATCH 06/15] iMX28: Add GPIO control Marek Vasut
2011-09-14  7:25   ` Stefano Babic
2011-09-12  4:06 ` [U-Boot] [PATCH 07/15] iMX28: Add SPI driver Marek Vasut
2011-09-12 16:35   ` Mike Frysinger
2011-09-12 17:42     ` Marek Vasut
2011-09-12 20:26       ` Mike Frysinger
2011-09-12 22:45         ` Marek Vasut
2011-09-13 22:26   ` [U-Boot] [PATCH 07/15 V2] " Marek Vasut
2011-09-14  2:50     ` Mike Frysinger
2011-09-14  3:14       ` Marek Vasut
2011-09-12  4:06 ` [U-Boot] [PATCH 08/15] iMX28: Add APBH DMA driver Marek Vasut
2011-09-12  4:06 ` [U-Boot] [PATCH 09/15] iMX28: Add GPMI NAND driver Marek Vasut
2011-09-28 21:26   ` Scott Wood
2011-09-28 21:42     ` Marek Vasut
2011-09-28 21:57       ` Scott Wood [this message]
2011-09-28 22:09         ` Marek Vasut
2011-09-28 22:13           ` Scott Wood
2011-09-28 22:34             ` Marek Vasut
2011-09-28 22:12     ` Marek Vasut
2011-09-28 22:23       ` Scott Wood
2011-09-28 22:17   ` [U-Boot] [PATCH 09/15 V2] " Marek Vasut
2011-09-28 22:32     ` [U-Boot] [PATCH 09/15 V3] " Marek Vasut
2011-09-29  0:07       ` [U-Boot] [PATCH 09/15 V4] " Marek Vasut
2011-09-30  9:39         ` [U-Boot] [PATCH 09/15 V5] " Marek Vasut
2011-10-10 21:06           ` Scott Wood
2011-09-12  4:06 ` [U-Boot] [PATCH 10/15] iMX28: Add driver for internal RTC Marek Vasut
2011-09-12  4:06 ` [U-Boot] [PATCH 11/15] iMX28: Add image header generator tool Marek Vasut
2011-09-12 16:38   ` Mike Frysinger
2011-09-12 17:40     ` Marek Vasut
2011-09-12 20:24       ` Mike Frysinger
2011-09-12 22:13         ` Marek Vasut
2011-09-13 22:27   ` [U-Boot] [PATCH 11/15 V2] " Marek Vasut
2011-09-12  4:06 ` [U-Boot] [PATCH 12/15] iMX28: Add u-boot.sb target to Makefile Marek Vasut
2011-09-12 16:33   ` Mike Frysinger
2011-09-12 17:40     ` Marek Vasut
2011-09-13 22:28   ` [U-Boot] [PATCH 12/15 V2] " Marek Vasut
2011-09-12  4:06 ` [U-Boot] [PATCH 13/15] iMX28: Add support for DENX M28EVK board Marek Vasut
2011-09-13 22:29   ` [U-Boot] [PATCH 13/15 V2] " Marek Vasut
2011-09-14  2:48     ` Mike Frysinger
2011-09-14  3:17       ` Marek Vasut
2011-09-14  3:33         ` Mike Frysinger
2011-09-14  4:24           ` Marek Vasut
2011-09-14  5:01             ` Mike Frysinger
2011-09-14  5:10               ` Marek Vasut
2011-09-14 22:12                 ` Mike Frysinger
2011-09-14 23:13                   ` Marek Vasut
2011-09-20  2:15     ` [U-Boot] [PATCH 13/15 V3] " Marek Vasut
2011-09-12  4:06 ` [U-Boot] [PATCH 14/15] M28: Add MMC SPL Marek Vasut
2011-09-30  9:40   ` [U-Boot] [PATCH 14/15 V2] " Marek Vasut
2011-10-14 12:09     ` [U-Boot] [PATCH 14/15 V3] " Marek Vasut
2011-09-12  4:06 ` [U-Boot] [PATCH 15/15] M28: Add doc/README.m28 documentation Marek Vasut
2011-10-21 22:44 ` [U-Boot] [PATCH 00/17 V3] Support for the DENX M28 SoM Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 01/17 RESEND V5] iMX28: Initial support for iMX28 CPU Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 02/17 RESEND] iMX28: Add SSP MMC driver Marek Vasut
2011-11-08 20:45     ` Andy Fleming
2011-11-08 21:42       ` Marek Vasut
2011-11-08 21:50         ` Andy Fleming
2011-11-09  8:18           ` Stefano Babic
2011-11-09  8:38             ` Marek Vasut
2011-11-09  8:52               ` Stefano Babic
2011-10-21 22:44   ` [U-Boot] [PATCH 03/17 RESEND] FEC: Add support for iMX28 quirks Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 04/17 RESEND] iMX28: Add PINMUX control Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 05/17 RESEND V2] iMX28: Add I2C bus driver Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 06/17 RESEND] iMX28: Add GPIO control Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 07/17 RESEND V2] iMX28: Add SPI driver Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 08/17 RESEND] iMX28: Add APBH DMA driver Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 09/17 RESEND V5] iMX28: Add GPMI NAND driver Marek Vasut
2011-11-04 13:13     ` Veli-Pekka Peltola
2011-11-04 13:30       ` Marek Vasut
2011-11-04 14:02         ` Veli-Pekka Peltola
2011-11-05  2:24           ` Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 10/17 RESEND] iMX28: Add driver for internal RTC Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 11/17 RESEND V2] iMX28: Add image header generator tool Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 12/17 V3] iMX28: Add u-boot.sb target to Makefile Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 13/17 V4] iMX28: Add support for DENX M28EVK board Marek Vasut
2011-10-31  9:12     ` Igor Grinberg
2011-10-31 11:42     ` [U-Boot] [PATCH 13/17 V5] " Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 14/17 V4] M28: Add MMC SPL Marek Vasut
2011-10-23 21:42     ` Robert Schwebel
2011-10-31 11:44     ` [U-Boot] [PATCH 14/17 V5] " Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 15/17 RESEND] M28: Add doc/README.m28 documentation Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 16/17] iMX28: Fix ARM vector handling Marek Vasut
2011-10-21 22:44   ` [U-Boot] [PATCH 17/17] M28: Add memory detection into SPL Marek Vasut
2011-10-31 11:45     ` [U-Boot] [PATCH 17/17 V2] " Marek Vasut
2011-11-05  2:39       ` [U-Boot] [PATCH 17/17 V3] " 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=4E83985D.2000802@freescale.com \
    --to=scottwood@freescale.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