1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-25 06:36:15 +02:00
openwrt-xburst/target/linux/xburst/patches-2.6.31/220-add-2gb-nand-support.patch
Xiangfu Liu 5b983412c7 add-2gb-nand-support
Signed-off-by: Xiangfu Liu <xiangfu.z@gmail.com>
2009-10-28 03:13:20 +08:00

167 lines
4.4 KiB
Diff

diff --git a/arch/mips/jz4740/platform.c b/arch/mips/jz4740/platform.c
index 6a129e7..3c069d8 100644
--- a/arch/mips/jz4740/platform.c
+++ b/arch/mips/jz4740/platform.c
@@ -164,6 +164,45 @@ static struct resource jz_nand_resources[] = {
},
};
+#ifdef QI_LB60_2GB_NAND
+static struct nand_ecclayout qi_lb60_ecclayout = {
+ .eccbytes = 72,
+ .eccpos = {
+ 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83},
+ .oobfree = {
+ {.offset = 2,
+ .length = 10},
+ {.offset = 84,
+ .length = 44}}
+};
+
+static struct mtd_partition qi_lb60_partitions[] = {
+ { .name = "NAND BOOT partition",
+ .offset = 0 * 0x100000,
+ .size = 4 * 0x100000,
+ },
+ { .name = "NAND KERNEL partition",
+ .offset = 4 * 0x100000,
+ .size = 4 * 0x100000,
+ },
+ { .name = "NAND ROOTFS partition",
+ .offset = 8 * 0x100000,
+ .size = 504 * 0x100000,
+ },
+ { .name = "NAND DATA partition",
+ .offset = 512 * 0x100000,
+ .size = (512 + 1024) * 0x100000,
+ },
+};
+#else
static struct nand_ecclayout qi_lb60_ecclayout = {
.eccbytes = 36,
.eccpos = {
@@ -180,29 +219,30 @@ static struct nand_ecclayout qi_lb60_ecclayout = {
};
static struct mtd_partition qi_lb60_partitions[] = {
- { .name = "NAND BOOT partition",
- .offset = 0 * 0x100000,
- .size = 4 * 0x100000,
- },
- { .name = "NAND KERNEL partition",
- .offset = 4 * 0x100000,
- .size = 4 * 0x100000,
- },
- { .name = "NAND ROOTFS partition",
- .offset = 8 * 0x100000,
- .size = 20 * 0x100000,
- },
- { .name = "NAND DATA partition",
- .offset = 100 * 0x100000,
- .size = 20 * 0x100000,
- },
+ { .name = "NAND BOOT partition",
+ .offset = 0 * 0x100000,
+ .size = 4 * 0x100000,
+ },
+ { .name = "NAND KERNEL partition",
+ .offset = 4 * 0x100000,
+ .size = 4 * 0x100000,
+ },
+ { .name = "NAND ROOTFS partition",
+ .offset = 8 * 0x100000,
+ .size = 504 * 0x100000,
+ },
+ { .name = "NAND DATA partition",
+ .offset = 512 * 0x100000,
+ .size = 512 * 0x100000,
+ },
};
+#endif /* QI_LB60_2GB_NAND */
static struct jz_nand_platform_data jz_nand_platform_data = {
.num_partitions = ARRAY_SIZE(qi_lb60_partitions),
.partitions = qi_lb60_partitions,
.ecc_layout = &qi_lb60_ecclayout,
- .busy_gpio = 94,
+ .busy_gpio = 94,
};
static struct platform_device jz_nand_device = {
@@ -213,7 +253,9 @@ static struct platform_device jz_nand_device = {
.platform_data = &jz_nand_platform_data,
}
};
-#define KEEP_UART_ALIVE
+/* #define KEEP_UART_ALIVE
+ * don't define this. the keyboard and keyboard both work
+ */
#define KEY_QI_QI KEY_F13
#define KEY_QI_UPRED KEY_F14
@@ -286,8 +328,8 @@ static const uint32_t qi_lb60_keymap[] = {
};
static const struct matrix_keymap_data qi_lb60_keymap_data = {
- .keymap = qi_lb60_keymap,
- .keymap_size = ARRAY_SIZE(qi_lb60_keymap),
+ .keymap = qi_lb60_keymap,
+ .keymap_size = ARRAY_SIZE(qi_lb60_keymap),
};
static const unsigned int qi_lb60_keypad_cols[] = {
@@ -297,12 +339,12 @@ static const unsigned int qi_lb60_keypad_cols[] = {
static const unsigned int qi_lb60_keypad_rows[] = {
114, 115, 116, 117, 118, 119, 120,
#ifndef KEEP_UART_ALIVE
- 122,
+ 122,
#endif
};
static struct matrix_keypad_platform_data qi_lb60_pdata = {
- .keymap_data = &qi_lb60_keymap_data,
+ .keymap_data = &qi_lb60_keymap_data,
.col_gpios = qi_lb60_keypad_cols,
.row_gpios = qi_lb60_keypad_rows,
.num_col_gpios = ARRAY_SIZE(qi_lb60_keypad_cols),
@@ -310,7 +352,7 @@ static struct matrix_keypad_platform_data qi_lb60_pdata = {
.col_scan_delay_us = 10,
.debounce_ms = 10,
.wakeup = 1,
- .active_low = 1,
+ .active_low = 1,
};
static struct platform_device qi_lb60_keypad = {
@@ -375,7 +417,7 @@ static struct platform_device *jz_platform_devices[] __initdata = {
&jz_mmc_device,
&jz_nand_device,
&jz_i2c_device,
- &qi_lb60_keypad,
+ &qi_lb60_keypad,
&qi_lb60_fb,
};
diff --git a/include/mtd/mtd-abi.h b/include/mtd/mtd-abi.h
index f86db5a..b19fffa 100644
--- a/include/mtd/mtd-abi.h
+++ b/include/mtd/mtd-abi.h
@@ -135,7 +135,7 @@ struct nand_oobfree {
*/
struct nand_ecclayout {
__u32 eccbytes;
- __u32 eccpos[64];
+ __u32 eccpos[72];
__u32 oobavail;
struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
};