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]; };