From: Michal Simek Date: Tue, 21 Oct 2014 09:05:12 +0000 (+0200) Subject: Merge tag 'v2014.10' into master X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=218540c95768d4cb8b132c15164824438ebbec9c;p=thirdparty%2Fu-boot.git Merge tag 'v2014.10' into master - Move zynqmp to Kconfig style - Fix ARM64 mainline code for gicv2 case diff --git a/arch/arm/include/asm/macro.h b/arch/arm/include/asm/macro.h index 541b443..1c8c425 100644 (file) --- a/arch/arm/include/asm/macro.h +++ b/arch/arm/include/asm/macro.h @@ -193,7 +193,7 @@ lr .req x30 0 : wfi ldr \wreg2, [\xreg1, GICC_AIAR] str \wreg2, [\xreg1, GICC_AEOIR] - and \wreg2, \wreg2, #3ff + and \wreg2, \wreg2, #0x3ff cbnz \wreg2, 0b .endm #endif Signed-off-by: Michal Simek --- 218540c95768d4cb8b132c15164824438ebbec9c diff --cc arch/arm/Kconfig index 00000000000,72558b85620..5097b91fe40 mode 000000,100644..100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@@ -1,0 -1,702 +1,707 @@@ + menu "ARM architecture" + depends on ARM + + config SYS_ARCH + default "arm" + + config ARM64 + bool + + choice + prompt "Target select" + + config TARGET_INTEGRATORAP_CM720T + bool "Support integratorap_cm720t" + + config TARGET_INTEGRATORAP_CM920T + bool "Support integratorap_cm920t" + + config TARGET_INTEGRATORCP_CM920T + bool "Support integratorcp_cm920t" + + config TARGET_A320EVB + bool "Support a320evb" + + config TARGET_AT91RM9200EK + bool "Support at91rm9200ek" + + config TARGET_EB_CPUX9K2 + bool "Support eb_cpux9k2" + + config TARGET_CPUAT91 + bool "Support cpuat91" + + config TARGET_EDB93XX + bool "Support edb93xx" + + config TARGET_SCB9328 + bool "Support scb9328" + + config TARGET_CM4008 + bool "Support cm4008" + + config TARGET_CM41XX + bool "Support cm41xx" + + config TARGET_VCMA9 + bool "Support VCMA9" + + config TARGET_SMDK2410 + bool "Support smdk2410" + + config TARGET_INTEGRATORAP_CM926EJS + bool "Support integratorap_cm926ejs" + + config TARGET_INTEGRATORCP_CM926EJS + bool "Support integratorcp_cm926ejs" + + config TARGET_ASPENITE + bool "Support aspenite" + + config TARGET_GPLUGD + bool "Support gplugd" + + config TARGET_AFEB9260 + bool "Support afeb9260" + + config TARGET_AT91SAM9260EK + bool "Support at91sam9260ek" + + config TARGET_AT91SAM9261EK + bool "Support at91sam9261ek" + + config TARGET_AT91SAM9263EK + bool "Support at91sam9263ek" + + config TARGET_AT91SAM9M10G45EK + bool "Support at91sam9m10g45ek" + + config TARGET_AT91SAM9N12EK + bool "Support at91sam9n12ek" + + config TARGET_AT91SAM9RLEK + bool "Support at91sam9rlek" + + config TARGET_AT91SAM9X5EK + bool "Support at91sam9x5ek" + + config TARGET_SNAPPER9260 + bool "Support snapper9260" + + config TARGET_VL_MA2SC + bool "Support vl_ma2sc" + + config TARGET_SBC35_A9G20 + bool "Support sbc35_a9g20" + + config TARGET_TNY_A9260 + bool "Support tny_a9260" + + config TARGET_USB_A9263 + bool "Support usb_a9263" + + config TARGET_ETHERNUT5 + bool "Support ethernut5" + + config TARGET_TOP9000 + bool "Support top9000" + + config TARGET_MEESC + bool "Support meesc" + + config TARGET_OTC570 + bool "Support otc570" + + config TARGET_CPU9260 + bool "Support cpu9260" + + config TARGET_PM9261 + bool "Support pm9261" + + config TARGET_PM9263 + bool "Support pm9263" + + config TARGET_PM9G45 + bool "Support pm9g45" + + config TARGET_CORVUS + bool "Support corvus" + + config TARGET_TAURUS + bool "Support taurus" + + config TARGET_STAMP9G20 + bool "Support stamp9g20" + + config ARCH_DAVINCI + bool "TI DaVinci" + help + Support for TI's DaVinci platform. + + config KIRKWOOD + bool "Marvell Kirkwood" + + config TARGET_DEVKIT3250 + bool "Support devkit3250" + + config TARGET_JADECPU + bool "Support jadecpu" + + config TARGET_MX25PDK + bool "Support mx25pdk" + + config TARGET_TX25 + bool "Support tx25" + + config TARGET_ZMX25 + bool "Support zmx25" + + config TARGET_APF27 + bool "Support apf27" + + config TARGET_IMX27LITE + bool "Support imx27lite" + + config TARGET_MAGNESIUM + bool "Support magnesium" + + config TARGET_APX4DEVKIT + bool "Support apx4devkit" + + config TARGET_XFI3 + bool "Support xfi3" + + config TARGET_M28EVK + bool "Support m28evk" + + config TARGET_MX23EVK + bool "Support mx23evk" + + config TARGET_MX28EVK + bool "Support mx28evk" + + config TARGET_MX23_OLINUXINO + bool "Support mx23_olinuxino" + + config TARGET_BG0900 + bool "Support bg0900" + + config TARGET_SANSA_FUZE_PLUS + bool "Support sansa_fuze_plus" + + config TARGET_SC_SPS_1 + bool "Support sc_sps_1" + + config ARCH_NOMADIK + bool "ST-Ericsson Nomadik" + + config ORION5X + bool "Marvell Orion" + + config TARGET_DKB + bool "Support dkb" + + config TARGET_SPEAR300 + bool "Support spear300" + + config TARGET_SPEAR310 + bool "Support spear310" + + config TARGET_SPEAR320 + bool "Support spear320" + + config TARGET_SPEAR600 + bool "Support spear600" + + config TARGET_X600 + bool "Support x600" + + config ARCH_VERSATILE + bool "ARM Ltd. Versatile family" + + config TARGET_INTEGRATORCP_CM1136 + bool "Support integratorcp_cm1136" + + config TARGET_IMX31_PHYCORE + bool "Support imx31_phycore" + + config TARGET_QONG + bool "Support qong" + + config TARGET_MX31ADS + bool "Support mx31ads" + + config TARGET_MX31PDK + bool "Support mx31pdk" + + config TARGET_TT01 + bool "Support tt01" + + config TARGET_IMX31_LITEKIT + bool "Support imx31_litekit" + + config TARGET_WOODBURN + bool "Support woodburn" + + config TARGET_WOODBURN_SD + bool "Support woodburn_sd" + + config TARGET_FLEA3 + bool "Support flea3" + + config TARGET_MX35PDK + bool "Support mx35pdk" + + config TARGET_RPI_B + bool "Support rpi_b" + + config TARGET_TNETV107X_EVM + bool "Support tnetv107x_evm" + + config TARGET_INTEGRATORAP_CM946ES + bool "Support integratorap_cm946es" + + config TARGET_INTEGRATORCP_CM946ES + bool "Support integratorcp_cm946es" + + config TARGET_VEXPRESS_CA15_TC2 + bool "Support vexpress_ca15_tc2" + + config TARGET_VEXPRESS_CA5X2 + bool "Support vexpress_ca5x2" + + config TARGET_VEXPRESS_CA9X4 + bool "Support vexpress_ca9x4" + + config TARGET_KWB + bool "Support kwb" + + config TARGET_TSERIES + bool "Support tseries" + + config TARGET_CM_T335 + bool "Support cm_t335" + + config TARGET_PEPPER + bool "Support pepper" + + config TARGET_AM335X_IGEP0033 + bool "Support am335x_igep0033" + + config TARGET_PCM051 + bool "Support pcm051" + + config TARGET_DRACO + bool "Support draco" + + config TARGET_DXR2 + bool "Support dxr2" + + config TARGET_PXM2 + bool "Support pxm2" + + config TARGET_RUT + bool "Support rut" + + config TARGET_PENGWYN + bool "Support pengwyn" + + config TARGET_AM335X_EVM + bool "Support am335x_evm" + + config TARGET_AM43XX_EVM + bool "Support am43xx_evm" + + config TARGET_TI814X_EVM + bool "Support ti814x_evm" + + config TARGET_TI816X_EVM + bool "Support ti816x_evm" + + config TARGET_SAMA5D3_XPLAINED + bool "Support sama5d3_xplained" + + config TARGET_SAMA5D3XEK + bool "Support sama5d3xek" + + config TARGET_BCM28155_AP + bool "Support bcm28155_ap" + + config TARGET_BCM958300K + bool "Support bcm958300k" + + config TARGET_BCM958622HR + bool "Support bcm958622hr" + + config ARCH_EXYNOS + bool "Samsung EXYNOS" + + config ARCH_S5PC1XX + bool "Samsung S5PC1XX" + + config ARCH_HIGHBANK + bool "Calxeda Highbank" + + config ARCH_KEYSTONE + bool "TI Keystone" + + config TARGET_M53EVK + bool "Support m53evk" + + config TARGET_IMA3_MX53 + bool "Support ima3-mx53" + + config TARGET_MX51EVK + bool "Support mx51evk" + + config TARGET_MX53ARD + bool "Support mx53ard" + + config TARGET_MX53EVK + bool "Support mx53evk" + + config TARGET_MX53LOCO + bool "Support mx53loco" + + config TARGET_MX53SMD + bool "Support mx53smd" + + config TARGET_MX51_EFIKAMX + bool "Support mx51_efikamx" + + config TARGET_VISION2 + bool "Support vision2" + + config TARGET_UDOO + bool "Support udoo" + + config TARGET_WANDBOARD + bool "Support wandboard" + + config TARGET_TITANIUM + bool "Support titanium" + + config TARGET_NITROGEN6X + bool "Support nitrogen6x" + + config TARGET_CGTQMX6EVAL + bool "Support cgtqmx6eval" + + config TARGET_EMBESTMX6BOARDS + bool "Support embestmx6boards" + + config TARGET_ARISTAINETOS + bool "Support aristainetos" + + config TARGET_MX6QARM2 + bool "Support mx6qarm2" + + config TARGET_MX6QSABREAUTO + bool "Support mx6qsabreauto" + + config TARGET_MX6SABRESD + bool "Support mx6sabresd" + + config TARGET_MX6SLEVK + bool "Support mx6slevk" + + config TARGET_MX6SXSABRESD + bool "Support mx6sxsabresd" + + config TARGET_GW_VENTANA + bool "Support gw_ventana" + + config TARGET_HUMMINGBOARD + bool "Support hummingboard" + + config TARGET_TQMA6 + bool "TQ Systems TQMa6 board" + + config TARGET_OT1200 + bool "Bachmann OT1200" + + config OMAP34XX + bool "OMAP34XX SoC" + + config OMAP44XX + bool "OMAP44XX SoC" + + config OMAP54XX + bool "OMAP54XX SoC" + + config RMOBILE + bool "Renesas ARM SoCs" + + config TARGET_CM_FX6 + bool "Support cm_fx6" + + config TARGET_SOCFPGA_CYCLONE5 + bool "Support socfpga_cyclone5" + + config TARGET_SUN4I + bool "Support sun4i" + + config TARGET_SUN5I + bool "Support sun5i" + + config TARGET_SUN7I + bool "Support sun7i" + + config TARGET_SNOWBALL + bool "Support snowball" + + config TARGET_U8500_HREF + bool "Support u8500_href" + + config TARGET_VF610TWR + bool "Support vf610twr" + + config ZYNQ + bool "Xilinx Zynq Platform" + ++config TARGET_XILINX_ZYNQMP ++ bool "Support Xilinx ZynqMP Platform" ++ select ARM64 ++ + config TEGRA + bool "NVIDIA Tegra" + select SPL + select OF_CONTROL if !SPL_BUILD + + config TARGET_VEXPRESS_AEMV8A + bool "Support vexpress_aemv8a" + select ARM64 + + config TARGET_LS2085A_EMU + bool "Support ls2085a_emu" + select ARM64 + + config TARGET_LS2085A_SIMU + bool "Support ls2085a_simu" + select ARM64 + + config TARGET_LS1021AQDS + bool "Support ls1021aqds_nor" + + config TARGET_LS1021ATWR + bool "Support ls1021atwr_nor" + + config TARGET_BALLOON3 + bool "Support balloon3" + + config TARGET_H2200 + bool "Support h2200" + + config TARGET_PALMLD + bool "Support palmld" + + config TARGET_PALMTC + bool "Support palmtc" + + config TARGET_PALMTREO680 + bool "Support palmtreo680" + + config TARGET_PXA255_IDP + bool "Support pxa255_idp" + + config TARGET_TRIZEPSIV + bool "Support trizepsiv" + + config TARGET_VPAC270 + bool "Support vpac270" + + config TARGET_XAENIAX + bool "Support xaeniax" + + config TARGET_ZIPITZ2 + bool "Support zipitz2" + + config TARGET_LP8X4X + bool "Support lp8x4x" + + config TARGET_COLIBRI_PXA270 + bool "Support colibri_pxa270" + + config TARGET_JORNADA + bool "Support jornada" + + config ARCH_UNIPHIER + bool "Panasonic UniPhier platform" + + endchoice + + source "arch/arm/cpu/armv8/Kconfig" + + source "arch/arm/cpu/arm926ejs/davinci/Kconfig" + + source "arch/arm/cpu/armv7/exynos/Kconfig" + + source "arch/arm/cpu/armv7/highbank/Kconfig" + + source "arch/arm/cpu/armv7/keystone/Kconfig" + + source "arch/arm/cpu/arm926ejs/kirkwood/Kconfig" + + source "arch/arm/cpu/arm926ejs/nomadik/Kconfig" + + source "arch/arm/cpu/armv7/omap3/Kconfig" + + source "arch/arm/cpu/armv7/omap4/Kconfig" + + source "arch/arm/cpu/armv7/omap5/Kconfig" + + source "arch/arm/cpu/arm926ejs/orion5x/Kconfig" + + source "arch/arm/cpu/armv7/rmobile/Kconfig" + + source "arch/arm/cpu/armv7/s5pc1xx/Kconfig" + + source "arch/arm/cpu/armv7/tegra-common/Kconfig" + + source "arch/arm/cpu/armv7/uniphier/Kconfig" + + source "arch/arm/cpu/arm926ejs/versatile/Kconfig" + + source "arch/arm/cpu/armv7/zynq/Kconfig" + + source "board/aristainetos/Kconfig" + source "board/BuR/kwb/Kconfig" + source "board/BuR/tseries/Kconfig" + source "board/BuS/eb_cpux9k2/Kconfig" + source "board/BuS/vl_ma2sc/Kconfig" + source "board/CarMediaLab/flea3/Kconfig" + source "board/Marvell/aspenite/Kconfig" + source "board/Marvell/dkb/Kconfig" + source "board/Marvell/gplugd/Kconfig" + source "board/afeb9260/Kconfig" + source "board/altera/socfpga/Kconfig" + source "board/armadeus/apf27/Kconfig" + source "board/armltd/integrator/Kconfig" + source "board/armltd/vexpress/Kconfig" + source "board/armltd/vexpress64/Kconfig" + source "board/atmel/at91rm9200ek/Kconfig" + source "board/atmel/at91sam9260ek/Kconfig" + source "board/atmel/at91sam9261ek/Kconfig" + source "board/atmel/at91sam9263ek/Kconfig" + source "board/atmel/at91sam9m10g45ek/Kconfig" + source "board/atmel/at91sam9n12ek/Kconfig" + source "board/atmel/at91sam9rlek/Kconfig" + source "board/atmel/at91sam9x5ek/Kconfig" + source "board/atmel/sama5d3_xplained/Kconfig" + source "board/atmel/sama5d3xek/Kconfig" + source "board/bachmann/ot1200/Kconfig" + source "board/balloon3/Kconfig" + source "board/barco/titanium/Kconfig" + source "board/bluegiga/apx4devkit/Kconfig" + source "board/bluewater/snapper9260/Kconfig" + source "board/boundary/nitrogen6x/Kconfig" + source "board/broadcom/bcm28155_ap/Kconfig" + source "board/broadcom/bcm958300k/Kconfig" + source "board/broadcom/bcm958622hr/Kconfig" + source "board/calao/sbc35_a9g20/Kconfig" + source "board/calao/tny_a9260/Kconfig" + source "board/calao/usb_a9263/Kconfig" + source "board/cirrus/edb93xx/Kconfig" + source "board/cm4008/Kconfig" + source "board/cm41xx/Kconfig" + source "board/compulab/cm_t335/Kconfig" + source "board/compulab/cm_fx6/Kconfig" + source "board/congatec/cgtqmx6eval/Kconfig" + source "board/creative/xfi3/Kconfig" + source "board/davedenx/qong/Kconfig" + source "board/denx/m28evk/Kconfig" + source "board/denx/m53evk/Kconfig" + source "board/egnite/ethernut5/Kconfig" + source "board/embest/mx6boards/Kconfig" + source "board/emk/top9000/Kconfig" + source "board/esd/meesc/Kconfig" + source "board/esd/otc570/Kconfig" + source "board/esg/ima3-mx53/Kconfig" + source "board/eukrea/cpu9260/Kconfig" + source "board/eukrea/cpuat91/Kconfig" + source "board/faraday/a320evb/Kconfig" + source "board/freescale/ls2085a/Kconfig" + source "board/freescale/ls1021aqds/Kconfig" + source "board/freescale/ls1021atwr/Kconfig" + source "board/freescale/mx23evk/Kconfig" + source "board/freescale/mx25pdk/Kconfig" + source "board/freescale/mx28evk/Kconfig" + source "board/freescale/mx31ads/Kconfig" + source "board/freescale/mx31pdk/Kconfig" + source "board/freescale/mx35pdk/Kconfig" + source "board/freescale/mx51evk/Kconfig" + source "board/freescale/mx53ard/Kconfig" + source "board/freescale/mx53evk/Kconfig" + source "board/freescale/mx53loco/Kconfig" + source "board/freescale/mx53smd/Kconfig" + source "board/freescale/mx6qarm2/Kconfig" + source "board/freescale/mx6qsabreauto/Kconfig" + source "board/freescale/mx6sabresd/Kconfig" + source "board/freescale/mx6slevk/Kconfig" + source "board/freescale/mx6sxsabresd/Kconfig" + source "board/freescale/vf610twr/Kconfig" + source "board/gateworks/gw_ventana/Kconfig" + source "board/genesi/mx51_efikamx/Kconfig" + source "board/gumstix/pepper/Kconfig" + source "board/h2200/Kconfig" + source "board/hale/tt01/Kconfig" + source "board/icpdas/lp8x4x/Kconfig" + source "board/imx31_phycore/Kconfig" + source "board/isee/igep0033/Kconfig" + source "board/jornada/Kconfig" + source "board/karo/tx25/Kconfig" + source "board/logicpd/imx27lite/Kconfig" + source "board/logicpd/imx31_litekit/Kconfig" + source "board/mpl/vcma9/Kconfig" + source "board/olimex/mx23_olinuxino/Kconfig" + source "board/palmld/Kconfig" + source "board/palmtc/Kconfig" + source "board/palmtreo680/Kconfig" + source "board/phytec/pcm051/Kconfig" + source "board/ppcag/bg0900/Kconfig" + source "board/pxa255_idp/Kconfig" + source "board/raspberrypi/rpi_b/Kconfig" + source "board/ronetix/pm9261/Kconfig" + source "board/ronetix/pm9263/Kconfig" + source "board/ronetix/pm9g45/Kconfig" + source "board/samsung/smdk2410/Kconfig" + source "board/sandisk/sansa_fuze_plus/Kconfig" + source "board/scb9328/Kconfig" + source "board/schulercontrol/sc_sps_1/Kconfig" + source "board/siemens/corvus/Kconfig" + source "board/siemens/draco/Kconfig" + source "board/siemens/pxm2/Kconfig" + source "board/siemens/rut/Kconfig" + source "board/siemens/taurus/Kconfig" + source "board/silica/pengwyn/Kconfig" + source "board/solidrun/hummingboard/Kconfig" + source "board/spear/spear300/Kconfig" + source "board/spear/spear310/Kconfig" + source "board/spear/spear320/Kconfig" + source "board/spear/spear600/Kconfig" + source "board/spear/x600/Kconfig" + source "board/st-ericsson/snowball/Kconfig" + source "board/st-ericsson/u8500/Kconfig" + source "board/sunxi/Kconfig" + source "board/syteco/jadecpu/Kconfig" + source "board/syteco/zmx25/Kconfig" + source "board/taskit/stamp9g20/Kconfig" + source "board/ti/am335x/Kconfig" + source "board/ti/am43xx/Kconfig" + source "board/ti/ti814x/Kconfig" + source "board/ti/ti816x/Kconfig" + source "board/ti/tnetv107xevm/Kconfig" + source "board/timll/devkit3250/Kconfig" + source "board/toradex/colibri_pxa270/Kconfig" + source "board/tqc/tqma6/Kconfig" + source "board/trizepsiv/Kconfig" + source "board/ttcontrol/vision2/Kconfig" + source "board/udoo/Kconfig" + source "board/vpac270/Kconfig" + source "board/wandboard/Kconfig" + source "board/woodburn/Kconfig" + source "board/xaeniax/Kconfig" ++source "board/xilinx/zynqmp/Kconfig" + source "board/zipitz2/Kconfig" + + endmenu diff --cc arch/arm/include/asm/macro.h index f77e4b880e4,541b4432549..1c8c4251ee0 --- a/arch/arm/include/asm/macro.h +++ b/arch/arm/include/asm/macro.h @@@ -105,6 -105,99 +105,99 @@@ lr .req x3 cbz \xreg1, \master_label .endm + .macro armv8_switch_to_el2_m, xreg1 + /* 64bit EL2 | HCE | SMD | RES1 (Bits[5:4]) | Non-secure EL0/EL1 */ + mov \xreg1, #0x5b1 + msr scr_el3, \xreg1 + msr cptr_el3, xzr /* Disable coprocessor traps to EL3 */ + mov \xreg1, #0x33ff + msr cptr_el2, \xreg1 /* Disable coprocessor traps to EL2 */ + + /* Initialize SCTLR_EL2 + * + * setting RES1 bits (29,28,23,22,18,16,11,5,4) to 1 + * and RES0 bits (31,30,27,26,24,21,20,17,15-13,10-6) + + * EE,WXN,I,SA,C,A,M to 0 + */ + mov \xreg1, #0x0830 + movk \xreg1, #0x30C5, lsl #16 + msr sctlr_el2, \xreg1 + + /* Return to the EL2_SP2 mode from EL3 */ + mov \xreg1, sp + msr sp_el2, \xreg1 /* Migrate SP */ + mrs \xreg1, vbar_el3 + msr vbar_el2, \xreg1 /* Migrate VBAR */ + mov \xreg1, #0x3c9 + msr spsr_el3, \xreg1 /* EL2_SP2 | D | A | I | F */ + msr elr_el3, lr + eret + .endm + + .macro armv8_switch_to_el1_m, xreg1, xreg2 + /* Initialize Generic Timers */ + mrs \xreg1, cnthctl_el2 + orr \xreg1, \xreg1, #0x3 /* Enable EL1 access to timers */ + msr cnthctl_el2, \xreg1 + msr cntvoff_el2, xzr + + /* Initilize MPID/MPIDR registers */ + mrs \xreg1, midr_el1 + mrs \xreg2, mpidr_el1 + msr vpidr_el2, \xreg1 + msr vmpidr_el2, \xreg2 + + /* Disable coprocessor traps */ + mov \xreg1, #0x33ff + msr cptr_el2, \xreg1 /* Disable coprocessor traps to EL2 */ + msr hstr_el2, xzr /* Disable coprocessor traps to EL2 */ + mov \xreg1, #3 << 20 + msr cpacr_el1, \xreg1 /* Enable FP/SIMD at EL1 */ + + /* Initialize HCR_EL2 */ + mov \xreg1, #(1 << 31) /* 64bit EL1 */ + orr \xreg1, \xreg1, #(1 << 29) /* Disable HVC */ + msr hcr_el2, \xreg1 + + /* SCTLR_EL1 initialization + * + * setting RES1 bits (29,28,23,22,20,11) to 1 + * and RES0 bits (31,30,27,21,17,13,10,6) + + * UCI,EE,EOE,WXN,nTWE,nTWI,UCT,DZE,I,UMA,SED,ITD, + * CP15BEN,SA0,SA,C,A,M to 0 + */ + mov \xreg1, #0x0800 + movk \xreg1, #0x30d0, lsl #16 + msr sctlr_el1, \xreg1 + + /* Return to the EL1_SP1 mode from EL2 */ + mov \xreg1, sp + msr sp_el1, \xreg1 /* Migrate SP */ + mrs \xreg1, vbar_el2 + msr vbar_el1, \xreg1 /* Migrate VBAR */ + mov \xreg1, #0x3c5 + msr spsr_el2, \xreg1 /* EL1_SP1 | D | A | I | F */ + msr elr_el2, lr + eret + .endm + + #if defined(CONFIG_GICV3) + .macro gic_wait_for_interrupt_m xreg1 + 0 : wfi + mrs \xreg1, ICC_IAR1_EL1 + msr ICC_EOIR1_EL1, \xreg1 + cbnz \xreg1, 0b + .endm + #elif defined(CONFIG_GICV2) + .macro gic_wait_for_interrupt_m xreg1, wreg2 + 0 : wfi + ldr \wreg2, [\xreg1, GICC_AIAR] + str \wreg2, [\xreg1, GICC_AEOIR] - and \wreg2, \wreg2, #3ff ++ and \wreg2, \wreg2, #0x3ff + cbnz \wreg2, 0b + .endm + #endif + #endif /* CONFIG_ARM64 */ #endif /* __ASSEMBLY__ */ diff --cc board/xilinx/zynqmp/Kconfig index 00000000000,00000000000..b07932e8058 new file mode 100644 --- /dev/null +++ b/board/xilinx/zynqmp/Kconfig @@@ -1,0 -1,0 +1,15 @@@ ++if TARGET_XILINX_ZYNQMP ++ ++config SYS_BOARD ++ default "zynqmp" ++ ++config SYS_VENDOR ++ default "xilinx" ++ ++config SYS_SOC ++ default "zynqmp" ++ ++config SYS_CONFIG_NAME ++ default "xilinx_zynqmp" ++ ++endif diff --cc board/xilinx/zynqmp/MAINTAINERS index 00000000000,00000000000..da333404594 new file mode 100644 --- /dev/null +++ b/board/xilinx/zynqmp/MAINTAINERS @@@ -1,0 -1,0 +1,6 @@@ ++XILINX_ZYNQMP BOARD ++M: Michal Simek ++S: Maintained ++F: board/xilinx/zynqmp/ ++F: include/configs/xilinx_zynqmp.h ++F: configs/xilinx_zynqmp_defconfig diff --cc configs/xilinx_zynqmp_defconfig index 00000000000,00000000000..1e176634a3e new file mode 100644 --- /dev/null +++ b/configs/xilinx_zynqmp_defconfig @@@ -1,0 -1,0 +1,3 @@@ ++CONFIG_ARM=y ++CONFIG_TARGET_XILINX_ZYNQMP=y ++CONFIG_DEFAULT_DEVICE_TREE="zynqmp" diff --cc include/configs/xilinx_zynqmp.h index d1521bd71d2,00000000000..086d6a90293 mode 100644,000000..100644 --- a/include/configs/xilinx_zynqmp.h +++ b/include/configs/xilinx_zynqmp.h @@@ -1,196 -1,0 +1,194 @@@ +/* + * Configuration for Xilinx ZynqMP + * (C) Copyright 2014 Xilinx, Inc. + * Michal Simek + * + * Based on Configuration for Versatile Express + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __XILINX_ZYNQMP_H +#define __XILINX_ZYNQMP_H + +#define CONFIG_REMAKE_ELF + +/* #define CONFIG_ARMV8_SWITCH_TO_EL1 */ + +#define CONFIG_SYS_NO_FLASH + +#define CONFIG_SYS_GENERIC_BOARD + +#define XILINX_ZYNQMP + +/* Generic Interrupt Controller Definitions */ +#define CONFIG_GICV2 +#define GICD_BASE 0xF9001000 +#define GICC_BASE 0xF9002000 + +/* Physical Memory Map */ +#define CONFIG_NR_DRAM_BANKS 1 +#define CONFIG_SYS_SDRAM_BASE 0 +#define CONFIG_SYS_SDRAM_SIZE 0x40000000 + +#define CONFIG_SYS_MEMTEST_START 0x10000000 +#define CONFIG_SYS_MEMTEST_END 0x40000000 + +/* Have release address at the end of 256MB for now */ +#define CPU_RELEASE_ADDR 0xFFFFFF0 + +/* Cache Definitions */ +#define CONFIG_SYS_DCACHE_OFF + +#define CONFIG_IDENT_STRING " Xilinx ZynqMP" +#define CONFIG_BOOTP_VCI_STRING "U-boot.armv8.Xilinx_ZynqMP" + +/* Text base on 16MB for now - 0 doesn't work */ +#define CONFIG_SYS_TEXT_BASE 0x8000000 +#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x7fff0) + +/* Flat Device Tree Definitions */ +#define CONFIG_OF_LIBFDT + - #define CONFIG_DEFAULT_DEVICE_TREE zynqmp - +/* Generic Timer Definitions - setup in EL3. Setup by ATF for other cases */ +#define COUNTER_FREQUENCY 4000000 + +/* Size of malloc() pool */ +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 0x400000) + +/* Serial setup */ +#define CONFIG_ZYNQ_SERIAL_UART0 +#define CONFIG_ZYNQ_SERIAL + +#define CONFIG_ZYNQ_QSPI +#define CONFIG_ZYNQ_SDHCI0 + +#define CONFIG_CONS_INDEX 0 +#define CONFIG_BAUDRATE 115200 +#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 } + +/* Command line configuration */ +#define CONFIG_CMD_BDI +#define CONFIG_CMD_BOOTD +#define CONFIG_CMD_CACHE +#define CONFIG_CMD_ECHO +#define CONFIG_CMD_ENV +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_EXT4 +#define CONFIG_CMD_FAT +#define CONFIG_CMD_FLASH +#define CONFIG_CMD_IMI +#define CONFIG_CMD_MEMORY +#define CONFIG_CMD_MISC +#define CONFIG_CMD_RUN +#define CONFIG_CMD_SAVEENV +#define CONFIG_CMD_SOURCE +#define CONFIG_DOS_PARTITION + +#define CONFIG_CMD_NET +#define CONFIG_CMD_PING +#define CONFIG_CMD_DHCP +#define CONFIG_CMD_MII +#define CONFIG_CMD_TFTPPUT + +/* BOOTP options */ +#define CONFIG_BOOTP_BOOTFILESIZE +#define CONFIG_BOOTP_BOOTPATH +#define CONFIG_BOOTP_GATEWAY +#define CONFIG_BOOTP_HOSTNAME +#define CONFIG_BOOTP_MAY_FAIL +#define CONFIG_BOOTP_SERVERIP + + +#ifdef CONFIG_ZYNQ_QSPI +# define CONFIG_SF_DEFAULT_SPEED 30000000 +# define CONFIG_SPI_FLASH +# define CONFIG_SPI_FLASH_BAR +# define CONFIG_SF_DUAL_FLASH +# define CONFIG_SPI_FLASH_SPANSION +# define CONFIG_SPI_FLASH_STMICRO +# define CONFIG_SPI_FLASH_WINBOND +# define CONFIG_CMD_SPI +# define CONFIG_CMD_SF +#endif + +#if defined(CONFIG_ZYNQ_SDHCI0) || defined(CONFIG_ZYNQ_SDHCI1) +# define CONFIG_MMC +# define CONFIG_GENERIC_MMC +# define CONFIG_SDHCI +# define CONFIG_ZYNQ_SDHCI +# define CONFIG_CMD_MMC +#endif + +#if defined (CONFIG_ZYNQ_SDHCI) || defined(CONFIG_ZYNQ_USB) +# define CONFIG_FAT_WRITE +# define CONFIG_CMD_EXT4_WRITE +#endif + +/* Miscellaneous configurable options */ +#define CONFIG_SYS_LOAD_ADDR 0x8000000 + +/* Initial environment variables */ +#define CONFIG_EXTRA_ENV_SETTINGS \ + "ethaddr=00:0a:35:00:01:22\0" \ + "kernel_addr=0x200000\0" \ + "initrd_addr=0xa00000\0" \ + "initrd_size=0x2000000\0" \ + "fdt_addr=0x100000\0" \ + "fdt_high=0x10000000\0" \ + "netboot=tftpboot 80000 Image && tftpboot f000000 system.dtb && booti 80000 - f000000\0" \ + "qspiboot=sf probe 0 && sf read f000000 100000 40000 && " \ + "sf read 80000 140000 1800000 && booti 80000 - f000000\0" \ + "sdboot=mmcinfo && fatload mmc 0:0 f000000 system.dtb && " \ + "fatload mmc 0:0 f000000 Image && booti 80000 - f000000\0" \ + "jtagboot=tftpboot 10000000 image.ub && bootm\0" + +#define CONFIG_BOOTARGS "console=ttyPS0,115200 earlycon=cdns,mmio,0xff000000,115200n8" +#define CONFIG_BOOTCOMMAND "echo Hello Xilinx ZynqMP; run $modeboot" +#define CONFIG_BOOTDELAY 5 + +#define CONFIG_BOARD_LATE_INIT + +/* Do not preserve environment */ +#define CONFIG_ENV_IS_NOWHERE 1 +#define CONFIG_ENV_SIZE 0x1000 + +/* Monitor Command Prompt */ +/* Console I/O Buffer Size */ +#define CONFIG_SYS_CBSIZE 512 +#define CONFIG_SYS_PROMPT "ZynqMP> " +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ + sizeof(CONFIG_SYS_PROMPT) + 16) +#define CONFIG_SYS_HUSH_PARSER +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE +#define CONFIG_SYS_LONGHELP +#define CONFIG_CMDLINE_EDITING +/* max command args */ +#define CONFIG_SYS_MAXARGS 64 + +#define CONFIG_ZYNQ_GEM0 +#define CONFIG_ZYNQ_GEM_PHY_ADDR0 7 + +/* Ethernet driver */ +#if defined(CONFIG_ZYNQ_GEM0) || defined(CONFIG_ZYNQ_GEM1) || \ + defined(CONFIG_ZYNQ_GEM2) || defined(CONFIG_ZYNQ_GEM3) +# define CONFIG_NET_MULTI +# define CONFIG_ZYNQ_GEM +# define CONFIG_MII +# define CONFIG_SYS_FAULT_ECHO_LINK_DOWN +# define CONFIG_PHYLIB +# define CONFIG_PHY_MARVELL +#endif + +#define CONFIG_FIT +#define CONFIG_FIT_VERBOSE /* enable fit_format_{error,warning}() */ + +#define CONFIG_SYS_BOOTM_LEN (60 * 1024 * 1024) + +#define CONFIG_CMD_BOOTI +#define CONFIG_CMD_UNZIP + +#define CONFIG_BOARD_EARLY_INIT_R +#define CONFIG_CLOCKS + +#endif /* __XILINX_ZYNQMP_H */