forked from linux4sam/u-boot-at91
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
arm64: versal: Add support for new Xilinx Versal ACAPs
Xilinx is introducing Versal, an adaptive compute acceleration platform (ACAP), built on 7nm FinFET process technology. Versal ACAPs combine Scalar Processing Engines, Adaptable Hardware Engines, and Intelligent Engines with leading-edge memory and interfacing technologies to deliver powerful heterogeneous acceleration for any application. The Versal AI Core series has five devices, offering 128 to 400 AI Engines. The series includes dual-core Arm Cortex™-A72 application processors, dual-core Arm Cortex-R5 real-time processors, 256KB of on-chip memory with ECC, more than 1,900 DSP engines optimized for high-precision floating point with low latency. The patch is adding necessary infrastructure in place without enabling platform which is done in separate patch. Signed-off-by: Michal Simek <[email protected]>
- Loading branch information
Michal Simek
committed
Oct 16, 2018
1 parent
e614957
commit ec48b6c
Showing
19 changed files
with
402 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -287,6 +287,12 @@ F: arch/arm/mach-uniphier/ | |
F: configs/uniphier_*_defconfig | ||
N: uniphier | ||
|
||
ARM VERSAL | ||
M: Michal Simek <[email protected]> | ||
S: Maintained | ||
T: git git://git.denx.de/u-boot-microblaze.git | ||
F: arch/arm/mach-versal/ | ||
|
||
ARM VERSATILE EXPRESS DRIVERS | ||
M: Liviu Dudau <[email protected]> | ||
S: Maintained | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
# SPDX-License-Identifier: GPL-2.0+ | ||
|
||
if ARCH_VERSAL | ||
|
||
config SYS_BOARD | ||
string "Board name" | ||
default "versal" | ||
|
||
config SYS_VENDOR | ||
string "Vendor name" | ||
default "xilinx" | ||
|
||
config SYS_SOC | ||
default "versal" | ||
|
||
config SYS_CONFIG_NAME | ||
string "Board configuration name" | ||
default "xilinx_versal" | ||
help | ||
This option contains information about board configuration name. | ||
Based on this option include/configs/<CONFIG_SYS_CONFIG_NAME>.h header | ||
will be used for board configuration. | ||
|
||
config GICV3 | ||
def_bool y | ||
|
||
config SYS_MALLOC_LEN | ||
default 0x2000000 | ||
|
||
config COUNTER_FREQUENCY | ||
int "Timer clock frequency" | ||
default 0 | ||
help | ||
Setup time clock frequency for certain platform | ||
|
||
config ZYNQ_SDHCI_MAX_FREQ | ||
default 200000000 | ||
|
||
endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# SPDX-License-Identifier: GPL-2.0+ | ||
# | ||
# (C) Copyright 2016 - 2018 Xilinx, Inc. | ||
# Michal Simek <[email protected]> | ||
# | ||
|
||
obj-y += clk.o | ||
obj-y += cpu.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
// SPDX-License-Identifier: GPL-2.0+ | ||
/* | ||
* (C) Copyright 2016 - 2018 Xilinx, Inc. | ||
* Michal Simek <[email protected]> | ||
*/ | ||
|
||
#include <common.h> | ||
|
||
DECLARE_GLOBAL_DATA_PTR; | ||
|
||
#ifdef CONFIG_CLOCKS | ||
/** | ||
* set_cpu_clk_info - Initialize clock framework | ||
* | ||
* Return: 0 always. | ||
* | ||
* This function is called from common code after relocation and sets up the | ||
* clock framework. The framework must not be used before this function had been | ||
* called. | ||
*/ | ||
int set_cpu_clk_info(void) | ||
{ | ||
gd->cpu_clk = get_tbclk(); | ||
|
||
gd->bd->bi_arm_freq = gd->cpu_clk / 1000000; | ||
gd->bd->bi_dsp_freq = 0; | ||
|
||
return 0; | ||
} | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
// SPDX-License-Identifier: GPL-2.0+ | ||
/* | ||
* (C) Copyright 2016 - 2018 Xilinx, Inc. | ||
* Michal Simek <[email protected]> | ||
*/ | ||
|
||
#include <common.h> | ||
#include <asm/armv8/mmu.h> | ||
#include <asm/io.h> | ||
|
||
static struct mm_region versal_mem_map[] = { | ||
{ | ||
.virt = 0x0UL, | ||
.phys = 0x0UL, | ||
.size = 0x80000000UL, | ||
.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | | ||
PTE_BLOCK_INNER_SHARE | ||
}, { | ||
.virt = 0x80000000UL, | ||
.phys = 0x80000000UL, | ||
.size = 0x70000000UL, | ||
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | | ||
PTE_BLOCK_NON_SHARE | | ||
PTE_BLOCK_PXN | PTE_BLOCK_UXN | ||
}, { | ||
.virt = 0xf0000000UL, | ||
.phys = 0xf0000000UL, | ||
.size = 0x0fe00000UL, | ||
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | | ||
PTE_BLOCK_NON_SHARE | | ||
PTE_BLOCK_PXN | PTE_BLOCK_UXN | ||
}, { | ||
.virt = 0xffe00000UL, | ||
.phys = 0xffe00000UL, | ||
.size = 0x00200000UL, | ||
.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | | ||
PTE_BLOCK_INNER_SHARE | ||
}, { | ||
.virt = 0x400000000UL, | ||
.phys = 0x400000000UL, | ||
.size = 0x200000000UL, | ||
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | | ||
PTE_BLOCK_NON_SHARE | | ||
PTE_BLOCK_PXN | PTE_BLOCK_UXN | ||
}, { | ||
.virt = 0x600000000UL, | ||
.phys = 0x600000000UL, | ||
.size = 0x800000000UL, | ||
.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | | ||
PTE_BLOCK_INNER_SHARE | ||
}, { | ||
.virt = 0xe00000000UL, | ||
.phys = 0xe00000000UL, | ||
.size = 0xf200000000UL, | ||
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | | ||
PTE_BLOCK_NON_SHARE | | ||
PTE_BLOCK_PXN | PTE_BLOCK_UXN | ||
}, { | ||
/* List terminator */ | ||
0, | ||
} | ||
}; | ||
|
||
struct mm_region *mem_map = versal_mem_map; | ||
|
||
u64 get_page_table_size(void) | ||
{ | ||
return 0x14000; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
/* SPDX-License-Identifier: GPL-2.0+ */ | ||
/* | ||
* Copyright 2016 - 2018 Xilinx, Inc. | ||
*/ | ||
|
||
/* Empty file - for compilation */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
/* SPDX-License-Identifier: GPL-2.0+ */ | ||
/* | ||
* Copyright 2016 - 2018 Xilinx, Inc. | ||
*/ | ||
|
||
#define VERSAL_CRL_APB_BASEADDR 0xFF5E0000 | ||
|
||
#define CRL_APB_TIMESTAMP_REF_CTRL_CLKACT_BIT BIT(25) | ||
|
||
#define IOU_SWITCH_CTRL_CLKACT_BIT BIT(25) | ||
#define IOU_SWITCH_CTRL_DIVISOR0_SHIFT 8 | ||
|
||
struct crlapb_regs { | ||
u32 reserved0[69]; | ||
u32 iou_switch_ctrl; /* 0x114 */ | ||
u32 reserved1[13]; | ||
u32 timestamp_ref_ctrl; /* 0x14c */ | ||
u32 reserved2[126]; | ||
u32 rst_timestamp; /* 0x348 */ | ||
}; | ||
|
||
#define crlapb_base ((struct crlapb_regs *)VERSAL_CRL_APB_BASEADDR) | ||
|
||
#define VERSAL_IOU_SCNTR_SECURE 0xFF140000 | ||
|
||
#define IOU_SCNTRS_CONTROL_EN 1 | ||
|
||
struct iou_scntrs_regs { | ||
u32 counter_control_register; /* 0x0 */ | ||
u32 reserved0[7]; | ||
u32 base_frequency_id_register; /* 0x20 */ | ||
}; | ||
|
||
#define iou_scntr_secure ((struct iou_scntrs_regs *)VERSAL_IOU_SCNTR_SECURE) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
/* SPDX-License-Identifier: GPL-2.0+ */ | ||
/* | ||
* Copyright 2016 - 2018 Xilinx, Inc. | ||
*/ | ||
|
||
/* Empty file - for compilation */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
XILINX_VERSAL BOARDS | ||
M: Michal Simek <[email protected]> | ||
S: Maintained | ||
F: arch/arm/dts/versal* | ||
F: board/xilinx/versal/ | ||
F: include/configs/xilinx_versal* | ||
F: configs/xilinx_versal* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# SPDX-License-Identifier: GPL-2.0+ | ||
# | ||
# (C) Copyright 2016 - 2018 Xilinx, Inc. | ||
# Michal Simek <[email protected]> | ||
# | ||
|
||
obj-y := board.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
// SPDX-License-Identifier: GPL-2.0+ | ||
/* | ||
* (C) Copyright 2014 - 2018 Xilinx, Inc. | ||
* Michal Simek <[email protected]> | ||
*/ | ||
|
||
#include <common.h> | ||
#include <fdtdec.h> | ||
#include <malloc.h> | ||
#include <asm/io.h> | ||
#include <asm/arch/hardware.h> | ||
|
||
DECLARE_GLOBAL_DATA_PTR; | ||
|
||
int board_init(void) | ||
{ | ||
printf("EL Level:\tEL%d\n", current_el()); | ||
|
||
return 0; | ||
} | ||
|
||
int board_early_init_r(void) | ||
{ | ||
if (current_el() == 3) { | ||
u32 val; | ||
|
||
writel(IOU_SWITCH_CTRL_CLKACT_BIT | | ||
(0x20 << IOU_SWITCH_CTRL_DIVISOR0_SHIFT), | ||
&crlapb_base->iou_switch_ctrl); | ||
|
||
/* Global timer init - Program time stamp reference clk */ | ||
val = readl(&crlapb_base->timestamp_ref_ctrl); | ||
val |= CRL_APB_TIMESTAMP_REF_CTRL_CLKACT_BIT; | ||
writel(val, &crlapb_base->timestamp_ref_ctrl); | ||
|
||
debug("ref ctrl 0x%x\n", | ||
readl(&crlapb_base->timestamp_ref_ctrl)); | ||
|
||
/* Clear reset of timestamp reg */ | ||
writel(0, &crlapb_base->rst_timestamp); | ||
|
||
/* | ||
* Program freq register in System counter and | ||
* enable system counter. | ||
*/ | ||
writel(COUNTER_FREQUENCY, | ||
&iou_scntr_secure->base_frequency_id_register); | ||
|
||
debug("counter val 0x%x\n", | ||
readl(&iou_scntr_secure->base_frequency_id_register)); | ||
|
||
writel(IOU_SCNTRS_CONTROL_EN, | ||
&iou_scntr_secure->counter_control_register); | ||
|
||
debug("scntrs control 0x%x\n", | ||
readl(&iou_scntr_secure->counter_control_register)); | ||
debug("timer 0x%llx\n", get_ticks()); | ||
debug("timer 0x%llx\n", get_ticks()); | ||
} | ||
|
||
return 0; | ||
} | ||
|
||
int dram_init_banksize(void) | ||
{ | ||
fdtdec_setup_memory_banksize(); | ||
|
||
return 0; | ||
} | ||
|
||
int dram_init(void) | ||
{ | ||
if (fdtdec_setup_mem_size_base() != 0) | ||
return -EINVAL; | ||
|
||
return 0; | ||
} | ||
|
||
void reset_cpu(ulong addr) | ||
{ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.