mips: Add MIPSfpga platform support
MIPSfpga is an FPGA based dev platform. In a nutshell, its a microAptiv cpu core with lots of Xilinx IP blocks The FPGA dev board used is the Nexys4DDR board by Digilent. For more information, check the Readme file in board/imgtec/xilfpga Signed-off-by: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com> Reviewed-by: Paul Burton <paul.burton@imgtec.com> Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
This commit is contained in:
parent
d4e85377e7
commit
ebf2b9e3df
@ -73,10 +73,25 @@ config MACH_PIC32
|
||||
select OF_CONTROL
|
||||
select DM
|
||||
|
||||
config TARGET_XILFPGA
|
||||
bool "Support Imagination Xilfpga"
|
||||
select OF_CONTROL
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
select DM_GPIO
|
||||
select DM_ETH
|
||||
select SUPPORTS_LITTLE_ENDIAN
|
||||
select SUPPORTS_CPU_MIPS32_R1
|
||||
select SUPPORTS_CPU_MIPS32_R2
|
||||
select MIPS_L1_CACHE_SHIFT_4
|
||||
help
|
||||
This supports IMGTEC MIPSfpga platform
|
||||
|
||||
endchoice
|
||||
|
||||
source "board/dbau1x00/Kconfig"
|
||||
source "board/imgtec/malta/Kconfig"
|
||||
source "board/imgtec/xilfpga/Kconfig"
|
||||
source "board/micronas/vct/Kconfig"
|
||||
source "board/pb1x00/Kconfig"
|
||||
source "board/qemu-mips/Kconfig"
|
||||
|
15
board/imgtec/xilfpga/Kconfig
Normal file
15
board/imgtec/xilfpga/Kconfig
Normal file
@ -0,0 +1,15 @@
|
||||
if TARGET_XILFPGA
|
||||
|
||||
config SYS_BOARD
|
||||
default "xilfpga"
|
||||
|
||||
config SYS_VENDOR
|
||||
default "imgtec"
|
||||
|
||||
config SYS_CONFIG_NAME
|
||||
default "imgtec_xilfpga"
|
||||
|
||||
config SYS_TEXT_BASE
|
||||
default 0x80C00000
|
||||
|
||||
endif
|
6
board/imgtec/xilfpga/MAINTAINERS
Normal file
6
board/imgtec/xilfpga/MAINTAINERS
Normal file
@ -0,0 +1,6 @@
|
||||
XILFPGA BOARD
|
||||
M: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
|
||||
S: Maintained
|
||||
F: board/imgtec/xilfpga
|
||||
F: include/configs/xilfpga.h
|
||||
F: configs/imgtec_xilfpga_defconfig
|
7
board/imgtec/xilfpga/Makefile
Normal file
7
board/imgtec/xilfpga/Makefile
Normal file
@ -0,0 +1,7 @@
|
||||
#
|
||||
# Copyright (C) 2016, Imagination Technologies Ltd.
|
||||
# Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
obj-y := xilfpga.o
|
55
board/imgtec/xilfpga/README
Normal file
55
board/imgtec/xilfpga/README
Normal file
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright (C) 2016, Imagination Technologies Ltd.
|
||||
*
|
||||
* Zubair Lutfullah Kakakhel, Zubair.Kakakhel@imgtec.com
|
||||
*/
|
||||
|
||||
MIPSfpga
|
||||
=======================================
|
||||
|
||||
MIPSfpga is an FPGA based development platform by Imagination Technologies
|
||||
As we are dealing with a MIPS core instantiated on an FPGA, specifications
|
||||
are fluid and can be varied in RTL.
|
||||
|
||||
The example project provided by IMGTEC runs on the Nexys4DDR board by
|
||||
Digilent powered by the ARTIX-7 FPGA by Xilinx. Relevant details about
|
||||
the example project and the Nexys4DDR board:
|
||||
|
||||
- microAptiv UP core m14Kc
|
||||
- 50MHz clock speed
|
||||
- 128Mbyte DDR RAM at 0x0000_0000
|
||||
- 8Kbyte RAM at 0x1000_0000
|
||||
- axi_intc at 0x1020_0000
|
||||
- axi_uart16550 at 0x1040_0000
|
||||
- axi_gpio at 0x1060_0000
|
||||
- axi_i2c at 0x10A0_0000
|
||||
- custom_gpio at 0x10C0_0000
|
||||
- axi_ethernetlite at 0x10E0_0000
|
||||
- 8Kbyte BootRAM at 0x1FC0_0000
|
||||
- 16Mbyte QPI at 0x1D00_0000
|
||||
|
||||
Boot protocol:
|
||||
--------------
|
||||
|
||||
The BootRAM is a writeable "RAM" in FPGA at 0x1FC0_0000.
|
||||
This is for easy reprogrammibility via JTAG.
|
||||
|
||||
DDR initialization is already handled by a HW IP block.
|
||||
|
||||
When the example project bitstream is loaded, the cpu_reset button
|
||||
needs to be pressed.
|
||||
|
||||
The bootram initializes the cache and axi_uart
|
||||
Then checks if there is anything non 0xffff_ffff at location 0x1D40_0000
|
||||
|
||||
If there is, then that is considered as u-boot. u-boot is copied from
|
||||
0x1D40_0000 to memory and the bootram jumps into u-boot code.
|
||||
|
||||
At this point, the board is ready to load the Linux kernel + buildroot initramfs
|
||||
|
||||
This can be done in multiple ways:
|
||||
|
||||
1- JTAG load the binary and jump into it.
|
||||
2- Load kernel stored in the QSPI flash at 0x1D80_0000
|
||||
3- Load uImage via tftp. Ethernet works in u-boot.
|
||||
e.g. env set server ip 192.168.154.45; dhcp uImage; bootm
|
20
board/imgtec/xilfpga/xilfpga.c
Normal file
20
board/imgtec/xilfpga/xilfpga.c
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Imagination Technologies MIPSfpga platform code
|
||||
*
|
||||
* Copyright (C) 2016, Imagination Technologies Ltd.
|
||||
*
|
||||
* Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
|
||||
/* initialize the DDR Controller and PHY */
|
||||
phys_size_t initdram(int board_type)
|
||||
{
|
||||
/* MIG IP block is smart and doesn't need SW
|
||||
* to do any init */
|
||||
return CONFIG_SYS_SDRAM_SIZE; /* in bytes */
|
||||
}
|
25
configs/imgtec_xilfpga_defconfig
Normal file
25
configs/imgtec_xilfpga_defconfig
Normal file
@ -0,0 +1,25 @@
|
||||
CONFIG_MIPS=y
|
||||
CONFIG_SYS_MALLOC_F_LEN=0x600
|
||||
CONFIG_TARGET_XILFPGA=y
|
||||
# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
|
||||
CONFIG_MIPS_BOOT_FDT=y
|
||||
CONFIG_DEFAULT_DEVICE_TREE="nexys4ddr"
|
||||
CONFIG_BOOTDELAY=5
|
||||
CONFIG_HUSH_PARSER=y
|
||||
CONFIG_SYS_PROMPT="MIPSfpga # "
|
||||
# CONFIG_CMD_IMLS is not set
|
||||
# CONFIG_CMD_SAVEENV is not set
|
||||
CONFIG_CMD_MEMINFO=y
|
||||
# CONFIG_CMD_FLASH is not set
|
||||
# CONFIG_CMD_FPGA is not set
|
||||
CONFIG_CMD_DHCP=y
|
||||
CONFIG_CMD_MII=y
|
||||
CONFIG_CMD_PING=y
|
||||
CONFIG_CMD_TIME=y
|
||||
CONFIG_OF_EMBED=y
|
||||
CONFIG_NET_RANDOM_ETHADDR=y
|
||||
CONFIG_NETCONSOLE=y
|
||||
CONFIG_CLK=y
|
||||
CONFIG_XILINX_EMACLITE=y
|
||||
CONFIG_SYS_NS16550=y
|
||||
CONFIG_CMD_DHRYSTONE=y
|
68
include/configs/imgtec_xilfpga.h
Normal file
68
include/configs/imgtec_xilfpga.h
Normal file
@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright (C) 2016, Imagination Technologies Ltd.
|
||||
*
|
||||
* Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*
|
||||
* Imagination Technologies Ltd. MIPSfpga
|
||||
*/
|
||||
|
||||
#ifndef __XILFPGA_CONFIG_H
|
||||
#define __XILFPGA_CONFIG_H
|
||||
|
||||
/* BootROM + MIG is pretty smart. DDR and Cache initialized */
|
||||
#define CONFIG_SKIP_LOWLEVEL_INIT
|
||||
|
||||
/*--------------------------------------------
|
||||
* CPU configuration
|
||||
*/
|
||||
/* CPU Timer rate */
|
||||
#define CONFIG_SYS_MIPS_TIMER_FREQ 50000000
|
||||
|
||||
/* Cache Configuration */
|
||||
#define CONFIG_SYS_MIPS_CACHE_MODE CONF_CM_CACHABLE_NONCOHERENT
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
* Memory Layout
|
||||
*/
|
||||
|
||||
/* SDRAM Configuration (for final code, data, stack, heap) */
|
||||
#define CONFIG_SYS_SDRAM_BASE 0x80000000
|
||||
#define CONFIG_SYS_SDRAM_SIZE 0x08000000 /* 128 Mbytes */
|
||||
#define CONFIG_SYS_INIT_SP_ADDR \
|
||||
(CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_SDRAM_SIZE - 0x1000)
|
||||
|
||||
#define CONFIG_SYS_MALLOC_LEN (256 << 10)
|
||||
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE
|
||||
#define CONFIG_SYS_LOAD_ADDR 0x80500000 /* default load address */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
* Commands
|
||||
*/
|
||||
#define CONFIG_SYS_LONGHELP /* undef to save memory */
|
||||
|
||||
/*-------------------------------------------------
|
||||
* FLASH configuration
|
||||
*/
|
||||
#define CONFIG_SYS_NO_FLASH
|
||||
|
||||
/*------------------------------------------------------------
|
||||
* Console Configuration
|
||||
*/
|
||||
#define CONFIG_SYS_CBSIZE 1024 /* Console I/O Buffer Size */
|
||||
#define CONFIG_SYS_MAXARGS 16 /* max number of command args*/
|
||||
#define CONFIG_BAUDRATE 115200
|
||||
|
||||
/* -------------------------------------------------
|
||||
* Environment
|
||||
*/
|
||||
#define CONFIG_ENV_IS_NOWHERE 1
|
||||
#define CONFIG_ENV_SIZE 0x4000
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
* Board boot configuration
|
||||
*/
|
||||
#define CONFIG_TIMESTAMP /* Print image info with timestamp */
|
||||
|
||||
#endif /* __XILFPGA_CONFIG_H */
|
Loading…
Reference in New Issue
Block a user