--- lf1000.c.original 2010-07-15 20:33:23.000000000 -0400
+++ lf1000.c 2010-07-15 22:01:10.000000000 -0400
@@ -81,9 +81,28 @@
const char *part_probes[] = { "cmdlinepart", NULL };
#endif
+//NIRV START
+
+#define CONFIG_NAND_LF1000_P0_SIZE 0x00020000
+#define CONFIG_NAND_LF1000_P1_SIZE 0x000E0000
+#define CONFIG_NAND_LF1000_P2_SIZE 0x00100000
+#define CONFIG_NAND_LF1000_P3_SIZE 0x00200000
+#define CONFIG_NAND_LF1000_P4_SIZE 0x00E00000
+#define CONFIG_NAND_LF1000_P5_SIZE 0x00200000
+#define CONFIG_NAND_LF1000_P6_SIZE 0x00E00000
+#define CONFIG_NAND_LF1000_P7_SIZE 0x0DE00000
+
+
+/*
+ * Define partitions for flash devices
+ */
+
+#if defined (CONFIG_MACH_ME_MP2530F)
+#define LF_ERASE_BLK 0x4000
+#else
/* All other boards have big erase blocks */
-/* TODO: FIXME: when MLC NAND is used, this ought to be 0x40000 */
-#define LF_ERASE_BLK 0x40000
+#define LF_ERASE_BLK 0x20000
+#endif
/* Just shortening the names for clearer code */
#define LF_P0 (CONFIG_NAND_LF1000_P0_SIZE)
@@ -91,6 +110,76 @@
#define LF_P2 (CONFIG_NAND_LF1000_P2_SIZE)
#define LF_P3 (CONFIG_NAND_LF1000_P3_SIZE)
#define LF_P4 (CONFIG_NAND_LF1000_P4_SIZE)
+#define LF_P5 (CONFIG_NAND_LF1000_P5_SIZE)
+#define LF_P6 (CONFIG_NAND_LF1000_P6_SIZE)
+#define LF_P7 (CONFIG_NAND_LF1000_P7_SIZE)
+
+#if ((LF_P0 % LF_ERASE_BLK) || (LF_P1 % LF_ERASE_BLK) || \
+ (LF_P2 % LF_ERASE_BLK) || (LF_P3 % LF_ERASE_BLK) || \
+ (LF_P4 % LF_ERASE_BLK) || (LF_P5 % LF_ERASE_BLK) || \
+ (LF_P6 % LF_ERASE_BLK) || (LF_P7 % LF_ERASE_BLK))
+#error "NAND partitions must be multiple of erase block."
+#endif
+
+static struct mtd_partition partition_info[] = {
+ { .name = "LF1000_uniboot",
+ .offset = 0,
+ .size = LF_P0},
+ { .name = "Atomic_Boot_Flags",
+ .offset = LF_P0,
+ .size = LF_P1 },
+ { .name = "Manufacturing_Data",
+ .offset = LF_P0 + LF_P1,
+ .size = LF_P2},
+ { .name = "Kernel0",
+ .offset = LF_P0 + LF_P1 + LF_P2,
+ .size = LF_P3 },
+ { .name = "Linux_RFS0",
+ .offset = LF_P0 + LF_P1 + LF_P2 + LF_P3,
+ .size = LF_P4 },
+ { .name = "Kernel1",
+ .offset = LF_P0 + LF_P1 + LF_P2 + LF_P3 + LF_P4,
+ .size = LF_P5 },
+ { .name = "Linux_RFS1",
+ .offset = LF_P0 + LF_P1 + LF_P2 + LF_P3 + LF_P4 + LF_P5,
+ .size = LF_P6 },
+ { .name = "Brio",
+ .offset = LF_P0 + LF_P1 + LF_P2 + LF_P3 + LF_P4 + LF_P5 + LF_P6,
+ .size = LF_P7 },
+ { .name = "EXT",
+ .offset = LF_P0 + LF_P1 + LF_P2 + LF_P3 + LF_P4 + LF_P5 + LF_P6 + LF_P7,
+ .size = MTDPART_SIZ_FULL },
+};
+
+static struct mtd_partition partition_info_cart[] = {
+ { .name = "Cartridge",
+ .offset = 0,
+ .size = MTDPART_SIZ_FULL },
+};
+
+#undef LF_P0
+#undef LF_P1
+#undef LF_P2
+#undef LF_P3
+#undef LF_P4
+#undef LF_P5
+#undef LF_P6
+#undef LF_P7
+#undef LF_ERASE_BLK
+
+//NIRV-END
+
+/* All other boards have big erase blocks */
+/* TODO: FIXME: when MLC NAND is used, this ought to be 0x40000 */
+
+//#define LF_ERASE_BLK 0x40000
+
+/* Just shortening the names for clearer code */
+/*#define LF_P0 (CONFIG_NAND_LF1000_P0_SIZE)
+#define LF_P1 (CONFIG_NAND_LF1000_P1_SIZE)
+#define LF_P2 (CONFIG_NAND_LF1000_P2_SIZE)
+#define LF_P3 (CONFIG_NAND_LF1000_P3_SIZE)
+#define LF_P4 (CONFIG_NAND_LF1000_P4_SIZE)
#if ((LF_P0 % LF_ERASE_BLK) || (LF_P1 % LF_ERASE_BLK) || \
(LF_P2 % LF_ERASE_BLK) || (LF_P3 % LF_ERASE_BLK) || \
@@ -134,6 +223,13 @@
#undef LF_P3
#undef LF_P4
#undef LF_ERASE_BLK
+*/
+
+
+
+
+
+
/* Ask gpio driver, which sampled this at boot time. */
static u8 get_cart_type(void)
@@ -998,8 +1094,8 @@
if (base_parts_nb == 0) {
if (gpio_get_boot_source_config() == SCRATCH_BOOT_SOURCE_USB)
{
- base_parts = partition_info_recovery;
- base_parts_nb = ARRAY_SIZE(partition_info_recovery);
+ // base_parts = partition_info_recovery;
+ // base_parts_nb = ARRAY_SIZE(partition_info_recovery);
}
else
{