From patchwork Thu Jan 16 08:31:56 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Kuo-Jung Su X-Patchwork-Id: 311633 X-Patchwork-Delegate: albert.aribaud@free.fr Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 688A82C009A for ; Thu, 16 Jan 2014 19:35:57 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 18D564AAD4; Thu, 16 Jan 2014 09:35:56 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Jvm1stxPHijU; Thu, 16 Jan 2014 09:35:55 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 6FAB34AB42; Thu, 16 Jan 2014 09:35:53 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id A3B394AB64 for ; Thu, 16 Jan 2014 09:35:50 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CfYGWb+fQZuD for ; Thu, 16 Jan 2014 09:35:46 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-pb0-f52.google.com (mail-pb0-f52.google.com [209.85.160.52]) by theia.denx.de (Postfix) with ESMTPS id 7F7BE4AC4D for ; Thu, 16 Jan 2014 09:35:26 +0100 (CET) Received: by mail-pb0-f52.google.com with SMTP id jt11so288488pbb.25 for ; Thu, 16 Jan 2014 00:35:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references:mime-version:content-type :content-transfer-encoding; bh=Krqw2CmTjpsK/BsqzhJluuTEAp09qZ9ua8EVUuYF0Xw=; b=AmiK70Tou07FA4MYpUGsPI3HonFCnrB0EVRvdX/oHxtQZNFPIcKMu4jgFe2yvIPNTT m/2sPd2wfHp5zTnRU0rTe016GPMFe0QrOfCh2Y2dilx4SWLNfEqgBS+6FM2wcDWQlJ+O 6YORUTDQm0QlxZWJiLAeax3UHycTUXvJ20Gj4V92wVnhZYmZQRlzK74kIrNcxYuUMEKc 2/jTTQE7l8SEMFRi4WQRLXWI29Le6Q/jkZ3s1iiJatCg11k7R32TX6ETeFEuVpZ2Palb pwpwaRlGC8J/Tj1l+d3V+vY6yIUSYdFAmHmwC3L4vJwVR3+Viw4x+fPkhUeSEBIC0riJ 2q2g== X-Received: by 10.68.189.5 with SMTP id ge5mr8467537pbc.42.1389861324593; Thu, 16 Jan 2014 00:35:24 -0800 (PST) Received: from localhost ([42.71.217.34]) by mx.google.com with ESMTPSA id yd4sm13382056pbc.13.2014.01.16.00.35.16 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Thu, 16 Jan 2014 00:35:24 -0800 (PST) From: Kuo-Jung Su To: u-boot@lists.denx.de Date: Thu, 16 Jan 2014 16:31:56 +0800 Message-Id: <1389861116-3728-8-git-send-email-dantesu@gmail.com> X-Mailer: git-send-email 1.8.4.msysgit.0 In-Reply-To: <1389861116-3728-1-git-send-email-dantesu@gmail.com> References: <1389861116-3728-1-git-send-email-dantesu@gmail.com> In-Reply-To: <1364540788-13943-1-git-send-email-dantesu@gmail.com> References: <1364540788-13943-1-git-send-email-dantesu@gmail.com> MIME-Version: 1.0 Cc: Kuo-Jung Su Subject: [U-Boot] [PATCH v9 7/7] arm: faraday: add Faraday Virtual Machine support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de From: Kuo-Jung Su Faraday Virtual Machine (FVM) is a QEMU based emulator which is designed for early stage software development (e.g., IPL, SPL). Please check the link bellow for details: https://github.com/dantesu1218/qemu/blob/qemu-1.5.1/hw/arm/faraday_fvm.c Signed-off-by: Kuo-Jung Su CC: Albert Aribaud --- Changes for v9: - Initial commit arch/arm/cpu/faraday/fvm/Makefile | 8 ++++ arch/arm/include/asm/arch-fvm/hardware.h | 76 ++++++++++++++++++++++++++++++ board/faraday/fvm/Makefile | 9 ++++ board/faraday/fvm/board.c | 60 +++++++++++++++++++++++ board/faraday/fvm/clock.c | 49 +++++++++++++++++++ board/faraday/fvm/lowlevel_init.S | 15 ++++++ boards.cfg | 1 + include/configs/fvm.h | 61 ++++++++++++++++++++++++ 8 files changed, 279 insertions(+) create mode 100644 arch/arm/cpu/faraday/fvm/Makefile create mode 100644 arch/arm/include/asm/arch-fvm/hardware.h create mode 100644 board/faraday/fvm/Makefile create mode 100644 board/faraday/fvm/board.c create mode 100644 board/faraday/fvm/clock.c create mode 100644 board/faraday/fvm/lowlevel_init.S create mode 100644 include/configs/fvm.h -- 1.7.9.5 diff --git a/arch/arm/cpu/faraday/fvm/Makefile b/arch/arm/cpu/faraday/fvm/Makefile new file mode 100644 index 0000000..1081c06 --- /dev/null +++ b/arch/arm/cpu/faraday/fvm/Makefile @@ -0,0 +1,8 @@ +# +# (C) Copyright 2000-2003 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y := diff --git a/arch/arm/include/asm/arch-fvm/hardware.h b/arch/arm/include/asm/arch-fvm/hardware.h new file mode 100644 index 0000000..e362984 --- /dev/null +++ b/arch/arm/include/asm/arch-fvm/hardware.h @@ -0,0 +1,76 @@ +/* + * arch/arm/include/asm/arch-fvm/hardware.h + * + * (C) Copyright 2013 + * Faraday Technology Corporation. + * Kuo-Jung Su + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __ASM_ARCH_HARDWARE_H +#define __ASM_ARCH_HARDWARE_H + +#include + +#define CONFIG_DRAM_BASE 0x10000000 + +#define CONFIG_SRAM_BASE 0xA0000000 +#define CONFIG_SRAM_SIZE 0x00020000 + +#define CONFIG_SYSC_BASE 0x90f00000 +#define CONFIG_SYSC_IRQ 15 + +#define CONFIG_FTINTC030_BASE 0x91000000 + +#define CONFIG_FTTMR010_BASE 0x90200000 +#define CONFIG_FTTMR010_IRQ 1 + +#define CONFIG_FTUART010_BASE0 0x90000000 +#define CONFIG_FTUART010_IRQ0 2 +#define CONFIG_FTUART010_BASE1 0x90100000 +#define CONFIG_FTUART010_IRQ1 3 +#define CONFIG_FTUART010_BASE CONFIG_FTUART010_BASE0 + +#define CONFIG_DDRC_BASE 0x90300000 + +#define CONFIG_FTI2C010_BASE 0x90400000 +#define CONFIG_FTI2C010_IRQ 4 + +#define CONFIG_FTSSP010_BASE 0x90500000 +#define CONFIG_FTSSP010_IRQ 5 + +#define CONFIG_FTWDT010_BASE 0x90600000 +#define CONFIG_FTWDT010_IRQ 6 + +#define CONFIG_FTRTC011_BASE 0x90700000 +#define CONFIG_FTRTC011_IRQ 7 + +#define CONFIG_FTTSC010_BASE 0x90800000 +#define CONFIG_FTTSC010_IRQ 8 + +#define CONFIG_FTAPBBRG020_BASE 0x91100000 +#define CONFIG_FTAPBBRG020_IRQ 16 + +#define CONFIG_FTDMAC020_BASE 0x91200000 +#define CONFIG_FTDMAC020_IRQ 17 + +#define CONFIG_FTMAC110_BASE 0x91300000 +#define CONFIG_FTMAC110_IRQ 18 + +#define CONFIG_FTSPI020_BASE 0x91400000 +#define CONFIG_FTSPI020_IRQ 19 + +#define CONFIG_FTNANDC021_BASE 0x91500000 +#define CONFIG_FTNANDC021_IRQ 20 + +#define CONFIG_FTSDC021_BASE 0x91600000 +#define CONFIG_FTSDC021_IRQ 21 + +#define CONFIG_FOTG210_BASE 0x91700000 +#define CONFIG_FOTG210_IRQ 22 + +#define CONFIG_FTLCDC200_BASE 0x91800000 +#define CONFIG_FTLCDC200_IRQ 23 + +#endif /* EOF */ diff --git a/board/faraday/fvm/Makefile b/board/faraday/fvm/Makefile new file mode 100644 index 0000000..42fef70 --- /dev/null +++ b/board/faraday/fvm/Makefile @@ -0,0 +1,9 @@ +# +# (C) Copyright 2000-2006 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y := board.o clock.o +obj-y += lowlevel_init.o diff --git a/board/faraday/fvm/board.c b/board/faraday/fvm/board.c new file mode 100644 index 0000000..6c2b03a --- /dev/null +++ b/board/faraday/fvm/board.c @@ -0,0 +1,60 @@ +/* + * (C) Copyright 2013 + * Faraday Technology Corporation. + * Kuo-Jung Su + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include + +#include + +DECLARE_GLOBAL_DATA_PTR; + +/* + * Miscellaneous platform dependent initialisations + */ +int board_early_init_f(void) +{ + gd->arch.timer_rate_hz = clk_get_rate("APB"); + return 0; +} + +int board_init(void) +{ + gd->bd->bi_arch_number = CONFIG_MACH_TYPE; + gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; + return 0; +} + +int dram_init(void) +{ + gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE; + gd->bd->bi_dram[0].size = CONFIG_SYS_SDRAM_SIZE; + gd->ram_size = CONFIG_SYS_SDRAM_SIZE; + return 0; +} + +int board_eth_init(bd_t *bd) +{ +#ifdef CONFIG_FTMAC110 + return ftmac110_initialize(bd); +#else + return 0; +#endif +} + +int board_mmc_init(bd_t *bis) +{ +#ifdef CONFIG_FTSDC021 + return ftsdc021_sdhci_init(0); +#else + return 0; +#endif +} diff --git a/board/faraday/fvm/clock.c b/board/faraday/fvm/clock.c new file mode 100644 index 0000000..f5a759d --- /dev/null +++ b/board/faraday/fvm/clock.c @@ -0,0 +1,49 @@ +/* + * (C) Copyright 2013 + * Faraday Technology Corporation. + * Kuo-Jung Su + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +static inline ulong clk_get_rate_ahb(void) +{ + return 50000000; /* 50MHz */ +} + +static inline ulong clk_get_rate_apb(void) +{ + return 50000000; /* 50MHz */ +} + +static inline ulong clk_get_rate_cpu(void) +{ + return 50000000; /* 50MHz */ +} + +ulong clk_get_rate(const char *id) +{ + ulong ret = 0; + + if (!strcmp(id, "AHB")) + ret = clk_get_rate_ahb(); + else if (!strcmp(id, "APB")) + ret = clk_get_rate_apb(); + else if (!strcmp(id, "CPU")) + ret = clk_get_rate_cpu(); + else if (!strcmp(id, "I2C")) + ret = clk_get_rate_apb(); + else if (!strcmp(id, "SSP")) + ret = clk_get_rate_apb(); + else if (!strcmp(id, "SPI")) + ret = clk_get_rate_ahb(); + else if (!strcmp(id, "MMC") || !strcmp(id, "SDC")) + ret = clk_get_rate_ahb(); + + return ret; +} diff --git a/board/faraday/fvm/lowlevel_init.S b/board/faraday/fvm/lowlevel_init.S new file mode 100644 index 0000000..cbc006d --- /dev/null +++ b/board/faraday/fvm/lowlevel_init.S @@ -0,0 +1,15 @@ +/* + * (C) Copyright 2013 + * Faraday Technology Corporation. + * Kuo-Jung Su + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include + +/* Set up the platform, once the cpu has been initialized */ +.globl lowlevel_init +lowlevel_init: + mov pc,lr diff --git a/boards.cfg b/boards.cfg index a998452..089f539 100644 --- a/boards.cfg +++ b/boards.cfg @@ -60,6 +60,7 @@ Active arm arm920t - armltd integrator Active arm arm920t - armltd integrator integratorcp_cm920t integratorcp:CM920T Linus Walleij Active arm arm920t a320 faraday - a320evb - Po-Yu Chuang Active arm faraday a369 faraday a369evb a369evb a369 Kuo-Jung Su +Active arm faraday fvm faraday - fvm - Kuo-Jung Su Active arm arm920t at91 atmel at91rm9200ek at91rm9200ek at91rm9200ek Andreas Bießmann Active arm arm920t at91 atmel at91rm9200ek at91rm9200ek_ram at91rm9200ek:RAMBOOT Andreas Bießmann Active arm arm920t at91 BuS eb_cpux9k2 eb_cpux9k2 eb_cpux9k2 Jens Scharsig diff --git a/include/configs/fvm.h b/include/configs/fvm.h new file mode 100644 index 0000000..10522b2 --- /dev/null +++ b/include/configs/fvm.h @@ -0,0 +1,61 @@ +/* + * (C) Copyright 2013 + * Faraday Technology Corporation. + * Kuo-Jung Su + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#include + +/* Disable MMU/D-CACHE */ +#define CONFIG_SYS_DCACHE_OFF + +/* Memory Configuration */ +#define CONFIG_NR_DRAM_BANKS 1 +#define CONFIG_SYS_SDRAM_BASE 0x10000000 +#define CONFIG_SYS_SDRAM_SIZE SZ_256M + +#define CONFIG_SYS_MALLOC_LEN SZ_2M +#define CONFIG_SYS_TEXT_BASE 0x10800000 + +/* Timer */ +#define CONFIG_FTTMR010 + +/* Serial (UART) */ +#define CONFIG_FTUART010 +#define CONFIG_FTUART010_CLK 18432000 +#define CONFIG_BAUDRATE 38400 + +/* NIC */ +#define CONFIG_FTMAC110 + +/* I2C */ +#define CONFIG_FTI2C010 +#define CONFIG_ENV_EEPROM_IS_ON_I2C + +/* MMC/SD */ +#define CONFIG_FTSDC021 + +/* NOR flash */ +#define PHYS_FLASH_SIZE SZ_64M +#define CONFIG_SYS_FLASH_BASE 0x80000000 +#define CONFIG_SYS_FLASH_CFI_WIDTH FLASH_CFI_16BIT +#define CONFIG_SYS_MAX_FLASH_BANKS 1 +#define CONFIG_SYS_MAX_FLASH_SECT 1024 + +/* USB */ +#define CONFIG_USB_MAX_CONTROLLER_COUNT 1 +#define CONFIG_USB_EHCI_BASE_LIST { CONFIG_FOTG210_BASE } + +/* Environment */ +#define CONFIG_ENV_IS_NOWHERE +#define CONFIG_ENV_SIZE SZ_64K + +/* Faraday common configuration */ +#include "faraday-common.h" + +#endif /* EOF */