Skip to contentSkip to conversation

NAND: Add nand read.raw and write.raw commands

PATCH New Marek Vasut 3 participants 5 messages Aug 25, 2011 – Aug 26, 2011

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 NAND: Add nand read.raw and write.raw commands

These commands should work around various "hardware" ECC and BCH methods. This is important for example in case where the user needs to write precisely what's in a buffer to a NAND page, with no interference of hardware ECC engine or such.

---
 common/cmd_nand.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)
common/cmd_nand.c +14 -0
index b767cd2..ca510ae 100644
@@ -606,6 +606,20 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
 				ret = nand->read_oob(nand, off, &ops);
 			else
 				ret = nand->write_oob(nand, off, &ops);
+		} else if (!strcmp(s, ".raw")) {
+			/* Raw access */
+			mtd_oob_ops_t ops = {
+				.datbuf = (u8 *)addr,
+				.oobbuf = ((u8 *)addr) + nand->writesize,
+				.len = nand->writesize,
+				.ooblen = nand->oobsize,
+				.mode = MTD_OOB_RAW
+			};
+
+			if (read)
+				ret = nand->read_oob(nand, off, &ops);
+			else
+				ret = nand->write_oob(nand, off, &ops);
 		} else {
 			printf("Unknown nand command suffix '%s'.\n", s);
 			return 1;
Signature · 1 line
1.7.5.4
#1 lore raw

PATCH 1/1 NAND: Add nand read.raw and write.raw commands

Dear Marek,

Quoted 3 lines · Marek Vasut

These commands should work around various "hardware" ECC and BCH methods. This is important for example in case where the user needs to write precisely what's in a buffer to a NAND page, with no interference of hardware ECC engine or such.

I think I don't get it :)

Where is the problem with writing this stuff to NAND now? If the ECC interferes there was a problem with the NAND Flash therefore the data is corrupted.

Regards
Simon

#2 lore raw

PATCH 1/1 NAND: Add nand read.raw and write.raw commands

Quoted 8 lines · Simon Schwarz

Dear Marek,

Quoted 4 lines · Marek Vasut

These commands should work around various "hardware" ECC and BCH methods. This is important for example in case where the user needs to write precisely what's in a buffer to a NAND page, with no interference of hardware ECC engine or such.

Quoted 5 lines

I think I don't get it :)

Where is the problem with writing this stuff to NAND now? If the ECC interferes there was a problem with the NAND Flash therefore the data is corrupted.

It's not an issue with data corruption. For example in my case, if nand_write_skip_bad() is called, HW ECC writes the ECC information in various places in the page. But if done this way, exactly what's in the buffer is written to the page.

Cheers

Quoted 3 lines

Regards
Simon

#3 lore raw

PATCH 1/1 NAND: Add nand read.raw and write.raw commands

Quoted 11 lines · Marek Vasut
Quoted 10 lines · Simon Schwarz

Dear Marek,

Quoted 4 lines · Marek Vasut

These commands should work around various "hardware" ECC and BCH methods. This is important for example in case where the user needs to write precisely what's in a buffer to a NAND page, with no interference of hardware ECC engine or such.

I think I don't get it :)

Quoted 8 lines
Quoted 3 lines

Where is the problem with writing this stuff to NAND now? If the ECC interferes there was a problem with the NAND Flash therefore the data is corrupted.

It's not an issue with data corruption. For example in my case, if nand_write_skip_bad() is called, HW ECC writes the ECC information in various places in the page. But if done this way, exactly what's in the buffer is written to the page.

But isn't then the HW ECC misconfigured? AFAIK ECC information should be written only to the OOB never into the normal page.

I'am really not sure if I understand the patch - it seems to me that you are writing/reading the oob while this collides with the description that you want to write data. Could you explain further what exactly the patch is supposed to do?

Regards
Simon

#4 lore raw

PATCH 1/1 NAND: Add nand read.raw and write.raw commands

Dear Simon Schwarz,

Quoted 8 lines · In message <[email protected]> you wrote:

But isn't then the HW ECC misconfigured? AFAIK ECC information should be written only to the OOB never into the normal page.

I'am really not sure if I understand the patch - it seems to me that you are writing/reading the oob while this collides with the description that you want to write data. Could you explain further what exactly the patch is supposed to do?

There are some SoCs with quite funny requiremnts regarding the organization of NAND they expect for their ROM boot loader. The Freescale (or rather SigmaTel) i.MX28 is one of them.

I think Marek needs this feature to format the NAND in such a way that booting from NAND works on i.MX28

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The inappropriate cannot be beautiful.
             - Frank Lloyd Wright _The Future of Architecture_ (1953)