Hi, I've been trying to get the qi kernel [1] running on the mipsbook, I decided to use the N526 eBook reader (arch/mips/jz4740/board-n526.c) as a base as it is little is less complex than the NanoNote and my first goal was to see it booting up to some point. I've changed the partition layout to the one described in [2] and did't care about the gpio keyboard for now, I've also added the yaffs2 fs as described in [3]. However, as I compiled the uImage with the toolchain created by buildroot and flashed it on the device, it failed on loading the kernel. I've attached the log (note the binary gibberish after 'Starting kernel ...') as well as my config (tried to get it as small as possible to begin with, as I thought the problem originated in an oversized uImage). I have noticed that .busy_gpio in jz_nand_platform_data is set to 94, which is GPIO_PWM0 in board-minipc.h on your port. I could however not find any definition for a busy NAND pin, so the problem might already be there. I also was unable to locate the ecclayout. I hope you can give me some suggestions.
Regards, Benjamin [1] http://projects.qi-hardware.com/index.php/p/qi-kernel/source/tree/master/ [2] http://projects.kwaak.net/twiki/pub/Epc700/KernelPort26/basic-diff.diff [3] http://www.yaffs.net/howto-incorporate-yaffs
output_2010-02-23_02-25-33.log
Description: Binary data
.config.bz2
Description: application/bzip
/* * based on board-n526.c by * Copyright (C) 2009, Lars-Peter Clausen <l...@metafoo.de> * * Skytone Alpha 400 Netbook support * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. * */ #include <linux/kernel.h> #include <linux/init.h> #include <linux/gpio.h> #include <asm/mach-jz4740/platform.h> #include <linux/mtd/jz4740_nand.h> #include <linux/jz4740_fb.h> #include <linux/power_supply.h> #include <linux/power/jz4740-battery.h> #include <linux/mmc/jz4740_mmc.h> /* NAND */ static struct nand_ecclayout a400_ecclayout = { .eccbytes = 36, .eccpos = { 6, 7, 8, 9, 10, 11, 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}, .oobfree = { {.offset = 2, .length = 4}, {.offset = 42, .length = 22}} }; static struct mtd_partition a400_partitions[] = { { .name = "NAND BOOT partition", .offset = 0 * 0x100000, .size = 1 * 0x100000, }, { .name = "NAND KERNEL partition", .offset = 1 * 0x100000, .size = 3 * 0x100000, }, { name: "mac partition", .offset = 4 * 0x100000, .size = 1 * 0x100000 }, { name: "mini rootfs partition", .offset = 5 * 0x100000, .size = 5 * 0x100000 }, { name: "yaffs2 rootfs partition", .offset = 10 * 0x100000, .size = 502 * 0x100000 }, }; static struct jz_nand_platform_data a400_nand_pdata = { .ecc_layout = &a400_ecclayout, .partitions = a400_partitions, .num_partitions = ARRAY_SIZE(a400_partitions), .busy_gpio = 94, /* ?? would be GPIO_PWM0 */ }; /* Battery */ /*static struct jz_batt_info a400_battery_pdata = { .dc_dect_gpio = GPIO_DC_DETE_N, .usb_dect_gpio = GPIO_USB_DETE, .charg_stat_gpio = GPIO_CHARG_STAT_N, .min_voltag = 6000000, // ?? .max_voltag = 7400000, .batt_tech = POWER_SUPPLY_TECHNOLOGY_LIPO, };*/ static struct jz4740_mmc_platform_data a400_mmc_pdata = { .gpio_card_detect = JZ_GPIO_PORTD(7), .card_detect_active_low = 1, .gpio_read_only = -1, .gpio_power = JZ_GPIO_PORTD(17), .power_active_low = 1, }; static struct gpio_led a400_leds[] = { { .name = "a400:green:power", .gpio = JZ_GPIO_PORTD(92), /* GPIO_LED_EN */ .default_state = LEDS_GPIO_DEFSTATE_ON, } }; static struct gpio_led_platform_data a400_leds_pdata = { .leds = a400_leds, .num_leds = ARRAY_SIZE(a400_leds), }; static struct platform_device a400_leds_device = { .name = "leds-gpio", .id = -1, .dev = { .platform_data = &a400_leds_pdata, }, }; static struct platform_device *jz_platform_devices[] __initdata = { &jz4740_usb_ohci_device, &jz4740_usb_gdt_device, &jz4740_mmc_device, &jz4740_nand_device, &jz4740_i2s_device, &jz4740_codec_device, &jz4740_rtc_device, &a400_leds_device, }; static void __init board_gpio_setup(void) { /* We only need to enable/disable pullup here for pins used in generic * drivers. Everything else is done by the drivers themselfs. */ jz_gpio_disable_pullup(JZ_GPIO_PORTD(17)); jz_gpio_enable_pullup(JZ_GPIO_PORTD(7)); } static int __init a400_init_platform_devices(void) { jz4740_nand_device.dev.platform_data = &a400_nand_pdata; /* jz4740_battery_device.dev.platform_data = &a400_battery_pdata;*/ jz4740_mmc_device.dev.platform_data = &a400_mmc_pdata; return platform_add_devices(jz_platform_devices, ARRAY_SIZE(jz_platform_devices)); } extern int jz_gpiolib_init(void); extern int jz_init_clocks(unsigned long extal); static int __init a400_board_setup(void) { if (jz_gpiolib_init()) panic("Failed to initalize jz gpio\n"); jz_init_clocks(12000000); board_gpio_setup(); if (a400_init_platform_devices()) panic("Failed to initalize platform devices\n"); return 0; } arch_initcall(a400_board_setup);
signature.asc
Description: PGP signature
_______________________________________________ Mipsbook-devel mailing list Mipsbook-devel@linuxtogo.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/mipsbook-devel