Merge tag 'xilinx-for-v2018.11' of git://git.denx.de/u-boot-microblaze
Xilinx changes for v2018.11 - Handle BOARD_LATE_INIT via Kconfig SPL: - Enable GZIP for all partitions types(not only for kernel) ZynqMP: - Rearrange pmufw version handling - Support newer PMUFW with improved fpga load sequence Zynq: - Cleanup config file - Simplify zybo config by enabling option via Kconfig net: - Fix gems max-speed property reading - Enable support for fixed-link phys
This commit is contained in:
@@ -863,7 +863,6 @@ config ARCH_VF610
|
||||
config ARCH_ZYNQ
|
||||
bool "Xilinx Zynq based platform"
|
||||
select BOARD_EARLY_INIT_F if WDT
|
||||
select BOARD_LATE_INIT
|
||||
select CLK
|
||||
select CLK_ZYNQ
|
||||
select CPU_V7A
|
||||
@@ -883,6 +882,7 @@ config ARCH_ZYNQ
|
||||
select SPL_SEPARATE_BSS if SPL
|
||||
select SUPPORT_SPL
|
||||
imply ARCH_EARLY_INIT_R
|
||||
imply BOARD_LATE_INIT
|
||||
imply CMD_CLK
|
||||
imply CMD_DM
|
||||
imply CMD_SPL
|
||||
@@ -900,7 +900,6 @@ config ARCH_ZYNQMP_R5
|
||||
config ARCH_ZYNQMP
|
||||
bool "Xilinx ZynqMP based platform"
|
||||
select ARM64
|
||||
select BOARD_LATE_INIT
|
||||
select CLK
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
@@ -909,6 +908,7 @@ config ARCH_ZYNQMP
|
||||
select SPL_BOARD_INIT if SPL
|
||||
select SPL_CLK if SPL
|
||||
select SUPPORT_SPL
|
||||
imply BOARD_LATE_INIT
|
||||
imply CMD_DM
|
||||
imply FAT_WRITE
|
||||
|
||||
|
||||
@@ -171,38 +171,28 @@ int __maybe_unused invoke_smc(u32 pm_api_id, u32 arg0, u32 arg1, u32 arg2,
|
||||
return regs.regs[0];
|
||||
}
|
||||
|
||||
#define ZYNQMP_SIP_SVC_GET_API_VERSION 0xC2000001
|
||||
|
||||
#define ZYNQMP_PM_VERSION_MAJOR 1
|
||||
#define ZYNQMP_PM_VERSION_MINOR 0
|
||||
#define ZYNQMP_PM_VERSION_MAJOR_SHIFT 16
|
||||
#define ZYNQMP_PM_VERSION_MINOR_MASK 0xFFFF
|
||||
|
||||
#define ZYNQMP_PM_VERSION \
|
||||
((ZYNQMP_PM_VERSION_MAJOR << ZYNQMP_PM_VERSION_MAJOR_SHIFT) | \
|
||||
ZYNQMP_PM_VERSION_MINOR)
|
||||
|
||||
#if defined(CONFIG_CLK_ZYNQMP)
|
||||
void zynqmp_pmufw_version(void)
|
||||
unsigned int zynqmp_pmufw_version(void)
|
||||
{
|
||||
int ret;
|
||||
u32 ret_payload[PAYLOAD_ARG_CNT];
|
||||
u32 pm_api_version;
|
||||
static u32 pm_api_version = ZYNQMP_PM_VERSION_INVALID;
|
||||
|
||||
ret = invoke_smc(ZYNQMP_SIP_SVC_GET_API_VERSION, 0, 0, 0, 0,
|
||||
ret_payload);
|
||||
pm_api_version = ret_payload[1];
|
||||
/*
|
||||
* Get PMU version only once and later
|
||||
* just return stored values instead of
|
||||
* asking PMUFW again.
|
||||
*/
|
||||
if (pm_api_version == ZYNQMP_PM_VERSION_INVALID) {
|
||||
ret = invoke_smc(ZYNQMP_SIP_SVC_GET_API_VERSION, 0, 0, 0, 0,
|
||||
ret_payload);
|
||||
pm_api_version = ret_payload[1];
|
||||
|
||||
if (ret)
|
||||
panic("PMUFW is not found - Please load it!\n");
|
||||
if (ret)
|
||||
panic("PMUFW is not found - Please load it!\n");
|
||||
}
|
||||
|
||||
printf("PMUFW:\tv%d.%d\n",
|
||||
pm_api_version >> ZYNQMP_PM_VERSION_MAJOR_SHIFT,
|
||||
pm_api_version & ZYNQMP_PM_VERSION_MINOR_MASK);
|
||||
|
||||
if (pm_api_version < ZYNQMP_PM_VERSION)
|
||||
panic("PMUFW version error. Expected: v%d.%d\n",
|
||||
ZYNQMP_PM_VERSION_MAJOR, ZYNQMP_PM_VERSION_MINOR);
|
||||
return pm_api_version;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -21,6 +21,21 @@
|
||||
|
||||
#define ZYNQMP_FPGA_AUTH_DDR 1
|
||||
|
||||
#define ZYNQMP_SIP_SVC_GET_API_VERSION 0xC2000001
|
||||
|
||||
#define ZYNQMP_PM_VERSION_MAJOR 1
|
||||
#define ZYNQMP_PM_VERSION_MINOR 0
|
||||
#define ZYNQMP_PM_VERSION_MAJOR_SHIFT 16
|
||||
#define ZYNQMP_PM_VERSION_MINOR_MASK 0xFFFF
|
||||
|
||||
#define ZYNQMP_PM_VERSION \
|
||||
((ZYNQMP_PM_VERSION_MAJOR << ZYNQMP_PM_VERSION_MAJOR_SHIFT) | \
|
||||
ZYNQMP_PM_VERSION_MINOR)
|
||||
|
||||
#define ZYNQMP_PM_VERSION_INVALID ~0
|
||||
|
||||
#define PMUFW_V1_0 ((1 << ZYNQMP_PM_VERSION_MAJOR_SHIFT) | 0)
|
||||
|
||||
enum {
|
||||
IDCODE,
|
||||
VERSION,
|
||||
@@ -44,7 +59,7 @@ unsigned int zynqmp_get_silicon_version(void);
|
||||
|
||||
void handoff_setup(void);
|
||||
|
||||
void zynqmp_pmufw_version(void);
|
||||
unsigned int zynqmp_pmufw_version(void);
|
||||
int zynqmp_mmio_write(const u32 address, const u32 mask, const u32 value);
|
||||
int zynqmp_mmio_read(const u32 address, u32 *value);
|
||||
int invoke_smc(u32 pm_api_id, u32 arg0, u32 arg1, u32 arg2, u32 arg3,
|
||||
|
||||
Reference in New Issue
Block a user