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

Attachment: output_2010-02-23_02-25-33.log
Description: Binary data

Attachment: .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);

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Mipsbook-devel mailing list
Mipsbook-devel@linuxtogo.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/mipsbook-devel

Reply via email to