summaryrefslogtreecommitdiffstats
path: root/configs/platform-friendlyarm-mini2440/patches/barebox-2011.05.0/0002-Distinguish-the-various-NAND-sizes.patch
diff options
context:
space:
mode:
Diffstat (limited to 'configs/platform-friendlyarm-mini2440/patches/barebox-2011.05.0/0002-Distinguish-the-various-NAND-sizes.patch')
-rw-r--r--configs/platform-friendlyarm-mini2440/patches/barebox-2011.05.0/0002-Distinguish-the-various-NAND-sizes.patch104
1 files changed, 104 insertions, 0 deletions
diff --git a/configs/platform-friendlyarm-mini2440/patches/barebox-2011.05.0/0002-Distinguish-the-various-NAND-sizes.patch b/configs/platform-friendlyarm-mini2440/patches/barebox-2011.05.0/0002-Distinguish-the-various-NAND-sizes.patch
new file mode 100644
index 0000000..62abf28
--- /dev/null
+++ b/configs/platform-friendlyarm-mini2440/patches/barebox-2011.05.0/0002-Distinguish-the-various-NAND-sizes.patch
@@ -0,0 +1,104 @@
+From eb823a34ec4782c7521effb9eb61f8fc0ea8b2e8 Mon Sep 17 00:00:00 2001
+From: Juergen Beisert <juergen@kreuzholzen.de>
+Date: Sun, 2 Nov 2014 16:38:11 +0100
+Subject: [PATCH 02/10] Distinguish the various NAND sizes
+
+Its important to distinguish the NAND size, as the 64 MiB NAND has 16 kiB block
+size and the 128 MiB and above have 128 kiB block sizes.
+
+To make booting from NAND more reliable, we must keep some spare blocks per
+partition when bad blocks are occur. But it makes no sense to reserve 8 blocks
+in the 64 MiB NAND case.
+
+So the NAND layout looks like this:
+
+64 MiB NAND case:
+
+ 256 kiB barebox bootloader (16 blocks, at least 10 used)
+ 64 kiB bootloader's environment (4 blocks, at least one used)
+
+128 MiB NAND case:
+
+ 512 kiB barebox bootloader (4 blocks, at least 2 used)
+ 378 kiB bootloader's environment (3 blocks, at least one used)
+
+Note: Using this patch needs some adaptions in the default environment.
+At least the "nand_parts" variable must be adapted!
+
+Signed-off-by: Juergen Beisert <juergen@kreuzholzen.de>
+---
+ arch/arm/boards/mini2440/mini2440.c | 16 +++++++++++++++-
+ arch/arm/mach-s3c24xx/Kconfig | 22 ++++++++++++++++++++++
+ 2 files changed, 37 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm/boards/mini2440/mini2440.c b/arch/arm/boards/mini2440/mini2440.c
+index 2eb6eba..bf12ea8 100644
+--- a/arch/arm/boards/mini2440/mini2440.c
++++ b/arch/arm/boards/mini2440/mini2440.c
+@@ -259,15 +259,29 @@ static int mini2440_devices_init(void)
+ register_device(&sdram_dev);
+ register_device(&dm9000_dev);
+ #ifdef CONFIG_NAND
++
++#ifdef CONFIG_MINI2440_64
+ /* ----------- add some vital partitions -------- */
+ devfs_del_partition("self_raw");
+ devfs_add_partition("nand0", 0x00000, 0x40000, PARTITION_FIXED, "self_raw");
+ dev_add_bb_dev("self_raw", "self0");
+
+ devfs_del_partition("env_raw");
+- devfs_add_partition("nand0", 0x40000, 0x20000, PARTITION_FIXED, "env_raw");
++ devfs_add_partition("nand0", 0x40000, 0x10000, PARTITION_FIXED, "env_raw");
++ dev_add_bb_dev("env_raw", "env0");
++#endif
++#ifdef CONFIG_MINI2440_128
++ /* ----------- add some vital partitions -------- */
++ devfs_del_partition("self_raw");
++ devfs_add_partition("nand0", 0x00000, 0x80000, PARTITION_FIXED, "self_raw");
++ dev_add_bb_dev("self_raw", "self0");
++
++ devfs_del_partition("env_raw");
++ devfs_add_partition("nand0", 0x80000, 0x60000, PARTITION_FIXED, "env_raw");
+ dev_add_bb_dev("env_raw", "env0");
+ #endif
++
++#endif
+ register_device(&mci_dev);
+ armlinux_add_dram(&sdram_dev);
+ armlinux_set_bootparams((void *)sdram_dev.map_base + 0x100);
+diff --git a/arch/arm/mach-s3c24xx/Kconfig b/arch/arm/mach-s3c24xx/Kconfig
+index 33d230c..fd44683 100644
+--- a/arch/arm/mach-s3c24xx/Kconfig
++++ b/arch/arm/mach-s3c24xx/Kconfig
+@@ -67,6 +67,28 @@ config MACH_A9M2410DEV
+
+ endchoice
+
++choice
++ prompt "mini2440 NAND size"
++ depends on MACH_MINI2440
++
++config MINI2440_64
++ bool
++ prompt "64 MiB NAND"
++ help
++ Select this entry if your mini2440 is shipped with a NAND memory
++ of size 64 MiB. The memory comes with the printing
++ "K9F1208"
++
++config MINI2440_128
++ bool
++ prompt "128 MiB NAND or above"
++ help
++ Select this entry if your mini2440 is shipped with a NAND memory
++ larger than 64 MiB. These memories are coming with the printing
++ "K9F1G08", "K9F2G08" or "K9F8G08"
++
++endchoice
++
+ endmenu
+
+ menu "S3C24X0 Features "
+--
+1.8.1
+