This is still a non-generic board. Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com> Cc: Po-Yu Chuang <ratbert@faraday-tech.com> Acked-by: Marek Vasut <marex@denx.de>master
parent
a2f39e830e
commit
29fc6f2492
@ -1,9 +0,0 @@ |
||||
#
|
||||
# (C) Copyright 2000-2006
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
obj-y += reset.o
|
||||
obj-y += timer.o
|
@ -1,10 +0,0 @@ |
||||
/* |
||||
* (C) Copyright 2009 Faraday Technology |
||||
* Po-Yu Chuang <ratbert@faraday-tech.com>
|
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
.global reset_cpu
|
||||
reset_cpu: |
||||
b reset_cpu |
@ -1,118 +0,0 @@ |
||||
/*
|
||||
* (C) Copyright 2009 Faraday Technology |
||||
* Po-Yu Chuang <ratbert@faraday-tech.com> |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <div64.h> |
||||
#include <asm/io.h> |
||||
#include <faraday/ftpmu010.h> |
||||
#include <faraday/fttmr010.h> |
||||
|
||||
DECLARE_GLOBAL_DATA_PTR; |
||||
|
||||
#define TIMER_CLOCK 32768 |
||||
#define TIMER_LOAD_VAL 0xffffffff |
||||
|
||||
static inline unsigned long long tick_to_time(unsigned long long tick) |
||||
{ |
||||
tick *= CONFIG_SYS_HZ; |
||||
do_div(tick, gd->arch.timer_rate_hz); |
||||
|
||||
return tick; |
||||
} |
||||
|
||||
static inline unsigned long long usec_to_tick(unsigned long long usec) |
||||
{ |
||||
usec *= gd->arch.timer_rate_hz; |
||||
do_div(usec, 1000000); |
||||
|
||||
return usec; |
||||
} |
||||
|
||||
int timer_init(void) |
||||
{ |
||||
struct fttmr010 *tmr = (struct fttmr010 *)CONFIG_FTTMR010_BASE; |
||||
unsigned int cr; |
||||
|
||||
debug("%s()\n", __func__); |
||||
|
||||
/* disable timers */ |
||||
writel(0, &tmr->cr); |
||||
|
||||
/* use 32768Hz oscillator for RTC, WDT, TIMER */ |
||||
ftpmu010_32768osc_enable(); |
||||
|
||||
/* setup timer */ |
||||
writel(TIMER_LOAD_VAL, &tmr->timer3_load); |
||||
writel(TIMER_LOAD_VAL, &tmr->timer3_counter); |
||||
writel(0, &tmr->timer3_match1); |
||||
writel(0, &tmr->timer3_match2); |
||||
|
||||
/* we don't want timer to issue interrupts */ |
||||
writel(FTTMR010_TM3_MATCH1 | |
||||
FTTMR010_TM3_MATCH2 | |
||||
FTTMR010_TM3_OVERFLOW, |
||||
&tmr->interrupt_mask); |
||||
|
||||
cr = readl(&tmr->cr); |
||||
cr |= FTTMR010_TM3_CLOCK; /* use external clock */ |
||||
cr |= FTTMR010_TM3_ENABLE; |
||||
writel(cr, &tmr->cr); |
||||
|
||||
gd->arch.timer_rate_hz = TIMER_CLOCK; |
||||
gd->arch.tbu = gd->arch.tbl = 0; |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
/*
|
||||
* Get the current 64 bit timer tick count |
||||
*/ |
||||
unsigned long long get_ticks(void) |
||||
{ |
||||
struct fttmr010 *tmr = (struct fttmr010 *)CONFIG_FTTMR010_BASE; |
||||
ulong now = TIMER_LOAD_VAL - readl(&tmr->timer3_counter); |
||||
|
||||
/* increment tbu if tbl has rolled over */ |
||||
if (now < gd->arch.tbl) |
||||
gd->arch.tbu++; |
||||
gd->arch.tbl = now; |
||||
return (((unsigned long long)gd->arch.tbu) << 32) | gd->arch.tbl; |
||||
} |
||||
|
||||
void __udelay(unsigned long usec) |
||||
{ |
||||
unsigned long long start; |
||||
ulong tmo; |
||||
|
||||
start = get_ticks(); /* get current timestamp */ |
||||
tmo = usec_to_tick(usec); /* convert usecs to ticks */ |
||||
while ((get_ticks() - start) < tmo) |
||||
; /* loop till time has passed */ |
||||
} |
||||
|
||||
/*
|
||||
* get_timer(base) can be used to check for timeouts or |
||||
* to measure elasped time relative to an event: |
||||
* |
||||
* ulong start_time = get_timer(0) sets start_time to the current |
||||
* time value. |
||||
* get_timer(start_time) returns the time elapsed since then. |
||||
* |
||||
* The time is used in CONFIG_SYS_HZ units! |
||||
*/ |
||||
ulong get_timer(ulong base) |
||||
{ |
||||
return tick_to_time(get_ticks()) - base; |
||||
} |
||||
|
||||
/*
|
||||
* Return the number of timer ticks per second. |
||||
*/ |
||||
ulong get_tbclk(void) |
||||
{ |
||||
return gd->arch.timer_rate_hz; |
||||
} |
@ -1,22 +0,0 @@ |
||||
/*
|
||||
* (C) Copyright 2009 Faraday Technology |
||||
* Po-Yu Chuang <ratbert@faraday-tech.com> |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#ifndef __A320_H |
||||
#define __A320_H |
||||
|
||||
/*
|
||||
* Hardware register bases |
||||
*/ |
||||
#define CONFIG_FTSMC020_BASE 0x90200000 /* Static Memory Controller */ |
||||
#define CONFIG_DEBUG_LED 0x902ffffc /* Debug LED */ |
||||
#define CONFIG_FTSDMC020_BASE 0x90300000 /* SDRAM Controller */ |
||||
#define CONFIG_FTMAC100_BASE 0x90900000 /* Ethernet */ |
||||
#define CONFIG_FTPMU010_BASE 0x98100000 /* Power Management Unit */ |
||||
#define CONFIG_FTTMR010_BASE 0x98400000 /* Timer */ |
||||
#define CONFIG_FTRTC010_BASE 0x98600000 /* Real Time Clock*/ |
||||
|
||||
#endif /* __A320_H */ |
@ -1,15 +0,0 @@ |
||||
if TARGET_A320EVB |
||||
|
||||
config SYS_BOARD |
||||
default "a320evb" |
||||
|
||||
config SYS_VENDOR |
||||
default "faraday" |
||||
|
||||
config SYS_SOC |
||||
default "a320" |
||||
|
||||
config SYS_CONFIG_NAME |
||||
default "a320evb" |
||||
|
||||
endif |
@ -1,6 +0,0 @@ |
||||
A320EVB BOARD |
||||
M: Po-Yu Chuang <ratbert@faraday-tech.com> |
||||
S: Maintained |
||||
F: board/faraday/a320evb/ |
||||
F: include/configs/a320evb.h |
||||
F: configs/a320evb_defconfig |
@ -1,9 +0,0 @@ |
||||
#
|
||||
# (C) Copyright 2000-2006
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
obj-y := a320evb.o
|
||||
obj-y += lowlevel_init.o
|
@ -1,59 +0,0 @@ |
||||
/*
|
||||
* (C) Copyright 2009 Faraday Technology |
||||
* Po-Yu Chuang <ratbert@faraday-tech.com> |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <netdev.h> |
||||
#include <asm/io.h> |
||||
|
||||
#include <faraday/ftsmc020.h> |
||||
|
||||
DECLARE_GLOBAL_DATA_PTR; |
||||
|
||||
/*
|
||||
* Miscellaneous platform dependent initialisations |
||||
*/ |
||||
|
||||
int board_init(void) |
||||
{ |
||||
gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100; |
||||
|
||||
ftsmc020_init(); /* initialize Flash */ |
||||
return 0; |
||||
} |
||||
|
||||
int dram_init(void) |
||||
{ |
||||
unsigned long sdram_base = PHYS_SDRAM_1; |
||||
unsigned long expected_size = PHYS_SDRAM_1_SIZE; |
||||
unsigned long actual_size; |
||||
|
||||
actual_size = get_ram_size((void *)sdram_base, expected_size); |
||||
|
||||
gd->ram_size = actual_size; |
||||
|
||||
if (expected_size != actual_size) |
||||
printf("Warning: Only %lu of %lu MiB SDRAM is working\n", |
||||
actual_size >> 20, expected_size >> 20); |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
int board_eth_init(bd_t *bd) |
||||
{ |
||||
return ftmac100_initialize(bd); |
||||
} |
||||
|
||||
ulong board_flash_get_legacy(ulong base, int banknum, flash_info_t *info) |
||||
{ |
||||
if (banknum == 0) { /* non-CFI boot flash */ |
||||
info->portwidth = FLASH_CFI_8BIT; |
||||
info->chipwidth = FLASH_CFI_BY8; |
||||
info->interface = FLASH_CFI_X8; |
||||
return 1; |
||||
} else |
||||
return 0; |
||||
} |
@ -1,106 +0,0 @@ |
||||
/* |
||||
* (C) Copyright 2009 Faraday Technology |
||||
* Po-Yu Chuang <ratbert@faraday-tech.com>
|
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <config.h> |
||||
#include <version.h> |
||||
|
||||
#include <asm/macro.h> |
||||
#include <faraday/ftsdmc020.h> |
||||
|
||||
/* |
||||
* parameters for the SDRAM controller |
||||
*/ |
||||
#define TP0_A (CONFIG_FTSDMC020_BASE + FTSDMC020_OFFSET_TP0) |
||||
#define TP1_A (CONFIG_FTSDMC020_BASE + FTSDMC020_OFFSET_TP1) |
||||
#define CR_A (CONFIG_FTSDMC020_BASE + FTSDMC020_OFFSET_CR) |
||||
#define B0_BSR_A (CONFIG_FTSDMC020_BASE + FTSDMC020_OFFSET_BANK0_BSR) |
||||
#define ACR_A (CONFIG_FTSDMC020_BASE + FTSDMC020_OFFSET_ACR) |
||||
|
||||
#define TP0_D CONFIG_SYS_FTSDMC020_TP0 |
||||
#define TP1_D CONFIG_SYS_FTSDMC020_TP1 |
||||
#define CR_D1 FTSDMC020_CR_IPREC |
||||
#define CR_D2 FTSDMC020_CR_ISMR |
||||
#define CR_D3 FTSDMC020_CR_IREF |
||||
|
||||
#define B0_BSR_D (CONFIG_SYS_FTSDMC020_BANK0_BSR | \ |
||||
FTSDMC020_BANK_BASE(PHYS_SDRAM_1)) |
||||
#define ACR_D FTSDMC020_ACR_TOC(0x18) |
||||
|
||||
/* |
||||
* numeric 7 segment display |
||||
*/ |
||||
.macro led, num |
||||
write32 CONFIG_DEBUG_LED, \num |
||||
.endm |
||||
|
||||
/* |
||||
* Waiting for SDRAM to set up |
||||
*/ |
||||
.macro wait_sdram
|
||||
ldr r0, =CONFIG_FTSDMC020_BASE |
||||
1: |
||||
ldr r1, [r0, #FTSDMC020_OFFSET_CR] |
||||
cmp r1, #0 |
||||
bne 1b |
||||
.endm |
||||
|
||||
.globl lowlevel_init
|
||||
lowlevel_init: |
||||
mov r11, lr |
||||
|
||||
led 0x0 |
||||
|
||||
bl init_sdmc |
||||
|
||||
led 0x1 |
||||
|
||||
/* everything is fine now */ |
||||
mov lr, r11 |
||||
mov pc, lr |
||||
|
||||
/* |
||||
* memory initialization |
||||
*/ |
||||
init_sdmc: |
||||
led 0x10 |
||||
|
||||
/* set SDRAM register */ |
||||
|
||||
write32 TP0_A, TP0_D |
||||
led 0x11 |
||||
|
||||
write32 TP1_A, TP1_D |
||||
led 0x12 |
||||
|
||||
/* set to precharge */ |
||||
write32 CR_A, CR_D1 |
||||
led 0x13 |
||||
|
||||
wait_sdram |
||||
led 0x14 |
||||
|
||||
/* set mode register */ |
||||
write32 CR_A, CR_D2 |
||||
led 0x15 |
||||
|
||||
wait_sdram |
||||
led 0x16 |
||||
|
||||
/* set to refresh */ |
||||
write32 CR_A, CR_D3 |
||||
led 0x17 |
||||
|
||||
wait_sdram |
||||
led 0x18 |
||||
|
||||
write32 B0_BSR_A, B0_BSR_D |
||||
led 0x19 |
||||
|
||||
write32 ACR_A, ACR_D |
||||
led 0x1a |
||||
|
||||
mov pc, lr |
@ -1,2 +0,0 @@ |
||||
CONFIG_ARM=y |
||||
CONFIG_TARGET_A320EVB=y |
@ -1,211 +0,0 @@ |
||||
/*
|
||||
* (C) Copyright 2009 Faraday Technology |
||||
* Po-Yu Chuang <ratbert@faraday-tech.com> |
||||
* |
||||
* Configuation settings for the Faraday A320 board. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#ifndef __CONFIG_H |
||||
#define __CONFIG_H |
||||
|
||||
#include <asm/arch/a320.h> |
||||
|
||||
/*
|
||||
* mach-type definition |
||||
*/ |
||||
#define MACH_TYPE_FARADAY 758 |
||||
#define CONFIG_MACH_TYPE MACH_TYPE_FARADAY |
||||
|
||||
/*
|
||||
* Linux kernel tagged list |
||||
*/ |
||||
#define CONFIG_CMDLINE_TAG |
||||
#define CONFIG_SETUP_MEMORY_TAGS |
||||
|
||||
/*
|
||||
* CPU and Board Configuration Options |
||||
*/ |
||||
#undef CONFIG_SKIP_LOWLEVEL_INIT |
||||
|
||||
/*
|
||||
* Power Management Unit |
||||
*/ |
||||
#define CONFIG_FTPMU010_POWER |
||||
|
||||
/*
|
||||
* Timer |
||||
*/ |
||||
|
||||
/*
|
||||
* Real Time Clock |
||||
*/ |
||||
#define CONFIG_RTC_FTRTC010 |
||||
|
||||
/*
|
||||
* Serial console configuration |
||||
*/ |
||||
|
||||
/* FTUART is a high speed NS 16C550A compatible UART */ |
||||
#define CONFIG_BAUDRATE 38400 |
||||
#define CONFIG_CONS_INDEX 1 |
||||
#define CONFIG_SYS_NS16550 |
||||
#define CONFIG_SYS_NS16550_SERIAL |
||||
#define CONFIG_SYS_NS16550_COM1 0x98200000 |
||||
#define CONFIG_SYS_NS16550_REG_SIZE -4 |
||||
#define CONFIG_SYS_NS16550_CLK 18432000 |
||||
|
||||
/*
|
||||
* Ethernet |
||||
*/ |
||||
#define CONFIG_FTMAC100 |
||||
|
||||
#define CONFIG_BOOTDELAY 3 |
||||
|
||||
/*
|
||||
* Command line configuration. |
||||
*/ |
||||
#include <config_cmd_default.h> |
||||
|
||||
#define CONFIG_CMD_CACHE |
||||
#define CONFIG_CMD_DATE |
||||
#define CONFIG_CMD_PING |
||||
|
||||
/*
|
||||
* Miscellaneous configurable options |
||||
*/ |
||||
#define CONFIG_SYS_LONGHELP /* undef to save memory */ |
||||
#define CONFIG_SYS_PROMPT "A320 # " /* Monitor Command Prompt */ |
||||
#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */ |
||||
|
||||
/* Print Buffer Size */ |
||||
#define CONFIG_SYS_PBSIZE \ |
||||
(CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16) |
||||
|
||||
/* max number of command args */ |
||||
#define CONFIG_SYS_MAXARGS 16 |
||||
|
||||
/* Boot Argument Buffer Size */ |
||||
#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE |
||||
|
||||
/*
|
||||
* Size of malloc() pool |
||||
*/ |
||||
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 128 * 1024) |
||||
|
||||
/*
|
||||
* SDRAM controller configuration |
||||
*/ |
||||
#define CONFIG_SYS_FTSDMC020_TP0 (FTSDMC020_TP0_TRAS(2) | \ |
||||
FTSDMC020_TP0_TRP(1) | \
|
||||
FTSDMC020_TP0_TRCD(1) | \
|
||||
FTSDMC020_TP0_TRF(3) | \
|
||||
FTSDMC020_TP0_TWR(1) | \
|
||||
FTSDMC020_TP0_TCL(2)) |
||||
|
||||
#define CONFIG_SYS_FTSDMC020_TP1 (FTSDMC020_TP1_INI_PREC(4) | \ |
||||
FTSDMC020_TP1_INI_REFT(8) | \
|
||||
FTSDMC020_TP1_REF_INTV(0x180)) |
||||
|
||||
#define CONFIG_SYS_FTSDMC020_BANK0_BSR (FTSDMC020_BANK_ENABLE | \ |
||||
FTSDMC020_BANK_DDW_X16 | \
|
||||
FTSDMC020_BANK_DSZ_256M | \
|
||||
FTSDMC020_BANK_MBW_32 | \
|
||||
FTSDMC020_BANK_SIZE_64M) |
||||
|
||||
/*
|
||||
* Physical Memory Map |
||||
*/ |
||||
#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */ |
||||
#define PHYS_SDRAM_1 0x10000000 /* SDRAM Bank #1 */ |
||||
#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */ |
||||
|
||||
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1 |
||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x1000 - \ |
||||
GENERATED_GBL_DATA_SIZE) |
||||
|
||||
/*
|
||||
* Load address and memory test area should agree with |
||||
* board/faraday/a320/config.mk. Be careful not to overwrite U-boot itself. |
||||
*/ |
||||
#define CONFIG_SYS_LOAD_ADDR (PHYS_SDRAM_1 + 0x2000000) |
||||
|
||||
/* memtest works on 63 MB in DRAM */ |
||||
#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM_1 |
||||
#define CONFIG_SYS_MEMTEST_END (PHYS_SDRAM_1 + 0x3F00000) |
||||
|
||||
#define CONFIG_SYS_TEXT_BASE 0 |
||||
|
||||
/*
|
||||
* Static memory controller configuration |
||||
*/ |
||||
|
||||
#define CONFIG_FTSMC020 |
||||
#include <faraday/ftsmc020.h> |
||||
|
||||
#define FTSMC020_BANK0_CONFIG (FTSMC020_BANK_ENABLE | \ |
||||
FTSMC020_BANK_BASE(PHYS_FLASH_1) | \
|
||||
FTSMC020_BANK_SIZE_1M | \
|
||||
FTSMC020_BANK_MBW_8) |
||||
|
||||
#define FTSMC020_BANK0_TIMING (FTSMC020_TPR_RBE | \ |
||||
FTSMC020_TPR_AST(3) | \
|
||||
FTSMC020_TPR_CTW(3) | \
|
||||
FTSMC020_TPR_ATI(0xf) | \
|
||||
FTSMC020_TPR_AT2(3) | \
|
||||
FTSMC020_TPR_WTC(3) | \
|
||||
FTSMC020_TPR_AHT(3) | \
|
||||
FTSMC020_TPR_TRNA(0xf)) |
||||
|
||||
#define FTSMC020_BANK1_CONFIG (FTSMC020_BANK_ENABLE | \ |
||||
FTSMC020_BANK_BASE(PHYS_FLASH_2) | \
|
||||
FTSMC020_BANK_SIZE_32M | \
|
||||
FTSMC020_BANK_MBW_32) |
||||
|
||||
#define FTSMC020_BANK1_TIMING (FTSMC020_TPR_AST(3) | \ |
||||
FTSMC020_TPR_CTW(3) | \
|
||||
FTSMC020_TPR_ATI(0xf) | \
|
||||
FTSMC020_TPR_AT2(3) | \
|
||||
FTSMC020_TPR_WTC(3) | \
|
||||
FTSMC020_TPR_AHT(3) | \
|
||||
FTSMC020_TPR_TRNA(0xf)) |
||||
|
||||
#define CONFIG_SYS_FTSMC020_CONFIGS { \ |
||||
{ FTSMC020_BANK0_CONFIG, FTSMC020_BANK0_TIMING, }, \
|
||||
{ FTSMC020_BANK1_CONFIG, FTSMC020_BANK1_TIMING, }, \
|
||||
} |
||||
|
||||
/*
|
||||
* FLASH and environment organization |
||||
*/ |
||||
|
||||
/* use CFI framework */ |
||||
#define CONFIG_SYS_FLASH_CFI |
||||
#define CONFIG_FLASH_CFI_DRIVER |
||||
|
||||
/* support JEDEC */ |
||||
#define CONFIG_FLASH_CFI_LEGACY |
||||
#define CONFIG_SYS_FLASH_LEGACY_512Kx8 |
||||
|
||||
#define PHYS_FLASH_1 0x00000000 |
||||
#define PHYS_FLASH_2 0x00400000 |
||||
#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1 |
||||
#define CONFIG_SYS_FLASH_BANKS_LIST { PHYS_FLASH_1, PHYS_FLASH_2, } |
||||
|
||||
#define CONFIG_SYS_MONITOR_BASE PHYS_FLASH_1 |
||||
|
||||
/* max number of memory banks */ |
||||
#define CONFIG_SYS_MAX_FLASH_BANKS 2 |
||||
|
||||
/* max number of sectors on one chip */ |
||||
#define CONFIG_SYS_MAX_FLASH_SECT 512 |
||||
|
||||
#undef CONFIG_SYS_FLASH_EMPTY_INFO |
||||
|
||||
/* environments */ |
||||
#define CONFIG_ENV_IS_IN_FLASH |
||||
#define CONFIG_ENV_ADDR (PHYS_FLASH_1 + 0x60000) |
||||
#define CONFIG_ENV_SIZE 0x20000 |
||||
|
||||
#endif /* __CONFIG_H */ |
Loading…
Reference in new issue