commit
1131d4e22c
@ -1,9 +0,0 @@ |
|||||||
#
|
|
||||||
# Copyright (C) 2014 Stefan Roese <sr@denx.de>
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-2.0+
|
|
||||||
#
|
|
||||||
|
|
||||||
obj-y = cpu.o
|
|
||||||
obj-$(CONFIG_SPL_BUILD) += spl.o
|
|
||||||
obj-$(CONFIG_SPL_BUILD) += lowlevel_spl.o
|
|
@ -0,0 +1,24 @@ |
|||||||
|
#
|
||||||
|
# Copyright (C) 2014-2015 Stefan Roese <sr@denx.de>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
#
|
||||||
|
|
||||||
|
ifdef CONFIG_KIRKWOOD |
||||||
|
|
||||||
|
obj-y = dram.o
|
||||||
|
obj-y += gpio.o
|
||||||
|
obj-y += timer.o
|
||||||
|
|
||||||
|
else |
||||||
|
|
||||||
|
obj-y = cpu.o
|
||||||
|
obj-y += dram.o
|
||||||
|
obj-y += gpio.o
|
||||||
|
obj-y += mbus.o
|
||||||
|
obj-y += timer.o
|
||||||
|
obj-$(CONFIG_SPL_BUILD) += spl.o
|
||||||
|
obj-$(CONFIG_SPL_BUILD) += lowlevel_spl.o
|
||||||
|
|
||||||
|
obj-y += serdes/
|
||||||
|
endif |
@ -0,0 +1,15 @@ |
|||||||
|
if TARGET_DB_88F6820_GP |
||||||
|
|
||||||
|
config SYS_BOARD |
||||||
|
default "db-88f6820-gp" |
||||||
|
|
||||||
|
config SYS_VENDOR |
||||||
|
default "Marvell" |
||||||
|
|
||||||
|
config SYS_SOC |
||||||
|
default "mvebu" |
||||||
|
|
||||||
|
config SYS_CONFIG_NAME |
||||||
|
default "db-88f6820-gp" |
||||||
|
|
||||||
|
endif |
@ -0,0 +1,7 @@ |
|||||||
|
#
|
||||||
|
# Copyright (C) 2015 Stefan Roese <sr@denx.de>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
#
|
||||||
|
|
||||||
|
obj-y := db-88f6820-gp.o
|
@ -0,0 +1,16 @@ |
|||||||
|
-------- |
||||||
|
WARNING: |
||||||
|
-------- |
||||||
|
This file should contain the bin_hdr generated by the original Marvell |
||||||
|
U-Boot implementation. As this is currently not included in this |
||||||
|
U-Boot version, we have added this placeholder, so that the U-Boot |
||||||
|
image can be generated without errors. |
||||||
|
|
||||||
|
If you have a known to be working bin_hdr for your board, then you |
||||||
|
just need to replace this text file here with the binary header |
||||||
|
and recompile U-Boot. |
||||||
|
|
||||||
|
In a few weeks, mainline U-Boot will get support to generate the |
||||||
|
bin_hdr with the DDR training code itself. By implementing this code |
||||||
|
as SPL U-Boot. Then this file will not be needed any more and will |
||||||
|
get removed. |
@ -0,0 +1,103 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 Stefan Roese <sr@denx.de> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: GPL-2.0+ |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <common.h> |
||||||
|
#include <i2c.h> |
||||||
|
#include <miiphy.h> |
||||||
|
#include <asm/io.h> |
||||||
|
#include <asm/arch/cpu.h> |
||||||
|
#include <asm/arch/soc.h> |
||||||
|
|
||||||
|
DECLARE_GLOBAL_DATA_PTR; |
||||||
|
|
||||||
|
#define BIT(nr) (1UL << (nr)) |
||||||
|
|
||||||
|
#define ETH_PHY_CTRL_REG 0 |
||||||
|
#define ETH_PHY_CTRL_POWER_DOWN_BIT 11 |
||||||
|
#define ETH_PHY_CTRL_POWER_DOWN_MASK (1 << ETH_PHY_CTRL_POWER_DOWN_BIT) |
||||||
|
|
||||||
|
/*
|
||||||
|
* Those values and defines are taken from the Marvell U-Boot version |
||||||
|
* "u-boot-2013.01-2014_T3.0" |
||||||
|
*/ |
||||||
|
#define DB_GP_88F68XX_GPP_OUT_ENA_LOW \ |
||||||
|
(~(BIT(1) | BIT(4) | BIT(6) | BIT(7) | BIT(8) | BIT(9) | \
|
||||||
|
BIT(10) | BIT(11) | BIT(19) | BIT(22) | BIT(23) | BIT(25) | \
|
||||||
|
BIT(26) | BIT(27) | BIT(29) | BIT(30) | BIT(31))) |
||||||
|
#define DB_GP_88F68XX_GPP_OUT_ENA_MID \ |
||||||
|
(~(BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(15) | \
|
||||||
|
BIT(16) | BIT(17) | BIT(18))) |
||||||
|
|
||||||
|
#define DB_GP_88F68XX_GPP_OUT_VAL_LOW 0x0 |
||||||
|
#define DB_GP_88F68XX_GPP_OUT_VAL_MID 0x0 |
||||||
|
#define DB_GP_88F68XX_GPP_POL_LOW 0x0 |
||||||
|
#define DB_GP_88F68XX_GPP_POL_MID 0x0 |
||||||
|
|
||||||
|
/* IO expander on Marvell GP board includes e.g. fan enabling */ |
||||||
|
struct marvell_io_exp { |
||||||
|
u8 chip; |
||||||
|
u8 addr; |
||||||
|
u8 val; |
||||||
|
}; |
||||||
|
|
||||||
|
static struct marvell_io_exp io_exp[] = { |
||||||
|
{ 0x20, 6, 0x20 }, /* Configuration registers: Bit on --> Input bits */ |
||||||
|
{ 0x20, 7, 0xC3 }, /* Configuration registers: Bit on --> Input bits */ |
||||||
|
{ 0x20, 2, 0x1D }, /* Output Data, register#0 */ |
||||||
|
{ 0x20, 3, 0x18 }, /* Output Data, register#1 */ |
||||||
|
{ 0x21, 6, 0xC3 }, /* Configuration registers: Bit on --> Input bits */ |
||||||
|
{ 0x21, 7, 0x31 }, /* Configuration registers: Bit on --> Input bits */ |
||||||
|
{ 0x21, 2, 0x08 }, /* Output Data, register#0 */ |
||||||
|
{ 0x21, 3, 0xC0 } /* Output Data, register#1 */ |
||||||
|
}; |
||||||
|
|
||||||
|
int board_early_init_f(void) |
||||||
|
{ |
||||||
|
/* Configure MPP */ |
||||||
|
writel(0x11111111, MVEBU_MPP_BASE + 0x00); |
||||||
|
writel(0x11111111, MVEBU_MPP_BASE + 0x04); |
||||||
|
writel(0x11244011, MVEBU_MPP_BASE + 0x08); |
||||||
|
writel(0x22222111, MVEBU_MPP_BASE + 0x0c); |
||||||
|
writel(0x22200002, MVEBU_MPP_BASE + 0x10); |
||||||
|
writel(0x30042022, MVEBU_MPP_BASE + 0x14); |
||||||
|
writel(0x55550555, MVEBU_MPP_BASE + 0x18); |
||||||
|
writel(0x00005550, MVEBU_MPP_BASE + 0x1c); |
||||||
|
|
||||||
|
/* Set GPP Out value */ |
||||||
|
writel(DB_GP_88F68XX_GPP_OUT_VAL_LOW, MVEBU_GPIO0_BASE + 0x00); |
||||||
|
writel(DB_GP_88F68XX_GPP_OUT_VAL_MID, MVEBU_GPIO1_BASE + 0x00); |
||||||
|
|
||||||
|
/* Set GPP Polarity */ |
||||||
|
writel(DB_GP_88F68XX_GPP_POL_LOW, MVEBU_GPIO0_BASE + 0x0c); |
||||||
|
writel(DB_GP_88F68XX_GPP_POL_MID, MVEBU_GPIO1_BASE + 0x0c); |
||||||
|
|
||||||
|
/* Set GPP Out Enable */ |
||||||
|
writel(DB_GP_88F68XX_GPP_OUT_ENA_LOW, MVEBU_GPIO0_BASE + 0x04); |
||||||
|
writel(DB_GP_88F68XX_GPP_OUT_ENA_MID, MVEBU_GPIO1_BASE + 0x04); |
||||||
|
|
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
int board_init(void) |
||||||
|
{ |
||||||
|
int i; |
||||||
|
|
||||||
|
/* adress of boot parameters */ |
||||||
|
gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100; |
||||||
|
|
||||||
|
/* Init I2C IO expanders */ |
||||||
|
for (i = 0; i < ARRAY_SIZE(io_exp); i++) |
||||||
|
i2c_write(io_exp[i].chip, io_exp[i].addr, 1, &io_exp[i].val, 1); |
||||||
|
|
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
int checkboard(void) |
||||||
|
{ |
||||||
|
puts("Board: Marvell DB-88F6820-GP\n"); |
||||||
|
|
||||||
|
return 0; |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
# |
||||||
|
# Copyright (C) 2014 Stefan Roese <sr@denx.de> |
||||||
|
# |
||||||
|
|
||||||
|
# Armada XP uses version 1 image format |
||||||
|
VERSION 1 |
||||||
|
|
||||||
|
# Boot Media configurations |
||||||
|
BOOT_FROM spi |
||||||
|
|
||||||
|
# Binary Header (bin_hdr) with DDR3 training code |
||||||
|
BINARY board/Marvell/db-88f6820-gp/binary.0 0000005b 00000068 |
@ -0,0 +1,2 @@ |
|||||||
|
CONFIG_ARM=y |
||||||
|
CONFIG_TARGET_DB_88F6820_GP=y |
@ -0,0 +1,72 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (C) 2014 Stefan Roese <sr@denx.de> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: GPL-2.0+ |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef _CONFIG_DB_88F6820_GP_H |
||||||
|
#define _CONFIG_DB_88F6820_GP_H |
||||||
|
|
||||||
|
/*
|
||||||
|
* High Level Configuration Options (easy to change) |
||||||
|
*/ |
||||||
|
#define CONFIG_ARMADA_XP /* SOC Family Name */ |
||||||
|
#define CONFIG_DB_88F6820_GP /* Board target name for DDR training */ |
||||||
|
|
||||||
|
#define CONFIG_SYS_L2_PL310 |
||||||
|
|
||||||
|
#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init */ |
||||||
|
#define CONFIG_SYS_GENERIC_BOARD |
||||||
|
#define CONFIG_DISPLAY_BOARDINFO_LATE |
||||||
|
|
||||||
|
#define CONFIG_SYS_TEXT_BASE 0x04000000 |
||||||
|
#define CONFIG_SYS_TCLK 250000000 /* 250MHz */ |
||||||
|
|
||||||
|
/*
|
||||||
|
* Commands configuration |
||||||
|
*/ |
||||||
|
#define CONFIG_SYS_NO_FLASH /* Declare no flash (NOR/SPI) */ |
||||||
|
#include <config_cmd_default.h> |
||||||
|
#define CONFIG_CMD_CACHE |
||||||
|
#define CONFIG_CMD_DHCP |
||||||
|
#define CONFIG_CMD_ENV |
||||||
|
#define CONFIG_CMD_I2C |
||||||
|
#define CONFIG_CMD_PING |
||||||
|
#define CONFIG_CMD_SF |
||||||
|
#define CONFIG_CMD_SPI |
||||||
|
#define CONFIG_CMD_TFTPPUT |
||||||
|
#define CONFIG_CMD_TIME |
||||||
|
|
||||||
|
/* I2C */ |
||||||
|
#define CONFIG_SYS_I2C |
||||||
|
#define CONFIG_SYS_I2C_MVTWSI |
||||||
|
#define CONFIG_I2C_MVTWSI_BASE0 MVEBU_TWSI_BASE |
||||||
|
#define CONFIG_SYS_I2C_SLAVE 0x0 |
||||||
|
#define CONFIG_SYS_I2C_SPEED 100000 |
||||||
|
|
||||||
|
/* SPI NOR flash default params, used by sf commands */ |
||||||
|
#define CONFIG_SF_DEFAULT_SPEED 1000000 |
||||||
|
#define CONFIG_SF_DEFAULT_MODE SPI_MODE_3 |
||||||
|
#define CONFIG_SPI_FLASH_STMICRO |
||||||
|
|
||||||
|
/* Environment in SPI NOR flash */ |
||||||
|
#define CONFIG_ENV_IS_IN_SPI_FLASH |
||||||
|
#define CONFIG_ENV_OFFSET (1 << 20) /* 1MiB in */ |
||||||
|
#define CONFIG_ENV_SIZE (64 << 10) /* 64KiB */ |
||||||
|
#define CONFIG_ENV_SECT_SIZE (256 << 10) /* 256KiB sectors */ |
||||||
|
|
||||||
|
#define CONFIG_PHY_MARVELL /* there is a marvell phy */ |
||||||
|
#define CONFIG_PHY_ADDR { 1, 0 } |
||||||
|
#define CONFIG_SYS_NETA_INTERFACE_TYPE PHY_INTERFACE_MODE_RGMII |
||||||
|
#define PHY_ANEG_TIMEOUT 8000 /* PHY needs a longer aneg time */ |
||||||
|
|
||||||
|
#define CONFIG_SYS_CONSOLE_INFO_QUIET /* don't print console @ startup */ |
||||||
|
#define CONFIG_SYS_ALT_MEMTEST |
||||||
|
|
||||||
|
/*
|
||||||
|
* mv-common.h should be defined after CMD configs since it used them |
||||||
|
* to enable certain macros |
||||||
|
*/ |
||||||
|
#include "mv-common.h" |
||||||
|
|
||||||
|
#endif /* _CONFIG_DB_88F6820_GP_H */ |
Loading…
Reference in new issue