www.pudn.com > mizi_vivi.rar > suns.c


/*
 * vivi/arch/sa1100/suns.c:
 *
 * This code is GPL
 *
 * Author: Janghoon Lyu 
 * Date  : $Date: 2003/02/13 03:10:54 $
 *
 * $Revision: 1.10 $
 * 
 */

#include "config.h"
#include "machine.h"
#include "hardware.h"
#include "priv_data.h"
#include "command.h"
#include "mtd/map.h"
#include "boot_kernel.h"
#include "vivi.h"
#include "time.h"

#define KILO(x) ((x)<<10)

// 2 chips, 32M flash config.
#define SUNS_FLASH_SIZE	SZ_32M

#define E_BLOCK(x)	(KILO(256) * x)

#define VIVI_SIZE	E_BLOCK(1) // 256K
#define PARAM_SIZE	E_BLOCK(1) // 256K
#define KERNEL_SIZE	E_BLOCK(3) // 768K
#define ROOT_SIZE	E_BLOCK(5) // 1M + 512K

#define VIVI_OFFSET	(0)
#define PARAM_OFFSET	(VIVI_OFFSET + VIVI_SIZE)
#define KERNEL_OFFSET	(PARAM_OFFSET + PARAM_SIZE)
#define ROOT_OFFSET		(KERNEL_OFFSET + KERNEL_SIZE)

#define USR_OFFSET		(ROOT_OFFSET + ROOT_SIZE)
#define USR_SIZE		(SUNS_FLASH_SIZE - USR_OFFSET)

mtd_partition_t default_mtd_partitions[] = {
	{
		name:		"vivi",
		offset:		VIVI_OFFSET,
		size:		VIVI_SIZE,
		flag:		MF_LOCKED
	}, {
		name:		"param",
		offset:		PARAM_OFFSET,
		size:		PARAM_SIZE,
		flag:		0
	}, {
		name:		"kernel",
		offset:		KERNEL_OFFSET,
		size:		KERNEL_SIZE,
		flag:		0
	}, {
		name:		"root",
		offset:		ROOT_OFFSET,
		size:		ROOT_SIZE,
		flag:		0
	}, {
		name:		"usr",
		offset:		USR_OFFSET,
		size:		USR_SIZE,
		flag:		MF_JFFS2
	} 
};

int default_nb_part = ARRAY_SIZE(default_mtd_partitions);

vivi_parameter_t default_vivi_parameters[] = {
	{ "mach_type",			MACH_TYPE,	NULL }, 
	{ "media_type",			MT_NOR_FLASH,	NULL },
	{ "boot_mem_base",		0xC0000000,	NULL }, 
	{ "baudrate",			UART_BAUD_RATE,	NULL }, 
	{ "xmodem",			1,		NULL },
	{ "xmodem_one_nak",		0,		NULL },
	{ "xmodem_initial_timeout",	300000,		NULL },
	{ "xmodem_timeout",		10000000,	NULL },
	{ "boot_delay",			0x1000000,	NULL }
};
int default_nb_params = ARRAY_SIZE(default_vivi_parameters);

char linux_cmd[] = "noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySA0";

void set_vpp(struct map_info *map, int vpp)
{
	SA1100_GPIO_GPDR_SET(0x00200000);
	if (vpp) {
		SA1100_GPIO_GPSR_SET(0x00200000);
    }   
    else {
		SA1100_GPIO_GPCR_SET(0x00200000);
    }
}

void set_gpios(void)
{
}

int board_init(void)
{
	init_time();
	set_gpios();

	return 0;
}

int misc(void)
{
	return 0;
}