mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
Xilinx changes for v2017.07
ZynqMP: - config cleanup - SD LS mode support - psu_init* cleanup - unmap OCM - Support for SMC Zynq: - add ddrc to Kconfig - add topic-miamilite board support -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEABECAAYFAllJNGcACgkQykllyylKDCEBrACdE1X8RroAQZQ3cN3yEXp/OQ3V D+gAn1PAUvy3zT8UDiJcF1rCxptvlKlv =4ans -----END PGP SIGNATURE----- Merge tag 'xilinx-for-v2017.07' of git://www.denx.de/git/u-boot-microblaze Xilinx changes for v2017.07 ZynqMP: - config cleanup - SD LS mode support - psu_init* cleanup - unmap OCM - Support for SMC Zynq: - add ddrc to Kconfig - add topic-miamilite board support
This commit is contained in:
commit
784667d7f9
23 changed files with 527 additions and 46 deletions
6
README
6
README
|
@ -2534,12 +2534,6 @@ The following options need to be configured:
|
||||||
Define this option to include a destructive SPI flash
|
Define this option to include a destructive SPI flash
|
||||||
test ('sf test').
|
test ('sf test').
|
||||||
|
|
||||||
CONFIG_SF_DUAL_FLASH Dual flash memories
|
|
||||||
|
|
||||||
Define this option to use dual flash support where two flash
|
|
||||||
memories can be connected with a given cs line.
|
|
||||||
Currently Xilinx Zynq qspi supports these type of connections.
|
|
||||||
|
|
||||||
- SystemACE Support:
|
- SystemACE Support:
|
||||||
CONFIG_SYSTEMACE
|
CONFIG_SYSTEMACE
|
||||||
|
|
||||||
|
|
|
@ -37,12 +37,6 @@ static struct mm_region zynqmp_mem_map[] = {
|
||||||
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
|
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
|
||||||
PTE_BLOCK_NON_SHARE |
|
PTE_BLOCK_NON_SHARE |
|
||||||
PTE_BLOCK_PXN | PTE_BLOCK_UXN
|
PTE_BLOCK_PXN | PTE_BLOCK_UXN
|
||||||
}, {
|
|
||||||
.virt = 0xffe00000UL,
|
|
||||||
.phys = 0xffe00000UL,
|
|
||||||
.size = 0x00200000UL,
|
|
||||||
.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
|
|
||||||
PTE_BLOCK_INNER_SHARE
|
|
||||||
}, {
|
}, {
|
||||||
.virt = 0x400000000UL,
|
.virt = 0x400000000UL,
|
||||||
.phys = 0x400000000UL,
|
.phys = 0x400000000UL,
|
||||||
|
@ -104,3 +98,111 @@ unsigned int zynqmp_get_silicon_version(void)
|
||||||
|
|
||||||
return ZYNQMP_CSU_VERSION_SILICON;
|
return ZYNQMP_CSU_VERSION_SILICON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define ZYNQMP_MMIO_READ 0xC2000014
|
||||||
|
#define ZYNQMP_MMIO_WRITE 0xC2000013
|
||||||
|
|
||||||
|
#ifndef CONFIG_SPL_BUILD
|
||||||
|
int invoke_smc(u32 pm_api_id, u32 arg0, u32 arg1, u32 arg2, u32 arg3,
|
||||||
|
u32 *ret_payload)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Added SIP service call Function Identifier
|
||||||
|
* Make sure to stay in x0 register
|
||||||
|
*/
|
||||||
|
struct pt_regs regs;
|
||||||
|
|
||||||
|
regs.regs[0] = pm_api_id;
|
||||||
|
regs.regs[1] = ((u64)arg1 << 32) | arg0;
|
||||||
|
regs.regs[2] = ((u64)arg3 << 32) | arg2;
|
||||||
|
|
||||||
|
smc_call(®s);
|
||||||
|
|
||||||
|
if (ret_payload != NULL) {
|
||||||
|
ret_payload[0] = (u32)regs.regs[0];
|
||||||
|
ret_payload[1] = upper_32_bits(regs.regs[0]);
|
||||||
|
ret_payload[2] = (u32)regs.regs[1];
|
||||||
|
ret_payload[3] = upper_32_bits(regs.regs[1]);
|
||||||
|
ret_payload[4] = (u32)regs.regs[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
return regs.regs[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
#define ZYNQMP_SIP_SVC_GET_API_VERSION 0xC2000001
|
||||||
|
|
||||||
|
#define ZYNQMP_PM_VERSION_MAJOR 0
|
||||||
|
#define ZYNQMP_PM_VERSION_MINOR 3
|
||||||
|
#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)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
u32 ret_payload[PAYLOAD_ARG_CNT];
|
||||||
|
u32 pm_api_version;
|
||||||
|
|
||||||
|
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");
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int zynqmp_mmio_write(const u32 address,
|
||||||
|
const u32 mask,
|
||||||
|
const u32 value)
|
||||||
|
{
|
||||||
|
return invoke_smc(ZYNQMP_MMIO_WRITE, address, mask, value, 0, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
int zynqmp_mmio_read(const u32 address, u32 *value)
|
||||||
|
{
|
||||||
|
u32 ret_payload[PAYLOAD_ARG_CNT];
|
||||||
|
u32 ret;
|
||||||
|
|
||||||
|
if (!value)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
ret = invoke_smc(ZYNQMP_MMIO_READ, address, 0, 0, 0, ret_payload);
|
||||||
|
*value = ret_payload[1];
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
int zynqmp_mmio_write(const u32 address,
|
||||||
|
const u32 mask,
|
||||||
|
const u32 value)
|
||||||
|
{
|
||||||
|
u32 data;
|
||||||
|
u32 value_local = value;
|
||||||
|
|
||||||
|
zynqmp_mmio_read(address, &data);
|
||||||
|
data &= ~mask;
|
||||||
|
value_local &= mask;
|
||||||
|
value_local |= data;
|
||||||
|
writel(value_local, (ulong)address);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int zynqmp_mmio_read(const u32 address, u32 *value)
|
||||||
|
{
|
||||||
|
*value = readl((ulong)address);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -83,9 +83,15 @@ u32 spl_boot_device(void)
|
||||||
case JTAG_MODE:
|
case JTAG_MODE:
|
||||||
return BOOT_DEVICE_RAM;
|
return BOOT_DEVICE_RAM;
|
||||||
#ifdef CONFIG_SPL_MMC_SUPPORT
|
#ifdef CONFIG_SPL_MMC_SUPPORT
|
||||||
case EMMC_MODE:
|
|
||||||
case SD_MODE:
|
|
||||||
case SD_MODE1:
|
case SD_MODE1:
|
||||||
|
case SD1_LSHFT_MODE: /* not working on silicon v1 */
|
||||||
|
/* if both controllers enabled, then these two are the second controller */
|
||||||
|
#if defined(CONFIG_ZYNQ_SDHCI0) && defined(CONFIG_ZYNQ_SDHCI1)
|
||||||
|
return BOOT_DEVICE_MMC2;
|
||||||
|
/* else, fall through, the one SDHCI controller that is enabled is number 1 */
|
||||||
|
#endif
|
||||||
|
case SD_MODE:
|
||||||
|
case EMMC_MODE:
|
||||||
return BOOT_DEVICE_MMC1;
|
return BOOT_DEVICE_MMC1;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_SPL_DFU_SUPPORT
|
#ifdef CONFIG_SPL_DFU_SUPPORT
|
||||||
|
@ -106,10 +112,11 @@ u32 spl_boot_device(void)
|
||||||
|
|
||||||
u32 spl_boot_mode(const u32 boot_device)
|
u32 spl_boot_mode(const u32 boot_device)
|
||||||
{
|
{
|
||||||
switch (spl_boot_device()) {
|
switch (boot_device) {
|
||||||
case BOOT_DEVICE_RAM:
|
case BOOT_DEVICE_RAM:
|
||||||
return 0;
|
return 0;
|
||||||
case BOOT_DEVICE_MMC1:
|
case BOOT_DEVICE_MMC1:
|
||||||
|
case BOOT_DEVICE_MMC2:
|
||||||
return MMCSD_MODE_FS;
|
return MMCSD_MODE_FS;
|
||||||
default:
|
default:
|
||||||
puts("spl: error: unsupported device\n");
|
puts("spl: error: unsupported device\n");
|
||||||
|
|
|
@ -127,6 +127,7 @@ dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb \
|
||||||
zynq-microzed.dtb \
|
zynq-microzed.dtb \
|
||||||
zynq-picozed.dtb \
|
zynq-picozed.dtb \
|
||||||
zynq-topic-miami.dtb \
|
zynq-topic-miami.dtb \
|
||||||
|
zynq-topic-miamilite.dtb \
|
||||||
zynq-topic-miamiplus.dtb \
|
zynq-topic-miamiplus.dtb \
|
||||||
zynq-zc770-xm010.dtb \
|
zynq-zc770-xm010.dtb \
|
||||||
zynq-zc770-xm011.dtb \
|
zynq-zc770-xm011.dtb \
|
||||||
|
|
17
arch/arm/dts/zynq-topic-miamilite.dts
Normal file
17
arch/arm/dts/zynq-topic-miamilite.dts
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* Topic Miami Lite board DTS
|
||||||
|
*
|
||||||
|
* Copyright (C) 2017 Topic Embedded Products
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
|
*/
|
||||||
|
#include "zynq-topic-miami.dts"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Topic Miami Lite Zynq Board";
|
||||||
|
compatible = "topic,miamilite", "xlnx,zynq-7000";
|
||||||
|
};
|
||||||
|
|
||||||
|
&qspi {
|
||||||
|
is-dual = <1>;
|
||||||
|
};
|
|
@ -8,6 +8,8 @@
|
||||||
#ifndef _ASM_ARCH_SYS_PROTO_H
|
#ifndef _ASM_ARCH_SYS_PROTO_H
|
||||||
#define _ASM_ARCH_SYS_PROTO_H
|
#define _ASM_ARCH_SYS_PROTO_H
|
||||||
|
|
||||||
|
#define PAYLOAD_ARG_CNT 5
|
||||||
|
|
||||||
int zynq_slcr_get_mio_pin_status(const char *periph);
|
int zynq_slcr_get_mio_pin_status(const char *periph);
|
||||||
|
|
||||||
unsigned int zynqmp_get_silicon_version(void);
|
unsigned int zynqmp_get_silicon_version(void);
|
||||||
|
@ -16,4 +18,10 @@ void psu_init(void);
|
||||||
|
|
||||||
void handoff_setup(void);
|
void handoff_setup(void);
|
||||||
|
|
||||||
|
void 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,
|
||||||
|
u32 *ret_payload);
|
||||||
|
|
||||||
#endif /* _ASM_ARCH_SYS_PROTO_H */
|
#endif /* _ASM_ARCH_SYS_PROTO_H */
|
||||||
|
|
|
@ -24,6 +24,14 @@ config SPL_SPI_FLASH_SUPPORT
|
||||||
config SPL_SPI_SUPPORT
|
config SPL_SPI_SUPPORT
|
||||||
default y if ZYNQ_QSPI
|
default y if ZYNQ_QSPI
|
||||||
|
|
||||||
|
config ZYNQ_DDRC_INIT
|
||||||
|
bool "Zynq DDRC initialization"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This option used to perform DDR specific initialization
|
||||||
|
if required. There might be cases like ddr less where we
|
||||||
|
want to skip ddr init and this option is useful for it.
|
||||||
|
|
||||||
config SYS_BOARD
|
config SYS_BOARD
|
||||||
default "zynq"
|
default "zynq"
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,9 @@
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
#ifndef CONFIG_ZYNQ_DDRC_INIT
|
||||||
|
void zynq_ddrc_init(void) {}
|
||||||
|
#else
|
||||||
/* Control regsiter bitfield definitions */
|
/* Control regsiter bitfield definitions */
|
||||||
#define ZYNQ_DDRC_CTRLREG_BUSWIDTH_MASK 0xC
|
#define ZYNQ_DDRC_CTRLREG_BUSWIDTH_MASK 0xC
|
||||||
#define ZYNQ_DDRC_CTRLREG_BUSWIDTH_SHIFT 2
|
#define ZYNQ_DDRC_CTRLREG_BUSWIDTH_SHIFT 2
|
||||||
|
@ -46,3 +49,4 @@ void zynq_ddrc_init(void)
|
||||||
puts("ECC disabled ");
|
puts("ECC disabled ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0+
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
#
|
#
|
||||||
|
|
||||||
dtb-y += microblaze-generic.dtb
|
dtb-y += $(shell echo $(CONFIG_DEFAULT_DEVICE_TREE)).dtb
|
||||||
|
|
||||||
targets += $(dtb-y)
|
targets += $(dtb-y)
|
||||||
|
|
||||||
|
|
227
board/topic/zynq/zynq-topic-miamilite/ps7_init_gpl.c
Normal file
227
board/topic/zynq/zynq-topic-miamilite/ps7_init_gpl.c
Normal file
|
@ -0,0 +1,227 @@
|
||||||
|
/*
|
||||||
|
* (c) Copyright 2010-2014 Xilinx, Inc. All rights reserved.
|
||||||
|
* (c) Copyright 2016 Topic Embedded Products.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "../ps7_init_gpl.h"
|
||||||
|
|
||||||
|
static unsigned long ps7_pll_init_data_3_0[] = {
|
||||||
|
EMIT_MASKWRITE(0xF8000008, 0x0000FFFFU, 0x0000DF0DU),
|
||||||
|
EMIT_MASKWRITE(0xF8000110, 0x003FFFF0U, 0x000FA220U),
|
||||||
|
EMIT_MASKWRITE(0xF8000100, 0x0007F000U, 0x00028000U),
|
||||||
|
EMIT_MASKWRITE(0xF8000100, 0x00000010U, 0x00000010U),
|
||||||
|
EMIT_MASKWRITE(0xF8000100, 0x00000001U, 0x00000001U),
|
||||||
|
EMIT_MASKWRITE(0xF8000100, 0x00000001U, 0x00000000U),
|
||||||
|
EMIT_MASKPOLL(0xF800010C, 0x00000001U),
|
||||||
|
EMIT_MASKWRITE(0xF8000100, 0x00000010U, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF8000120, 0x1F003F30U, 0x1F000200U),
|
||||||
|
EMIT_MASKWRITE(0xF8000114, 0x003FFFF0U, 0x0012C220U),
|
||||||
|
EMIT_MASKWRITE(0xF8000104, 0x0007F000U, 0x00020000U),
|
||||||
|
EMIT_MASKWRITE(0xF8000104, 0x00000010U, 0x00000010U),
|
||||||
|
EMIT_MASKWRITE(0xF8000104, 0x00000001U, 0x00000001U),
|
||||||
|
EMIT_MASKWRITE(0xF8000104, 0x00000001U, 0x00000000U),
|
||||||
|
EMIT_MASKPOLL(0xF800010C, 0x00000002U),
|
||||||
|
EMIT_MASKWRITE(0xF8000104, 0x00000010U, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF8000124, 0xFFF00003U, 0x0C200003U),
|
||||||
|
EMIT_MASKWRITE(0xF8000118, 0x003FFFF0U, 0x00113220U),
|
||||||
|
EMIT_MASKWRITE(0xF8000108, 0x0007F000U, 0x00024000U),
|
||||||
|
EMIT_MASKWRITE(0xF8000108, 0x00000010U, 0x00000010U),
|
||||||
|
EMIT_MASKWRITE(0xF8000108, 0x00000001U, 0x00000001U),
|
||||||
|
EMIT_MASKWRITE(0xF8000108, 0x00000001U, 0x00000000U),
|
||||||
|
EMIT_MASKPOLL(0xF800010C, 0x00000004U),
|
||||||
|
EMIT_MASKWRITE(0xF8000108, 0x00000010U, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF8000004, 0x0000FFFFU, 0x0000767BU),
|
||||||
|
EMIT_EXIT(),
|
||||||
|
};
|
||||||
|
|
||||||
|
static unsigned long ps7_clock_init_data_3_0[] = {
|
||||||
|
EMIT_MASKWRITE(0xF8000008, 0x0000FFFFU, 0x0000DF0DU),
|
||||||
|
EMIT_MASKWRITE(0xF8000128, 0x03F03F01U, 0x00302301U),
|
||||||
|
EMIT_MASKWRITE(0xF8000138, 0x00000011U, 0x00000011U),
|
||||||
|
EMIT_MASKWRITE(0xF800013C, 0x00000011U, 0x00000011U),
|
||||||
|
EMIT_MASKWRITE(0xF8000140, 0x03F03F71U, 0x00100141U),
|
||||||
|
EMIT_MASKWRITE(0xF8000144, 0x03F03F71U, 0x00100141U),
|
||||||
|
EMIT_MASKWRITE(0xF8000148, 0x00003F31U, 0x00000C01U),
|
||||||
|
EMIT_MASKWRITE(0xF800014C, 0x00003F31U, 0x00000601U),
|
||||||
|
EMIT_MASKWRITE(0xF8000150, 0x00003F33U, 0x00001803U),
|
||||||
|
EMIT_MASKWRITE(0xF8000154, 0x00003F33U, 0x00000C03U),
|
||||||
|
EMIT_MASKWRITE(0xF8000158, 0x00003F33U, 0x00000601U),
|
||||||
|
EMIT_MASKWRITE(0xF8000168, 0x00003F31U, 0x00000601U),
|
||||||
|
EMIT_MASKWRITE(0xF8000170, 0x03F03F30U, 0x00100C00U),
|
||||||
|
EMIT_MASKWRITE(0xF8000180, 0x03F03F30U, 0x00100C00U),
|
||||||
|
EMIT_MASKWRITE(0xF8000190, 0x03F03F30U, 0x00100600U),
|
||||||
|
EMIT_MASKWRITE(0xF80001A0, 0x03F03F30U, 0x00101800U),
|
||||||
|
EMIT_MASKWRITE(0xF80001C4, 0x00000001U, 0x00000001U),
|
||||||
|
EMIT_MASKWRITE(0xF800012C, 0x01FFCCCDU, 0x01FC4C4DU),
|
||||||
|
EMIT_MASKWRITE(0xF8000004, 0x0000FFFFU, 0x0000767BU),
|
||||||
|
EMIT_EXIT(),
|
||||||
|
};
|
||||||
|
|
||||||
|
static unsigned long ps7_ddr_init_data_3_0[] = {
|
||||||
|
EMIT_MASKWRITE(0xF8006000, 0x0001FFFFU, 0x00000080U),
|
||||||
|
EMIT_MASKWRITE(0xF8006004, 0x0007FFFFU, 0x00001081U),
|
||||||
|
EMIT_MASKWRITE(0xF8006008, 0x03FFFFFFU, 0x03C0780FU),
|
||||||
|
EMIT_MASKWRITE(0xF800600C, 0x03FFFFFFU, 0x02001001U),
|
||||||
|
EMIT_MASKWRITE(0xF8006010, 0x03FFFFFFU, 0x00014001U),
|
||||||
|
EMIT_MASKWRITE(0xF8006014, 0x001FFFFFU, 0x0004281AU),
|
||||||
|
EMIT_MASKWRITE(0xF8006018, 0xF7FFFFFFU, 0x44E458D2U),
|
||||||
|
EMIT_MASKWRITE(0xF800601C, 0xFFFFFFFFU, 0x720238E5U),
|
||||||
|
EMIT_MASKWRITE(0xF8006020, 0x7FDFFFFCU, 0x270872D0U),
|
||||||
|
EMIT_MASKWRITE(0xF8006024, 0x0FFFFFC3U, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF8006028, 0x00003FFFU, 0x00002007U),
|
||||||
|
EMIT_MASKWRITE(0xF800602C, 0xFFFFFFFFU, 0x00000008U),
|
||||||
|
EMIT_MASKWRITE(0xF8006030, 0xFFFFFFFFU, 0x00040930U),
|
||||||
|
EMIT_MASKWRITE(0xF8006034, 0x13FF3FFFU, 0x000116D4U),
|
||||||
|
EMIT_MASKWRITE(0xF8006038, 0x00000003U, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF800603C, 0x000FFFFFU, 0x00000777U),
|
||||||
|
EMIT_MASKWRITE(0xF8006040, 0xFFFFFFFFU, 0xFFF00000U),
|
||||||
|
EMIT_MASKWRITE(0xF8006044, 0x0FFFFFFFU, 0x0F666666U),
|
||||||
|
EMIT_MASKWRITE(0xF8006048, 0x0003F03FU, 0x0003C008U),
|
||||||
|
EMIT_MASKWRITE(0xF8006050, 0xFF0F8FFFU, 0x77010800U),
|
||||||
|
EMIT_MASKWRITE(0xF8006058, 0x00010000U, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF800605C, 0x0000FFFFU, 0x00005003U),
|
||||||
|
EMIT_MASKWRITE(0xF8006060, 0x000017FFU, 0x0000003EU),
|
||||||
|
EMIT_MASKWRITE(0xF8006064, 0x00021FE0U, 0x00020000U),
|
||||||
|
EMIT_MASKWRITE(0xF8006068, 0x03FFFFFFU, 0x00284141U),
|
||||||
|
EMIT_MASKWRITE(0xF800606C, 0x0000FFFFU, 0x00001610U),
|
||||||
|
EMIT_MASKWRITE(0xF8006078, 0x03FFFFFFU, 0x00466111U),
|
||||||
|
EMIT_MASKWRITE(0xF800607C, 0x000FFFFFU, 0x00032222U),
|
||||||
|
EMIT_MASKWRITE(0xF80060A4, 0xFFFFFFFFU, 0x10200802U),
|
||||||
|
EMIT_MASKWRITE(0xF80060A8, 0x0FFFFFFFU, 0x0690CB73U),
|
||||||
|
EMIT_MASKWRITE(0xF80060AC, 0x000001FFU, 0x000001FEU),
|
||||||
|
EMIT_MASKWRITE(0xF80060B0, 0x1FFFFFFFU, 0x1CFFFFFFU),
|
||||||
|
EMIT_MASKWRITE(0xF80060B4, 0x00000200U, 0x00000200U),
|
||||||
|
EMIT_MASKWRITE(0xF80060B8, 0x01FFFFFFU, 0x00200066U),
|
||||||
|
EMIT_MASKWRITE(0xF80060C4, 0x00000003U, 0x00000003U),
|
||||||
|
EMIT_MASKWRITE(0xF80060C4, 0x00000003U, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF80060C8, 0x000000FFU, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF80060DC, 0x00000001U, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF80060F0, 0x0000FFFFU, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF80060F4, 0x0000000FU, 0x00000008U),
|
||||||
|
EMIT_MASKWRITE(0xF8006114, 0x000000FFU, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF8006118, 0x7FFFFFCFU, 0x40000001U),
|
||||||
|
EMIT_MASKWRITE(0xF800611C, 0x7FFFFFCFU, 0x40000001U),
|
||||||
|
EMIT_MASKWRITE(0xF8006120, 0x7FFFFFCFU, 0x40000001U),
|
||||||
|
EMIT_MASKWRITE(0xF8006124, 0x7FFFFFCFU, 0x40000001U),
|
||||||
|
EMIT_MASKWRITE(0xF800612C, 0x000FFFFFU, 0x0003482CU),
|
||||||
|
EMIT_MASKWRITE(0xF8006130, 0x000FFFFFU, 0x00033032U),
|
||||||
|
EMIT_MASKWRITE(0xF8006134, 0x000FFFFFU, 0x0002E81FU),
|
||||||
|
EMIT_MASKWRITE(0xF8006138, 0x000FFFFFU, 0x0002F81AU),
|
||||||
|
EMIT_MASKWRITE(0xF8006140, 0x000FFFFFU, 0x00000035U),
|
||||||
|
EMIT_MASKWRITE(0xF8006144, 0x000FFFFFU, 0x00000035U),
|
||||||
|
EMIT_MASKWRITE(0xF8006148, 0x000FFFFFU, 0x00000035U),
|
||||||
|
EMIT_MASKWRITE(0xF800614C, 0x000FFFFFU, 0x00000035U),
|
||||||
|
EMIT_MASKWRITE(0xF8006154, 0x000FFFFFU, 0x000000ACU),
|
||||||
|
EMIT_MASKWRITE(0xF8006158, 0x000FFFFFU, 0x000000B2U),
|
||||||
|
EMIT_MASKWRITE(0xF800615C, 0x000FFFFFU, 0x0000009FU),
|
||||||
|
EMIT_MASKWRITE(0xF8006160, 0x000FFFFFU, 0x0000009AU),
|
||||||
|
EMIT_MASKWRITE(0xF8006168, 0x001FFFFFU, 0x00000127U),
|
||||||
|
EMIT_MASKWRITE(0xF800616C, 0x001FFFFFU, 0x00000121U),
|
||||||
|
EMIT_MASKWRITE(0xF8006170, 0x001FFFFFU, 0x0000010FU),
|
||||||
|
EMIT_MASKWRITE(0xF8006174, 0x001FFFFFU, 0x00000113U),
|
||||||
|
EMIT_MASKWRITE(0xF800617C, 0x000FFFFFU, 0x000000ECU),
|
||||||
|
EMIT_MASKWRITE(0xF8006180, 0x000FFFFFU, 0x000000F2U),
|
||||||
|
EMIT_MASKWRITE(0xF8006184, 0x000FFFFFU, 0x000000DFU),
|
||||||
|
EMIT_MASKWRITE(0xF8006188, 0x000FFFFFU, 0x000000DAU),
|
||||||
|
EMIT_MASKWRITE(0xF8006190, 0xFFFFFFFFU, 0x1002E080U),
|
||||||
|
EMIT_MASKWRITE(0xF8006194, 0x000FFFFFU, 0x0001FC82U),
|
||||||
|
EMIT_MASKWRITE(0xF8006204, 0xFFFFFFFFU, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF8006208, 0x000703FFU, 0x000003FFU),
|
||||||
|
EMIT_MASKWRITE(0xF800620C, 0x000703FFU, 0x000003FFU),
|
||||||
|
EMIT_MASKWRITE(0xF8006210, 0x000703FFU, 0x000003FFU),
|
||||||
|
EMIT_MASKWRITE(0xF8006214, 0x000703FFU, 0x000003FFU),
|
||||||
|
EMIT_MASKWRITE(0xF8006218, 0x000F03FFU, 0x000003FFU),
|
||||||
|
EMIT_MASKWRITE(0xF800621C, 0x000F03FFU, 0x000003FFU),
|
||||||
|
EMIT_MASKWRITE(0xF8006220, 0x000F03FFU, 0x000003FFU),
|
||||||
|
EMIT_MASKWRITE(0xF8006224, 0x000F03FFU, 0x000003FFU),
|
||||||
|
EMIT_MASKWRITE(0xF80062A8, 0x00000FF5U, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF80062AC, 0xFFFFFFFFU, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF80062B0, 0x003FFFFFU, 0x00005125U),
|
||||||
|
EMIT_MASKWRITE(0xF80062B4, 0x0003FFFFU, 0x000012A8U),
|
||||||
|
EMIT_MASKPOLL(0xF8000B74, 0x00002000U),
|
||||||
|
EMIT_MASKWRITE(0xF8006000, 0x0001FFFFU, 0x00000081U),
|
||||||
|
EMIT_MASKPOLL(0xF8006054, 0x00000007U),
|
||||||
|
EMIT_EXIT(),
|
||||||
|
};
|
||||||
|
|
||||||
|
static unsigned long ps7_mio_init_data_3_0[] = {
|
||||||
|
EMIT_MASKWRITE(0xF8000008, 0x0000FFFFU, 0x0000DF0DU),
|
||||||
|
EMIT_MASKWRITE(0xF8000B40, 0x00000FFFU, 0x00000600U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B44, 0x00000FFFU, 0x00000600U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B48, 0x00000FFFU, 0x00000672U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B4C, 0x00000FFFU, 0x00000672U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B50, 0x00000FFFU, 0x00000674U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B54, 0x00000FFFU, 0x00000674U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B58, 0x00000FFFU, 0x00000600U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B5C, 0xFFFFFFFFU, 0x0018C61CU),
|
||||||
|
EMIT_MASKWRITE(0xF8000B60, 0xFFFFFFFFU, 0x00F9861CU),
|
||||||
|
EMIT_MASKWRITE(0xF8000B64, 0xFFFFFFFFU, 0x00F9861CU),
|
||||||
|
EMIT_MASKWRITE(0xF8000B68, 0xFFFFFFFFU, 0x00F9861CU),
|
||||||
|
EMIT_MASKWRITE(0xF8000B6C, 0x00007FFFU, 0x00000E60U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B70, 0x00000001U, 0x00000001U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B70, 0x00000021U, 0x00000020U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B70, 0x07FEFFFFU, 0x00000823U),
|
||||||
|
EMIT_MASKWRITE(0xF8000004, 0x0000FFFFU, 0x0000767BU),
|
||||||
|
EMIT_EXIT(),
|
||||||
|
};
|
||||||
|
|
||||||
|
static unsigned long ps7_peripherals_init_data_3_0[] = {
|
||||||
|
EMIT_MASKWRITE(0xF8000008, 0x0000FFFFU, 0x0000DF0DU),
|
||||||
|
EMIT_MASKWRITE(0xF8000B48, 0x00000180U, 0x00000180U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B4C, 0x00000180U, 0x00000180U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B50, 0x00000180U, 0x00000180U),
|
||||||
|
EMIT_MASKWRITE(0xF8000B54, 0x00000180U, 0x00000180U),
|
||||||
|
EMIT_MASKWRITE(0xF8000004, 0x0000FFFFU, 0x0000767BU),
|
||||||
|
EMIT_MASKWRITE(0xE0001034, 0x000000FFU, 0x00000006U),
|
||||||
|
EMIT_MASKWRITE(0xE0001018, 0x0000FFFFU, 0x0000007CU),
|
||||||
|
EMIT_MASKWRITE(0xE0001000, 0x000001FFU, 0x00000017U),
|
||||||
|
EMIT_MASKWRITE(0xE0001004, 0x000003FFU, 0x00000020U),
|
||||||
|
EMIT_MASKWRITE(0xE0000034, 0x000000FFU, 0x00000006U),
|
||||||
|
EMIT_MASKWRITE(0xE0000018, 0x0000FFFFU, 0x0000007CU),
|
||||||
|
EMIT_MASKWRITE(0xE0000000, 0x000001FFU, 0x00000017U),
|
||||||
|
EMIT_MASKWRITE(0xE0000004, 0x000003FFU, 0x00000020U),
|
||||||
|
EMIT_MASKWRITE(0xE000D000, 0x000800FFU, 0x000800C1U),
|
||||||
|
EMIT_MASKWRITE(0xF8007000, 0x20000000U, 0x00000000U),
|
||||||
|
EMIT_MASKDELAY(0xF8F00200, 1),
|
||||||
|
EMIT_MASKDELAY(0xF8F00200, 1),
|
||||||
|
EMIT_MASKDELAY(0xF8F00200, 1),
|
||||||
|
EMIT_EXIT(),
|
||||||
|
};
|
||||||
|
|
||||||
|
static unsigned long ps7_post_config_3_0[] = {
|
||||||
|
EMIT_MASKWRITE(0xF8000008, 0x0000FFFFU, 0x0000DF0DU),
|
||||||
|
EMIT_MASKWRITE(0xF8000900, 0x0000000FU, 0x0000000FU),
|
||||||
|
EMIT_MASKWRITE(0xF8000240, 0xFFFFFFFFU, 0x00000000U),
|
||||||
|
EMIT_MASKWRITE(0xF8000004, 0x0000FFFFU, 0x0000767BU),
|
||||||
|
EMIT_EXIT(),
|
||||||
|
};
|
||||||
|
|
||||||
|
int ps7_init(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = ps7_config(ps7_mio_init_data_3_0);
|
||||||
|
if (ret != PS7_INIT_SUCCESS)
|
||||||
|
return ret;
|
||||||
|
ret = ps7_config(ps7_pll_init_data_3_0);
|
||||||
|
if (ret != PS7_INIT_SUCCESS)
|
||||||
|
return ret;
|
||||||
|
ret = ps7_config(ps7_clock_init_data_3_0);
|
||||||
|
if (ret != PS7_INIT_SUCCESS)
|
||||||
|
return ret;
|
||||||
|
ret = ps7_config(ps7_ddr_init_data_3_0);
|
||||||
|
if (ret != PS7_INIT_SUCCESS)
|
||||||
|
return ret;
|
||||||
|
ret = ps7_config(ps7_peripherals_init_data_3_0);
|
||||||
|
if (ret != PS7_INIT_SUCCESS)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
return PS7_INIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ps7_post_config(void)
|
||||||
|
{
|
||||||
|
return ps7_config(ps7_post_config_3_0);
|
||||||
|
}
|
61
board/topic/zynq/zynq-topic-miamilite/ps7_regs.txt
Normal file
61
board/topic/zynq/zynq-topic-miamilite/ps7_regs.txt
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
0xF8000120 0x1F000200 // ARM_CLK_CTRL - divisor = 2 433 MHz (?)
|
||||||
|
0xf8000700 0x202
|
||||||
|
0xf8000704 0x202
|
||||||
|
0xf8000708 0x202
|
||||||
|
0xf800070c 0x202
|
||||||
|
0xf8000710 0x202
|
||||||
|
0xf8000714 0x202
|
||||||
|
0xf8000718 0x202
|
||||||
|
0xf800071c 0x200
|
||||||
|
0xf8000720 0x202
|
||||||
|
0xf8000724 0x202
|
||||||
|
0xf8000728 0x202
|
||||||
|
0xf800072c 0x202
|
||||||
|
0xf8000730 0x202
|
||||||
|
0xf8000734 0x202
|
||||||
|
0xf8000738 0x12e1
|
||||||
|
0xf800073c 0x12e0
|
||||||
|
0xf8000740 0x1200
|
||||||
|
0xf8000744 0x1200
|
||||||
|
0xf8000748 0x1200
|
||||||
|
0xf800074c 0x1200
|
||||||
|
0xf8000750 0x1200
|
||||||
|
0xf8000754 0x1200
|
||||||
|
0xf8000758 0x1200
|
||||||
|
0xf800075c 0x1200
|
||||||
|
0xf8000760 0x1200
|
||||||
|
0xf8000764 0x200
|
||||||
|
0xf8000768 0x1200
|
||||||
|
0xf800076c 0x200
|
||||||
|
0xf8000770 0x304
|
||||||
|
0xf8000774 0x305
|
||||||
|
0xf8000778 0x304
|
||||||
|
0xf800077c 0x305
|
||||||
|
0xf8000780 0x304
|
||||||
|
0xf8000784 0x304
|
||||||
|
0xf8000788 0x304
|
||||||
|
0xf800078c 0x304
|
||||||
|
0xf8000790 0x305
|
||||||
|
0xf8000794 0x304
|
||||||
|
0xf8000798 0x304
|
||||||
|
0xf800079c 0x304
|
||||||
|
0xf80007a0 0x380
|
||||||
|
0xf80007a4 0x380
|
||||||
|
0xf80007a8 0x380
|
||||||
|
0xf80007ac 0x380
|
||||||
|
0xf80007b0 0x380
|
||||||
|
0xf80007b4 0x380
|
||||||
|
0xf80007b8 0x1200
|
||||||
|
0xf80007bc 0x1200
|
||||||
|
0xf80007c0 0x1240
|
||||||
|
0xf80007c4 0x1240
|
||||||
|
0xf80007c8 0x1240
|
||||||
|
0xf80007cc 0x1240
|
||||||
|
0xf80007d0 0x1200
|
||||||
|
0xf80007d4 0x1200
|
||||||
|
0xf8000830 0x380037
|
||||||
|
0xf8000834 0x3a0039
|
||||||
|
0xF800014C 0x00000621 // LQSPI_CLK_CTRL - ARMPLL/6 (200 MHz)
|
||||||
|
0xE000D000 0x800238C1 // QSPI config - divide-by-2
|
||||||
|
0xE000D038 0x00000020 // QSPI loopback - internal, 0 delay
|
||||||
|
0xE000D0A0 0xE2FF06EB // LQSPI_CFG - Quad read, dual flash
|
1
board/xilinx/zynqmp/sleep.h
Normal file
1
board/xilinx/zynqmp/sleep.h
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/* Intentionally empty file for psu_init* */
|
|
@ -33,12 +33,9 @@ int Xil_In32(unsigned long addr)
|
||||||
return readl(addr);
|
return readl(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mask_delay(u32 delay);
|
|
||||||
void usleep(u32 sleep)
|
void usleep(u32 sleep)
|
||||||
{
|
{
|
||||||
udelay(sleep);
|
udelay(sleep);
|
||||||
}
|
}
|
||||||
int mask_poll(u32 add, u32 mask);
|
|
||||||
int mask_pollOnValue(u32 add, u32 mask, u32 value);
|
|
||||||
|
|
||||||
#endif /* XIL_IO_H */
|
#endif /* XIL_IO_H */
|
||||||
|
|
|
@ -113,6 +113,14 @@ static char *zynqmp_get_silicon_idcode_name(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int board_early_init_f(void)
|
||||||
|
{
|
||||||
|
#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_CLK_ZYNQMP)
|
||||||
|
zynqmp_pmufw_version();
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#define ZYNQMP_VERSION_SIZE 9
|
#define ZYNQMP_VERSION_SIZE 9
|
||||||
|
|
||||||
int board_init(void)
|
int board_init(void)
|
||||||
|
|
53
configs/topic_miamilite_defconfig
Normal file
53
configs/topic_miamilite_defconfig
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
CONFIG_ARM=y
|
||||||
|
CONFIG_SYS_VENDOR="topic"
|
||||||
|
CONFIG_SYS_CONFIG_NAME="topic_miami"
|
||||||
|
CONFIG_ARCH_ZYNQ=y
|
||||||
|
CONFIG_SYS_TEXT_BASE=0x4000000
|
||||||
|
CONFIG_BOOT_INIT_FILE="board/topic/zynq/zynq-topic-miamilite/ps7_regs.txt"
|
||||||
|
CONFIG_DEFAULT_DEVICE_TREE="zynq-topic-miamilite"
|
||||||
|
CONFIG_BOOTDELAY=0
|
||||||
|
# CONFIG_DISPLAY_CPUINFO is not set
|
||||||
|
CONFIG_SPL=y
|
||||||
|
CONFIG_HUSH_PARSER=y
|
||||||
|
CONFIG_SYS_PROMPT="zynq-uboot> "
|
||||||
|
# CONFIG_CMD_IMLS is not set
|
||||||
|
# CONFIG_CMD_FLASH is not set
|
||||||
|
CONFIG_CMD_MMC=y
|
||||||
|
CONFIG_CMD_SF=y
|
||||||
|
CONFIG_CMD_I2C=y
|
||||||
|
CONFIG_CMD_USB=y
|
||||||
|
CONFIG_CMD_DFU=y
|
||||||
|
CONFIG_CMD_GPIO=y
|
||||||
|
# CONFIG_CMD_SETEXPR is not set
|
||||||
|
# CONFIG_CMD_NET is not set
|
||||||
|
# CONFIG_CMD_NFS is not set
|
||||||
|
CONFIG_CMD_CACHE=y
|
||||||
|
CONFIG_CMD_EXT4=y
|
||||||
|
CONFIG_CMD_FAT=y
|
||||||
|
CONFIG_CMD_FS_GENERIC=y
|
||||||
|
CONFIG_OF_EMBED=y
|
||||||
|
CONFIG_SPL_DM_SEQ_ALIAS=y
|
||||||
|
CONFIG_DFU_RAM=y
|
||||||
|
CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_ZYNQ=y
|
||||||
|
CONFIG_SF_DUAL_FLASH=y
|
||||||
|
CONFIG_SPI_FLASH=y
|
||||||
|
CONFIG_SPI_FLASH_BAR=y
|
||||||
|
CONFIG_SPI_FLASH_STMICRO=y
|
||||||
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
|
CONFIG_DEBUG_UART=y
|
||||||
|
CONFIG_DEBUG_UART_ZYNQ=y
|
||||||
|
CONFIG_DEBUG_UART_BASE=0xe0000000
|
||||||
|
CONFIG_DEBUG_UART_CLOCK=100000000
|
||||||
|
CONFIG_ZYNQ_QSPI=y
|
||||||
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
CONFIG_USB_ULPI_VIEWPORT=y
|
||||||
|
CONFIG_USB_ULPI=y
|
||||||
|
CONFIG_USB_STORAGE=y
|
||||||
|
CONFIG_USB_GADGET=y
|
||||||
|
CONFIG_CI_UDC=y
|
||||||
|
CONFIG_USB_GADGET_DOWNLOAD=y
|
||||||
|
CONFIG_G_DNL_MANUFACTURER="Xilinx"
|
||||||
|
CONFIG_G_DNL_VENDOR_NUM=0x03fd
|
||||||
|
CONFIG_G_DNL_PRODUCT_NUM=0x0300
|
|
@ -1,6 +1,6 @@
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_SYS_VENDOR="topic"
|
CONFIG_SYS_VENDOR="topic"
|
||||||
CONFIG_SYS_CONFIG_NAME="topic_miamiplus"
|
CONFIG_SYS_CONFIG_NAME="topic_miami"
|
||||||
CONFIG_ARCH_ZYNQ=y
|
CONFIG_ARCH_ZYNQ=y
|
||||||
CONFIG_SYS_TEXT_BASE=0x4000000
|
CONFIG_SYS_TEXT_BASE=0x4000000
|
||||||
CONFIG_BOOT_INIT_FILE="board/topic/zynq/zynq-topic-miamiplus/ps7_regs.txt"
|
CONFIG_BOOT_INIT_FILE="board/topic/zynq/zynq-topic-miamiplus/ps7_regs.txt"
|
||||||
|
@ -29,6 +29,7 @@ CONFIG_SPL_DM_SEQ_ALIAS=y
|
||||||
CONFIG_DFU_RAM=y
|
CONFIG_DFU_RAM=y
|
||||||
CONFIG_MMC_SDHCI=y
|
CONFIG_MMC_SDHCI=y
|
||||||
CONFIG_MMC_SDHCI_ZYNQ=y
|
CONFIG_MMC_SDHCI_ZYNQ=y
|
||||||
|
CONFIG_SF_DUAL_FLASH=y
|
||||||
CONFIG_SPI_FLASH=y
|
CONFIG_SPI_FLASH=y
|
||||||
CONFIG_SPI_FLASH_BAR=y
|
CONFIG_SPI_FLASH_BAR=y
|
||||||
CONFIG_SPI_FLASH_STMICRO=y
|
CONFIG_SPI_FLASH_STMICRO=y
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
*/
|
*/
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
#include <netdev.h>
|
|
||||||
#include <ahci.h>
|
#include <ahci.h>
|
||||||
#include <scsi.h>
|
#include <scsi.h>
|
||||||
#include <asm/arch/hardware.h>
|
#include <asm/arch/hardware.h>
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <zynqmppl.h>
|
#include <zynqmppl.h>
|
||||||
#include <linux/sizes.h>
|
#include <linux/sizes.h>
|
||||||
|
#include <asm/arch/sys_proto.h>
|
||||||
|
|
||||||
#define DUMMY_WORD 0xffffffff
|
#define DUMMY_WORD 0xffffffff
|
||||||
|
|
||||||
|
@ -191,25 +192,14 @@ static int zynqmp_validate_bitstream(xilinx_desc *desc, const void *buf,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int invoke_smc(ulong id, ulong reg0, ulong reg1, ulong reg2)
|
|
||||||
{
|
|
||||||
struct pt_regs regs;
|
|
||||||
regs.regs[0] = id;
|
|
||||||
regs.regs[1] = reg0;
|
|
||||||
regs.regs[2] = reg1;
|
|
||||||
regs.regs[3] = reg2;
|
|
||||||
|
|
||||||
smc_call(®s);
|
|
||||||
|
|
||||||
return regs.regs[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
static int zynqmp_load(xilinx_desc *desc, const void *buf, size_t bsize,
|
static int zynqmp_load(xilinx_desc *desc, const void *buf, size_t bsize,
|
||||||
bitstream_type bstype)
|
bitstream_type bstype)
|
||||||
{
|
{
|
||||||
u32 swap;
|
u32 swap;
|
||||||
ulong bin_buf, flags;
|
ulong bin_buf;
|
||||||
int ret;
|
int ret;
|
||||||
|
u32 buf_lo, buf_hi;
|
||||||
|
u32 ret_payload[PAYLOAD_ARG_CNT];
|
||||||
|
|
||||||
if (zynqmp_validate_bitstream(desc, buf, bsize, bsize, &swap))
|
if (zynqmp_validate_bitstream(desc, buf, bsize, bsize, &swap))
|
||||||
return FPGA_FAIL;
|
return FPGA_FAIL;
|
||||||
|
@ -224,9 +214,10 @@ static int zynqmp_load(xilinx_desc *desc, const void *buf, size_t bsize,
|
||||||
else
|
else
|
||||||
bsize = bsize / 4;
|
bsize = bsize / 4;
|
||||||
|
|
||||||
flags = (u32)bsize | ((u64)bstype << 32);
|
buf_lo = (u32)bin_buf;
|
||||||
|
buf_hi = upper_32_bits(bin_buf);
|
||||||
ret = invoke_smc(ZYNQMP_SIP_SVC_PM_FPGA_LOAD, bin_buf, flags, 0);
|
ret = invoke_smc(ZYNQMP_SIP_SVC_PM_FPGA_LOAD, buf_lo, buf_hi, bsize,
|
||||||
|
bstype, ret_payload);
|
||||||
if (ret)
|
if (ret)
|
||||||
debug("PL FPGA LOAD fail\n");
|
debug("PL FPGA LOAD fail\n");
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,13 @@ config SPI_FLASH_BAR
|
||||||
Bank/Extended address registers are used to access the flash
|
Bank/Extended address registers are used to access the flash
|
||||||
which has size > 16MiB in 3-byte addressing.
|
which has size > 16MiB in 3-byte addressing.
|
||||||
|
|
||||||
|
config SF_DUAL_FLASH
|
||||||
|
bool "SPI DUAL flash memory support"
|
||||||
|
depends on SPI_FLASH
|
||||||
|
help
|
||||||
|
Enable this option to support two flash memories connected to a single
|
||||||
|
controller. Currently Xilinx Zynq qspi supports this.
|
||||||
|
|
||||||
if SPI_FLASH
|
if SPI_FLASH
|
||||||
|
|
||||||
config SPI_FLASH_ATMEL
|
config SPI_FLASH_ATMEL
|
||||||
|
|
|
@ -56,7 +56,6 @@
|
||||||
#undef CONFIG_SF_DEFAULT_SPEED
|
#undef CONFIG_SF_DEFAULT_SPEED
|
||||||
#define CONFIG_SF_DEFAULT_SPEED 108000000
|
#define CONFIG_SF_DEFAULT_SPEED 108000000
|
||||||
#define CONFIG_SF_DEFAULT_MODE SPI_MODE_0
|
#define CONFIG_SF_DEFAULT_MODE SPI_MODE_0
|
||||||
#undef CONFIG_SF_DUAL_FLASH
|
|
||||||
#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
|
#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
|
||||||
#undef CONFIG_SPI_FLASH_WINBOND
|
#undef CONFIG_SPI_FLASH_WINBOND
|
||||||
#undef CONFIG_SPI_FLASH_ISSI
|
#undef CONFIG_SPI_FLASH_ISSI
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
#include "topic_miami.h"
|
|
||||||
#define CONFIG_SF_DUAL_FLASH
|
|
|
@ -29,9 +29,6 @@
|
||||||
#define CONFIG_SYS_MEMTEST_START 0
|
#define CONFIG_SYS_MEMTEST_START 0
|
||||||
#define CONFIG_SYS_MEMTEST_END 1000
|
#define CONFIG_SYS_MEMTEST_END 1000
|
||||||
|
|
||||||
/* Have release address at the end of 256MB for now */
|
|
||||||
#define CPU_RELEASE_ADDR 0xFFFFFF0
|
|
||||||
|
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR CONFIG_SYS_TEXT_BASE
|
#define CONFIG_SYS_INIT_SP_ADDR CONFIG_SYS_TEXT_BASE
|
||||||
|
|
||||||
/* Generic Timer Definitions - setup in EL3. Setup by ATF for other cases */
|
/* Generic Timer Definitions - setup in EL3. Setup by ATF for other cases */
|
||||||
|
@ -292,11 +289,13 @@
|
||||||
# define CONFIG_ENV_MAX_ENTRIES 10
|
# define CONFIG_ENV_MAX_ENTRIES 10
|
||||||
|
|
||||||
# define CONFIG_SYS_SPL_MALLOC_START 0x20000000
|
# define CONFIG_SYS_SPL_MALLOC_START 0x20000000
|
||||||
# define CONFIG_SYS_SPL_MALLOC_SIZE 0x10000000
|
# define CONFIG_SYS_SPL_MALLOC_SIZE 0x100000
|
||||||
|
|
||||||
#ifdef CONFIG_SPL_SYS_MALLOC_SIMPLE
|
#ifdef CONFIG_SPL_SYS_MALLOC_SIMPLE
|
||||||
# error "Disable CONFIG_SPL_SYS_MALLOC_SIMPLE. Full malloc needs to be used"
|
# error "Disable CONFIG_SPL_SYS_MALLOC_SIMPLE. Full malloc needs to be used"
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define CONFIG_BOARD_EARLY_INIT_F
|
||||||
|
|
||||||
#endif /* __XILINX_ZYNQMP_H */
|
#endif /* __XILINX_ZYNQMP_H */
|
||||||
|
|
|
@ -2284,7 +2284,6 @@ CONFIG_SF_DEFAULT_BUS
|
||||||
CONFIG_SF_DEFAULT_CS
|
CONFIG_SF_DEFAULT_CS
|
||||||
CONFIG_SF_DEFAULT_MODE
|
CONFIG_SF_DEFAULT_MODE
|
||||||
CONFIG_SF_DEFAULT_SPEED
|
CONFIG_SF_DEFAULT_SPEED
|
||||||
CONFIG_SF_DUAL_FLASH
|
|
||||||
CONFIG_SGI_IP28
|
CONFIG_SGI_IP28
|
||||||
CONFIG_SH4_PCI
|
CONFIG_SH4_PCI
|
||||||
CONFIG_SH73A0
|
CONFIG_SH73A0
|
||||||
|
|
Loading…
Reference in a new issue