* [PATCH v3] S3C24xx: NAND management changes to support booting from NAND
@ 2011-03-12 19:14 Juergen Beisert
2011-03-12 19:14 ` [PATCH 1/6] S3C24xx/NFC: Re-enable the controller after NAND boot test Juergen Beisert
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Juergen Beisert @ 2011-03-12 19:14 UTC (permalink / raw)
To: barebox
After digging deep into NAND flash handling and ECC generation, this is
revision three of my patch series to make the mini2440 booting from NAND.
This patch stack is tested on:
- mini2440, 64 MiB Hynix SDRAM, 64 MiB Samsung NAND
- mini2440, 64 MiB Micron SDRAM, 128 MiB Samsung NAND
Juergen
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/6] S3C24xx/NFC: Re-enable the controller after NAND boot test
2011-03-12 19:14 [PATCH v3] S3C24xx: NAND management changes to support booting from NAND Juergen Beisert
@ 2011-03-12 19:14 ` Juergen Beisert
2011-03-12 19:14 ` [PATCH 2/6] S3C24xx/NFC: Remove dead code Juergen Beisert
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Juergen Beisert @ 2011-03-12 19:14 UTC (permalink / raw)
To: barebox; +Cc: Juergen Beisert
From: Juergen Beisert <juergen@kreuzholzen.de>
After running the 'nand_boot_test' command, any usage of the NAND fails with
a IO error. This happens due to the load routine disables the NAND controller
after loading the image.
This patch re-enables the NAND controller again after running the test.
Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
---
drivers/mtd/nand/nand_s3c2410.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/drivers/mtd/nand/nand_s3c2410.c b/drivers/mtd/nand/nand_s3c2410.c
index df0b7c1..6ee3b83 100644
--- a/drivers/mtd/nand/nand_s3c2410.c
+++ b/drivers/mtd/nand/nand_s3c2410.c
@@ -571,6 +571,10 @@ static int do_nand_boot_test(struct command *cmdtp, int argc, char *argv[])
s3c24x0_nand_load_image(dest, size, 0, pagesize);
+ /* re-enable the controller again, as this was a test only */
+ enable_nand_controller((void *)S3C24X0_NAND_BASE,
+ BOARD_DEFAULT_NAND_TIMING);
+
return 0;
}
--
1.7.2.3
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/6] S3C24xx/NFC: Remove dead code
2011-03-12 19:14 [PATCH v3] S3C24xx: NAND management changes to support booting from NAND Juergen Beisert
2011-03-12 19:14 ` [PATCH 1/6] S3C24xx/NFC: Re-enable the controller after NAND boot test Juergen Beisert
@ 2011-03-12 19:14 ` Juergen Beisert
2011-03-12 19:14 ` [PATCH 3/6] S3C24xx/NFC: Remove double function setup Juergen Beisert
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Juergen Beisert @ 2011-03-12 19:14 UTC (permalink / raw)
To: barebox; +Cc: Juergen Beisert
From: Juergen Beisert <jbe@kreuzholzen.de>
Something was to be done here. But I do not remember what. As it works also
without it, remove this dead code.
Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
---
drivers/mtd/nand/nand_s3c2410.c | 8 ++------
1 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/mtd/nand/nand_s3c2410.c b/drivers/mtd/nand/nand_s3c2410.c
index 6ee3b83..05a6a87 100644
--- a/drivers/mtd/nand/nand_s3c2410.c
+++ b/drivers/mtd/nand/nand_s3c2410.c
@@ -272,8 +272,7 @@ static int s3c2410_nand_correct_data(struct mtd_info *mtd, uint8_t *dat,
* to see if we have an 0xff,0xff,0xff read ECC and then ignore
* the error, on the assumption that this is an un-eccd page.
*/
- if (read_ecc[0] == 0xff && read_ecc[1] == 0xff && read_ecc[2] == 0xff
- /* && info->platform->ignore_unset_ecc */)
+ if (read_ecc[0] == 0xff && read_ecc[1] == 0xff && read_ecc[2] == 0xff)
return 0;
/* Can we correct this ECC (ie, one row and column change).
@@ -431,10 +430,7 @@ static int s3c24x0_nand_probe(struct device_d *dev)
mtd->priv = chip;
/* init the default settings */
-#if 0
- /* TODO: Will follow later */
- init_nand_chip_bw8(chip);
-#endif
+
/* 50 us command delay time */
chip->chip_delay = 50;
chip->priv = host;
--
1.7.2.3
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/6] S3C24xx/NFC: Remove double function setup
2011-03-12 19:14 [PATCH v3] S3C24xx: NAND management changes to support booting from NAND Juergen Beisert
2011-03-12 19:14 ` [PATCH 1/6] S3C24xx/NFC: Re-enable the controller after NAND boot test Juergen Beisert
2011-03-12 19:14 ` [PATCH 2/6] S3C24xx/NFC: Remove dead code Juergen Beisert
@ 2011-03-12 19:14 ` Juergen Beisert
2011-03-12 19:14 ` [PATCH 4/6] S3C24xx/NFC: Consider correct NAND page size for boot Juergen Beisert
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Juergen Beisert @ 2011-03-12 19:14 UTC (permalink / raw)
To: barebox; +Cc: Juergen Beisert
From: Juergen Beisert <juergen@kreuzholzen.de>
Three lines above this setting is already done.
Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
---
drivers/mtd/nand/nand_s3c2410.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/drivers/mtd/nand/nand_s3c2410.c b/drivers/mtd/nand/nand_s3c2410.c
index 05a6a87..94c075e 100644
--- a/drivers/mtd/nand/nand_s3c2410.c
+++ b/drivers/mtd/nand/nand_s3c2410.c
@@ -449,7 +449,6 @@ static int s3c24x0_nand_probe(struct device_d *dev)
chip->ecc.calculate = s3c2410_nand_calculate_ecc;
chip->ecc.correct = s3c2410_nand_correct_data;
chip->ecc.hwctl = s3c2410_nand_enable_hwecc;
- chip->ecc.calculate = s3c2410_nand_calculate_ecc;
/* our hardware capabilities */
chip->ecc.mode = NAND_ECC_HW;
--
1.7.2.3
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 4/6] S3C24xx/NFC: Consider correct NAND page size for boot.
2011-03-12 19:14 [PATCH v3] S3C24xx: NAND management changes to support booting from NAND Juergen Beisert
` (2 preceding siblings ...)
2011-03-12 19:14 ` [PATCH 3/6] S3C24xx/NFC: Remove double function setup Juergen Beisert
@ 2011-03-12 19:14 ` Juergen Beisert
2011-03-12 19:14 ` [PATCH 5/6] S3C24xx/NFC: Setup ECC handling in accordance to the kernel Juergen Beisert
2011-03-12 19:14 ` [PATCH 6/6] S3C24xx/NFC: Add OOB/ECC handling documentation for different NANDs Juergen Beisert
5 siblings, 0 replies; 7+ messages in thread
From: Juergen Beisert @ 2011-03-12 19:14 UTC (permalink / raw)
To: barebox; +Cc: Juergen Beisert
From: Juergen Beisert <juergen@kreuzholzen.de>
When booting from NAND, its important to know the correct page size. When
the NAND is used as the boot source, four dedicated pins are used to configure
the correct page size and address cycles. These pins can be read back in one
of the NFC registers to parametrize the load function.
This patch also extends the read routine to support more than four address
cycles on demand.
BTW: At least some mini2440s are misconfigured to use five address cycles for
a NAND device that is known to need only four address cycles. In this case the
vendor is at our side: This NAND simply ignores any additional address cycles
than required.
Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
---
arch/arm/boards/a9m2410/a9m2410.c | 2 +-
arch/arm/boards/a9m2440/a9m2440.c | 2 +-
arch/arm/boards/mini2440/mini2440.c | 2 +-
arch/arm/mach-s3c24xx/include/mach/s3c24x0-nand.h | 2 +-
drivers/mtd/nand/nand_s3c2410.c | 76 ++++++++++++++++-----
5 files changed, 62 insertions(+), 22 deletions(-)
diff --git a/arch/arm/boards/a9m2410/a9m2410.c b/arch/arm/boards/a9m2410/a9m2410.c
index 57d8fa3..8cbaec5 100644
--- a/arch/arm/boards/a9m2410/a9m2410.c
+++ b/arch/arm/boards/a9m2410/a9m2410.c
@@ -176,7 +176,7 @@ device_initcall(a9m2410_devices_init);
#ifdef CONFIG_S3C24XX_NAND_BOOT
void __bare_init nand_boot(void)
{
- s3c24x0_nand_load_image((void *)TEXT_BASE, 256 * 1024, 0, 512);
+ s3c24x0_nand_load_image((void *)TEXT_BASE, 256 * 1024, 0);
}
#endif
diff --git a/arch/arm/boards/a9m2440/a9m2440.c b/arch/arm/boards/a9m2440/a9m2440.c
index 764cd65..39b5276 100644
--- a/arch/arm/boards/a9m2440/a9m2440.c
+++ b/arch/arm/boards/a9m2440/a9m2440.c
@@ -182,7 +182,7 @@ device_initcall(a9m2440_devices_init);
#ifdef CONFIG_S3C24XX_NAND_BOOT
void __bare_init nand_boot(void)
{
- s3c24x0_nand_load_image((void *)TEXT_BASE, 256 * 1024, 0, 512);
+ s3c24x0_nand_load_image((void *)TEXT_BASE, 256 * 1024, 0);
}
#endif
diff --git a/arch/arm/boards/mini2440/mini2440.c b/arch/arm/boards/mini2440/mini2440.c
index ab309a0..448aa40 100644
--- a/arch/arm/boards/mini2440/mini2440.c
+++ b/arch/arm/boards/mini2440/mini2440.c
@@ -281,7 +281,7 @@ device_initcall(mini2440_devices_init);
#ifdef CONFIG_S3C24XX_NAND_BOOT
void __bare_init nand_boot(void)
{
- s3c24x0_nand_load_image((void *)TEXT_BASE, 256 * 1024, 0, 512);
+ s3c24x0_nand_load_image((void *)TEXT_BASE, 256 * 1024, 0);
}
#endif
diff --git a/arch/arm/mach-s3c24xx/include/mach/s3c24x0-nand.h b/arch/arm/mach-s3c24xx/include/mach/s3c24x0-nand.h
index d06287e..7610b4e 100644
--- a/arch/arm/mach-s3c24xx/include/mach/s3c24x0-nand.h
+++ b/arch/arm/mach-s3c24xx/include/mach/s3c24x0-nand.h
@@ -19,7 +19,7 @@
*/
#ifdef CONFIG_S3C24XX_NAND_BOOT
-extern void s3c24x0_nand_load_image(void*, int, int, int);
+extern void s3c24x0_nand_load_image(void*, int, int);
#endif
/**
diff --git a/drivers/mtd/nand/nand_s3c2410.c b/drivers/mtd/nand/nand_s3c2410.c
index 94c075e..84f6061 100644
--- a/drivers/mtd/nand/nand_s3c2410.c
+++ b/drivers/mtd/nand/nand_s3c2410.c
@@ -492,37 +492,78 @@ static void __nand_boot_init wait_for_completion(void __iomem *host)
;
}
-static void __nand_boot_init nfc_addr(void __iomem *host, uint32_t offs)
+/**
+ * Convert a page offset into a page address for the NAND
+ * @param host Where to write the address to
+ * @param offs Page's offset in the NAND
+ * @param ps Page size (512 or 2048)
+ * @param c Address cycle count (3, 4 or 5)
+ *
+ * Uses the offset of the page to generate an page address into the NAND. This
+ * differs when using a 512 byte or 2048 bytes per page NAND.
+ * The collumn part of the page address to be generated is always forced to '0'.
+ */
+static void __nand_boot_init nfc_addr(void __iomem *host, uint32_t offs,
+ int ps, int c)
{
- send_addr(host, offs & 0xff);
- send_addr(host, (offs >> 9) & 0xff);
- send_addr(host, (offs >> 17) & 0xff);
- send_addr(host, (offs >> 25) & 0xff);
+ send_addr(host, 0); /* collumn part 1 */
+
+ if (ps == 512) {
+ send_addr(host, offs >> 9);
+ send_addr(host, offs >> 17);
+ if (c > 3)
+ send_addr(host, offs >> 25);
+ } else {
+ send_addr(host, 0); /* collumn part 2 */
+ send_addr(host, offs >> 11);
+ send_addr(host, offs >> 19);
+ if (c > 4)
+ send_addr(host, offs >> 27);
+ send_cmd(host, NAND_CMD_READSTART);
+ }
}
/**
- * Load a sequential count of blocks from the NAND into memory
+ * Load a sequential count of pages from the NAND into memory
* @param[out] dest Pointer to target area (in SDRAM)
* @param[in] size Bytes to read from NAND device
* @param[in] page Start page to read from
- * @param[in] pagesize Size of each page in the NAND
*
* This function must be located in the first 4kiB of the barebox image
- * (guess why). When this routine is running the SDRAM is up and running
- * and it runs from the correct address (physical=linked address).
- * TODO Could we access the platform data from the boardfile?
- * Due to it makes no sense this function does not return in case of failure.
+ * (guess why).
*/
-void __nand_boot_init s3c24x0_nand_load_image(void *dest, int size, int page, int pagesize)
+void __nand_boot_init s3c24x0_nand_load_image(void *dest, int size, int page)
{
void __iomem *host = (void __iomem *)S3C24X0_NAND_BASE;
- int i;
+ unsigned pagesize;
+ int i, cycle;
/*
* Reenable the NFC and use the default (but slow) access
* timing or the board specific setting if provided.
*/
enable_nand_controller(host, BOARD_DEFAULT_NAND_TIMING);
+
+ /* use the current NAND hardware configuration */
+ switch (readl(S3C24X0_NAND_BASE) & 0xf) {
+ case 0x6: /* 8 bit, 4 addr cycles, 512 bpp, normal NAND */
+ pagesize = 512;
+ cycle = 4;
+ break;
+ case 0xc: /* 8 bit, 4 addr cycles, 2048 bpp, advanced NAND */
+ pagesize = 2048;
+ cycle = 4;
+ break;
+ case 0xe: /* 8 bit, 5 addr cycles, 2048 bpp, advanced NAND */
+ pagesize = 2048;
+ cycle = 5;
+ break;
+ default:
+ /* we cannot output an error message here :-( */
+ disable_nand_controller(host);
+ return;
+ }
+
enable_cs(host);
/* Reset the NAND device */
@@ -533,7 +574,7 @@ void __nand_boot_init s3c24x0_nand_load_image(void *dest, int size, int page, in
do {
enable_cs(host);
send_cmd(host, NAND_CMD_READ0);
- nfc_addr(host, page * pagesize);
+ nfc_addr(host, page * pagesize, pagesize, cycle);
wait_for_completion(host);
/* copy one page (do *not* use readsb() here!)*/
for (i = 0; i < pagesize; i++)
@@ -555,16 +596,15 @@ void __nand_boot_init s3c24x0_nand_load_image(void *dest, int size, int page, in
static int do_nand_boot_test(struct command *cmdtp, int argc, char *argv[])
{
void *dest;
- int size, pagesize;
+ int size;
if (argc < 3)
return COMMAND_ERROR_USAGE;
dest = (void *)strtoul_suffix(argv[1], NULL, 0);
size = strtoul_suffix(argv[2], NULL, 0);
- pagesize = strtoul_suffix(argv[3], NULL, 0);
- s3c24x0_nand_load_image(dest, size, 0, pagesize);
+ s3c24x0_nand_load_image(dest, size, 0);
/* re-enable the controller again, as this was a test only */
enable_nand_controller((void *)S3C24X0_NAND_BASE,
@@ -574,7 +614,7 @@ static int do_nand_boot_test(struct command *cmdtp, int argc, char *argv[])
}
static const __maybe_unused char cmd_nand_boot_test_help[] =
-"Usage: nand_boot_test <dest> <size> <pagesize>\n";
+"Usage: nand_boot_test <dest> <size>\n";
BAREBOX_CMD_START(nand_boot_test)
.cmd = do_nand_boot_test,
--
1.7.2.3
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 5/6] S3C24xx/NFC: Setup ECC handling in accordance to the kernel
2011-03-12 19:14 [PATCH v3] S3C24xx: NAND management changes to support booting from NAND Juergen Beisert
` (3 preceding siblings ...)
2011-03-12 19:14 ` [PATCH 4/6] S3C24xx/NFC: Consider correct NAND page size for boot Juergen Beisert
@ 2011-03-12 19:14 ` Juergen Beisert
2011-03-12 19:14 ` [PATCH 6/6] S3C24xx/NFC: Add OOB/ECC handling documentation for different NANDs Juergen Beisert
5 siblings, 0 replies; 7+ messages in thread
From: Juergen Beisert @ 2011-03-12 19:14 UTC (permalink / raw)
To: barebox; +Cc: Juergen Beisert
From: Juergen Beisert <juergen@kreuzholzen.de>
Do the same ECC handling and ECC size in barebox than the kernel does.
Currently its done for S3C2440 based systems only, as I have no idea how to
manage it on a S3C2410 based system.
Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
---
drivers/mtd/nand/nand_s3c2410.c | 21 +++++++++++++++++----
1 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/drivers/mtd/nand/nand_s3c2410.c b/drivers/mtd/nand/nand_s3c2410.c
index 84f6061..2ae9861 100644
--- a/drivers/mtd/nand/nand_s3c2410.c
+++ b/drivers/mtd/nand/nand_s3c2410.c
@@ -450,11 +450,24 @@ static int s3c24x0_nand_probe(struct device_d *dev)
chip->ecc.correct = s3c2410_nand_correct_data;
chip->ecc.hwctl = s3c2410_nand_enable_hwecc;
- /* our hardware capabilities */
+ /*
+ * Setup ECC handling in accordance to the kernel
+ * - 1 times 512 bytes with 24 bit ECC for small page
+ * - 8 times 256 bytes with 24 bit ECC each for large page
+ */
chip->ecc.mode = NAND_ECC_HW;
- chip->ecc.size = 512;
- chip->ecc.bytes = 3;
- chip->ecc.layout = &nand_hw_eccoob;
+ chip->ecc.bytes = 3; /* always 24 bit ECC per turn */
+#ifdef CONFIG_CPU_S3C2440
+ if (readl(host->base) & 0x8) {
+ /* large page (2048 bytes per page) */
+ chip->ecc.size = 256;
+ } else
+#endif
+ {
+ /* small page (512 bytes per page) */
+ chip->ecc.size = 512;
+ chip->ecc.layout = &nand_hw_eccoob;
+ }
if (pdata->flash_bbt) {
/* use a flash based bbt */
--
1.7.2.3
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 6/6] S3C24xx/NFC: Add OOB/ECC handling documentation for different NANDs
2011-03-12 19:14 [PATCH v3] S3C24xx: NAND management changes to support booting from NAND Juergen Beisert
` (4 preceding siblings ...)
2011-03-12 19:14 ` [PATCH 5/6] S3C24xx/NFC: Setup ECC handling in accordance to the kernel Juergen Beisert
@ 2011-03-12 19:14 ` Juergen Beisert
5 siblings, 0 replies; 7+ messages in thread
From: Juergen Beisert @ 2011-03-12 19:14 UTC (permalink / raw)
To: barebox; +Cc: Juergen Beisert
From: Juergen Beisert <juergen@kreuzholzen.de>
Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
---
drivers/mtd/nand/nand_s3c2410.c | 21 ++++++++++++++++++---
1 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/drivers/mtd/nand/nand_s3c2410.c b/drivers/mtd/nand/nand_s3c2410.c
index 2ae9861..88e89cd 100644
--- a/drivers/mtd/nand/nand_s3c2410.c
+++ b/drivers/mtd/nand/nand_s3c2410.c
@@ -99,7 +99,7 @@ struct s3c24x0_nand_host {
};
/**
- * oob placement block for use with hardware ecc generation
+ * oob placement block for use with hardware ecc generation on small page
*/
static struct nand_ecclayout nand_hw_eccoob = {
.eccbytes = 3,
@@ -247,13 +247,13 @@ static void s3c2440_nand_write_buf(struct mtd_info *mtd, const uint8_t *buf,
/**
* Check the ECC and try to repair the data if possible
- * @param[in] mtd_info FIXME
+ * @param[in] mtd_info Not used
* @param[inout] dat Pointer to the data buffer that might contain a bit error
* @param[in] read_ecc ECC data from the OOB space
* @param[in] calc_ecc ECC data calculated from the data
* @return 0 no error, 1 repaired error, -1 no way...
*
- * @note: Alsways 512 byte of data
+ * @note: This routine works always on a 24 bit ECC
*/
static int s3c2410_nand_correct_data(struct mtd_info *mtd, uint8_t *dat,
uint8_t *read_ecc, uint8_t *calc_ecc)
@@ -648,3 +648,18 @@ static int __init s3c24x0_nand_init(void)
}
device_initcall(s3c24x0_nand_init);
+
+/**
+ * @file
+ * @brief Support for various kinds of NAND devices
+ *
+ * ECC handling in this driver (in accordance to the current 2.6.38 kernel):
+ * - for small page NANDs it generates 3 ECC bytes out of 512 data bytes
+ * - for large page NANDs it generates 24 ECC bytes out of 2048 data bytes
+ *
+ * As small page NANDs are using 48 bits ECC per default, this driver uses a
+ * local OOB layout description, to shrink it down to 24 bits. This is a bad
+ * idea, but we cannot change it here, as the kernel is using this layout.
+ *
+ * For large page NANDs this driver uses the default layout, as the kernel does.
+ */
--
1.7.2.3
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-03-12 19:15 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-12 19:14 [PATCH v3] S3C24xx: NAND management changes to support booting from NAND Juergen Beisert
2011-03-12 19:14 ` [PATCH 1/6] S3C24xx/NFC: Re-enable the controller after NAND boot test Juergen Beisert
2011-03-12 19:14 ` [PATCH 2/6] S3C24xx/NFC: Remove dead code Juergen Beisert
2011-03-12 19:14 ` [PATCH 3/6] S3C24xx/NFC: Remove double function setup Juergen Beisert
2011-03-12 19:14 ` [PATCH 4/6] S3C24xx/NFC: Consider correct NAND page size for boot Juergen Beisert
2011-03-12 19:14 ` [PATCH 5/6] S3C24xx/NFC: Setup ECC handling in accordance to the kernel Juergen Beisert
2011-03-12 19:14 ` [PATCH 6/6] S3C24xx/NFC: Add OOB/ECC handling documentation for different NANDs Juergen Beisert
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox