mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
Merge tag 'xilinx-for-v2023.07-rc1' of https://source.denx.de/u-boot/custodians/u-boot-microblaze into next
Xilinx changes for v2023.07-rc1 cmd: - Print results in hex instead of dec in smc command firmware: - Cover missing ZYNQMP_FIRMWARE dependencies fpga: - fix loads for unencrypted use case relocation - Add support for BE systems spi: - Fix xilinx_spi init reset sequence arasan nand: - Remove hardcoded bbt option - Set ofnode value xilinx: - Enable SMC command - Fix some sparse issues zynqmp: - Remove cdns,zynq-gem compatible string - Add optee node - Some DT cleanups zynq: - Some DT cleanups microblaze - Remove MANUAL_RELOC option
This commit is contained in:
@@ -258,7 +258,7 @@
|
||||
};
|
||||
|
||||
gem0: ethernet@e000b000 {
|
||||
compatible = "xlnx,zynq-gem", "cdns,zynq-gem", "cdns,gem";
|
||||
compatible = "xlnx,zynq-gem", "cdns,gem";
|
||||
reg = <0xe000b000 0x1000>;
|
||||
status = "disabled";
|
||||
interrupts = <0 22 4>;
|
||||
@@ -269,7 +269,7 @@
|
||||
};
|
||||
|
||||
gem1: ethernet@e000c000 {
|
||||
compatible = "xlnx,zynq-gem", "cdns,zynq-gem", "cdns,gem";
|
||||
compatible = "xlnx,zynq-gem", "cdns,gem";
|
||||
reg = <0xe000c000 0x1000>;
|
||||
status = "disabled";
|
||||
interrupts = <0 45 4>;
|
||||
@@ -369,20 +369,20 @@
|
||||
};
|
||||
};
|
||||
|
||||
dmac_s: dmac@f8003000 {
|
||||
dmac_s: dma-controller@f8003000 {
|
||||
compatible = "arm,pl330", "arm,primecell";
|
||||
reg = <0xf8003000 0x1000>;
|
||||
interrupt-parent = <&intc>;
|
||||
interrupt-names = "abort", "dma0", "dma1", "dma2", "dma3",
|
||||
"dma4", "dma5", "dma6", "dma7";
|
||||
/*
|
||||
* interrupt-names = "abort", "dma0", "dma1", "dma2", "dma3",
|
||||
* "dma4", "dma5", "dma6", "dma7";
|
||||
*/
|
||||
interrupts = <0 13 4>,
|
||||
<0 14 4>, <0 15 4>,
|
||||
<0 16 4>, <0 17 4>,
|
||||
<0 40 4>, <0 41 4>,
|
||||
<0 42 4>, <0 43 4>;
|
||||
#dma-cells = <1>;
|
||||
#dma-channels = <8>;
|
||||
#dma-requests = <4>;
|
||||
clocks = <&clkc 27>;
|
||||
clock-names = "apb_pclk";
|
||||
};
|
||||
|
||||
@@ -34,14 +34,14 @@
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
autorepeat;
|
||||
sw14 {
|
||||
switch-14 {
|
||||
label = "sw14";
|
||||
gpios = <&gpio0 12 0>;
|
||||
linux,code = <108>; /* down */
|
||||
wakeup-source;
|
||||
autorepeat;
|
||||
};
|
||||
sw13 {
|
||||
switch-13 {
|
||||
label = "sw13";
|
||||
gpios = <&gpio0 14 0>;
|
||||
linux,code = <103>; /* up */
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
autorepeat;
|
||||
K1 {
|
||||
key {
|
||||
label = "K1";
|
||||
gpios = <&gpio0 0x32 0x1>;
|
||||
linux,code = <0x66>;
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
|
||||
/* gem2/gem3 via PL with phys u79@2 and u80@3 */
|
||||
|
||||
&pinctrl0 { /* required by spec */
|
||||
&pinctrl0 {
|
||||
status = "okay";
|
||||
|
||||
pinctrl_uart1_default: uart1-default {
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
|
||||
/* gem2/gem3 via PL with phys u79@2 and u80@3 */
|
||||
|
||||
&pinctrl0 { /* required by spec */
|
||||
&pinctrl0 {
|
||||
status = "okay";
|
||||
|
||||
pinctrl_uart1_default: uart1-default {
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
&gem3 { /* required by spec */
|
||||
&gem3 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gem3_default>;
|
||||
@@ -185,7 +185,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl0 { /* required by spec */
|
||||
&pinctrl0 {
|
||||
status = "okay";
|
||||
|
||||
pinctrl_uart1_default: uart1-default {
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
&gem3 { /* required by spec */
|
||||
&gem3 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gem3_default>;
|
||||
@@ -172,7 +172,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl0 { /* required by spec */
|
||||
&pinctrl0 {
|
||||
status = "okay";
|
||||
|
||||
pinctrl_uart1_default: uart1-default {
|
||||
|
||||
@@ -142,6 +142,7 @@
|
||||
label = "main-storage-0";
|
||||
nand-ecc-step-size = <1024>;
|
||||
nand-ecc-strength = <24>;
|
||||
nand-on-flash-bbt;
|
||||
|
||||
partition@0 { /* for testing purpose */
|
||||
label = "nand-fsbl-uboot";
|
||||
@@ -178,6 +179,7 @@
|
||||
label = "main-storage-1";
|
||||
nand-ecc-step-size = <1024>;
|
||||
nand-ecc-strength = <24>;
|
||||
nand-on-flash-bbt;
|
||||
|
||||
partition@0 { /* for testing purpose */
|
||||
label = "nand1-fsbl-uboot";
|
||||
|
||||
@@ -128,54 +128,79 @@
|
||||
arasan,has-mdma;
|
||||
num-cs = <2>;
|
||||
|
||||
partition@0 { /* for testing purpose */
|
||||
label = "nand-fsbl-uboot";
|
||||
reg = <0x0 0x0 0x400000>;
|
||||
};
|
||||
partition@1 { /* for testing purpose */
|
||||
label = "nand-linux";
|
||||
reg = <0x0 0x400000 0x1400000>;
|
||||
};
|
||||
partition@2 { /* for testing purpose */
|
||||
label = "nand-device-tree";
|
||||
reg = <0x0 0x1800000 0x400000>;
|
||||
};
|
||||
partition@3 { /* for testing purpose */
|
||||
label = "nand-rootfs";
|
||||
reg = <0x0 0x1C00000 0x1400000>;
|
||||
};
|
||||
partition@4 { /* for testing purpose */
|
||||
label = "nand-bitstream";
|
||||
reg = <0x0 0x3000000 0x400000>;
|
||||
};
|
||||
partition@5 { /* for testing purpose */
|
||||
label = "nand-misc";
|
||||
reg = <0x0 0x3400000 0xFCC00000>;
|
||||
};
|
||||
nand@0 {
|
||||
reg = <0x0>;
|
||||
#address-cells = <0x2>;
|
||||
#size-cells = <0x1>;
|
||||
nand-ecc-mode = "soft";
|
||||
nand-ecc-algo = "bch";
|
||||
nand-rb = <0>;
|
||||
label = "main-storage-0";
|
||||
nand-ecc-step-size = <1024>;
|
||||
nand-ecc-strength = <24>;
|
||||
nand-on-flash-bbt;
|
||||
|
||||
partition@6 { /* for testing purpose */
|
||||
label = "nand1-fsbl-uboot";
|
||||
reg = <0x1 0x0 0x400000>;
|
||||
partition@0 { /* for testing purpose */
|
||||
label = "nand-fsbl-uboot";
|
||||
reg = <0x0 0x0 0x400000>;
|
||||
};
|
||||
partition@1 { /* for testing purpose */
|
||||
label = "nand-linux";
|
||||
reg = <0x0 0x400000 0x1400000>;
|
||||
};
|
||||
partition@2 { /* for testing purpose */
|
||||
label = "nand-device-tree";
|
||||
reg = <0x0 0x1800000 0x400000>;
|
||||
};
|
||||
partition@3 { /* for testing purpose */
|
||||
label = "nand-rootfs";
|
||||
reg = <0x0 0x1C00000 0x1400000>;
|
||||
};
|
||||
partition@4 { /* for testing purpose */
|
||||
label = "nand-bitstream";
|
||||
reg = <0x0 0x3000000 0x400000>;
|
||||
};
|
||||
partition@5 { /* for testing purpose */
|
||||
label = "nand-misc";
|
||||
reg = <0x0 0x3400000 0xFCC00000>;
|
||||
};
|
||||
};
|
||||
partition@7 { /* for testing purpose */
|
||||
label = "nand1-linux";
|
||||
reg = <0x1 0x400000 0x1400000>;
|
||||
};
|
||||
partition@8 { /* for testing purpose */
|
||||
label = "nand1-device-tree";
|
||||
reg = <0x1 0x1800000 0x400000>;
|
||||
};
|
||||
partition@9 { /* for testing purpose */
|
||||
label = "nand1-rootfs";
|
||||
reg = <0x1 0x1C00000 0x1400000>;
|
||||
};
|
||||
partition@10 { /* for testing purpose */
|
||||
label = "nand1-bitstream";
|
||||
reg = <0x1 0x3000000 0x400000>;
|
||||
};
|
||||
partition@11 { /* for testing purpose */
|
||||
label = "nand1-misc";
|
||||
reg = <0x1 0x3400000 0xFCC00000>;
|
||||
nand@1 {
|
||||
reg = <0x1>;
|
||||
#address-cells = <0x2>;
|
||||
#size-cells = <0x1>;
|
||||
nand-ecc-mode = "soft";
|
||||
nand-ecc-algo = "bch";
|
||||
nand-rb = <0>;
|
||||
label = "main-storage-1";
|
||||
nand-ecc-step-size = <1024>;
|
||||
nand-ecc-strength = <24>;
|
||||
nand-on-flash-bbt;
|
||||
|
||||
partition@0 { /* for testing purpose */
|
||||
label = "nand1-fsbl-uboot";
|
||||
reg = <0x0 0x0 0x400000>;
|
||||
};
|
||||
partition@1 { /* for testing purpose */
|
||||
label = "nand1-linux";
|
||||
reg = <0x0 0x400000 0x1400000>;
|
||||
};
|
||||
partition@2 { /* for testing purpose */
|
||||
label = "nand1-device-tree";
|
||||
reg = <0x0 0x1800000 0x400000>;
|
||||
};
|
||||
partition@3 { /* for testing purpose */
|
||||
label = "nand1-rootfs";
|
||||
reg = <0x0 0x1C00000 0x1400000>;
|
||||
};
|
||||
partition@4 { /* for testing purpose */
|
||||
label = "nand1-bitstream";
|
||||
reg = <0x0 0x3000000 0x400000>;
|
||||
};
|
||||
partition@5 { /* for testing purpose */
|
||||
label = "nand1-misc";
|
||||
reg = <0x0 0x3400000 0xFCC00000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
linux,default-trigger = "bluetooth-power";
|
||||
};
|
||||
|
||||
vbus-det { /* U5 USB5744 VBUS detection via MIO25 */
|
||||
led-vbus-det { /* U5 USB5744 VBUS detection via MIO25 */
|
||||
label = "vbus_det";
|
||||
gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "on";
|
||||
|
||||
@@ -147,6 +147,11 @@
|
||||
};
|
||||
|
||||
firmware {
|
||||
optee: optee {
|
||||
compatible = "linaro,optee-tz";
|
||||
method = "smc";
|
||||
};
|
||||
|
||||
zynqmp_firmware: zynqmp-firmware {
|
||||
compatible = "xlnx,zynqmp-firmware";
|
||||
#power-domain-cells = <1>;
|
||||
@@ -529,7 +534,7 @@
|
||||
};
|
||||
|
||||
gem0: ethernet@ff0b0000 {
|
||||
compatible = "xlnx,zynqmp-gem", "cdns,zynqmp-gem", "cdns,gem";
|
||||
compatible = "xlnx,zynqmp-gem", "cdns,gem";
|
||||
status = "disabled";
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <0 57 4>, <0 57 4>;
|
||||
@@ -544,7 +549,7 @@
|
||||
};
|
||||
|
||||
gem1: ethernet@ff0c0000 {
|
||||
compatible = "xlnx,zynqmp-gem", "cdns,zynqmp-gem", "cdns,gem";
|
||||
compatible = "xlnx,zynqmp-gem", "cdns,gem";
|
||||
status = "disabled";
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <0 59 4>, <0 59 4>;
|
||||
@@ -559,7 +564,7 @@
|
||||
};
|
||||
|
||||
gem2: ethernet@ff0d0000 {
|
||||
compatible = "xlnx,zynqmp-gem", "cdns,zynqmp-gem", "cdns,gem";
|
||||
compatible = "xlnx,zynqmp-gem", "cdns,gem";
|
||||
status = "disabled";
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <0 61 4>, <0 61 4>;
|
||||
@@ -574,7 +579,7 @@
|
||||
};
|
||||
|
||||
gem3: ethernet@ff0e0000 {
|
||||
compatible = "xlnx,zynqmp-gem", "cdns,zynqmp-gem", "cdns,gem";
|
||||
compatible = "xlnx,zynqmp-gem", "cdns,gem";
|
||||
status = "disabled";
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <0 63 4>, <0 63 4>;
|
||||
@@ -874,6 +879,7 @@
|
||||
snps,enable_guctl1_resume_quirk;
|
||||
snps,enable_guctl1_ipd_quirk;
|
||||
snps,xhci-stream-quirk;
|
||||
snps,resume-hs-terminations;
|
||||
/* dma-coherent; */
|
||||
};
|
||||
};
|
||||
@@ -905,6 +911,7 @@
|
||||
snps,enable_guctl1_resume_quirk;
|
||||
snps,enable_guctl1_ipd_quirk;
|
||||
snps,xhci-stream-quirk;
|
||||
snps,resume-hs-terminations;
|
||||
/* dma-coherent; */
|
||||
};
|
||||
};
|
||||
|
||||
@@ -8,9 +8,4 @@
|
||||
|
||||
void mem_map_fill(void);
|
||||
|
||||
static inline int zynqmp_mmio_write(const u32 address, const u32 mask,
|
||||
const u32 value)
|
||||
{
|
||||
BUILD_BUG();
|
||||
return -EINVAL;
|
||||
}
|
||||
int zynqmp_mmio_write(const u32 address, const u32 mask, const u32 value);
|
||||
|
||||
@@ -13,8 +13,4 @@ enum {
|
||||
void tcm_init(u8 mode);
|
||||
void mem_map_fill(void);
|
||||
|
||||
static inline int zynqmp_mmio_write(const u32 address, const u32 mask, const u32 value)
|
||||
{
|
||||
BUILD_BUG();
|
||||
return -EINVAL;
|
||||
}
|
||||
int zynqmp_mmio_write(const u32 address, const u32 mask, const u32 value);
|
||||
|
||||
@@ -4,19 +4,8 @@ menu "MicroBlaze architecture"
|
||||
config SYS_ARCH
|
||||
default "microblaze"
|
||||
|
||||
config NEEDS_MANUAL_RELOC
|
||||
bool "Disable position-independent pre-relocation code"
|
||||
default y
|
||||
help
|
||||
U-Boot expects to be linked to a specific hard-coded address, and to
|
||||
be loaded to and run from that address. This option lifts that
|
||||
restriction, thus allowing the code to be loaded to and executed from
|
||||
almost any 4K aligned address. This logic relies on the relocation
|
||||
information that is embedded in the binary to support U-Boot
|
||||
relocating itself to the top-of-RAM later during execution.
|
||||
|
||||
config STATIC_RELA
|
||||
def_bool y if !NEEDS_MANUAL_RELOC
|
||||
def_bool y
|
||||
|
||||
choice
|
||||
prompt "Target select"
|
||||
|
||||
@@ -13,10 +13,6 @@ LDFLAGS_FINAL += --gc-sections
|
||||
|
||||
ifeq ($(CONFIG_SPL_BUILD),)
|
||||
PLATFORM_CPPFLAGS += -fPIC
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_STATIC_RELA),y)
|
||||
PLATFORM_CPPFLAGS += -fPIC
|
||||
LDFLAGS_u-boot += -pic
|
||||
endif
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
extra-y = start.o
|
||||
obj-y = irq.o
|
||||
obj-y += interrupts.o cache.o exception.o cpuinfo.o
|
||||
obj-$(CONFIG_STATIC_RELA) += relocate.o
|
||||
obj-y += interrupts.o cache.o exception.o cpuinfo.o relocate.o
|
||||
obj-$(CONFIG_XILINX_MICROBLAZE0_PVR) += pvr.o
|
||||
obj-$(CONFIG_SPL_BUILD) += spl.o
|
||||
|
||||
@@ -10,16 +10,11 @@
|
||||
#include <asm-offsets.h>
|
||||
#include <config.h>
|
||||
|
||||
#if defined(CONFIG_STATIC_RELA)
|
||||
#define SYM_ADDR(reg, reg_add, symbol) \
|
||||
mfs r20, rpc; \
|
||||
addik r20, r20, _GLOBAL_OFFSET_TABLE_ + 8; \
|
||||
lwi reg, r20, symbol@GOT; \
|
||||
addk reg, reg reg_add;
|
||||
#else
|
||||
#define SYM_ADDR(reg, reg_add, symbol) \
|
||||
addi reg, reg_add, symbol
|
||||
#endif
|
||||
|
||||
.text
|
||||
.global _start
|
||||
@@ -35,7 +30,6 @@ _start:
|
||||
addi r1, r0, CONFIG_SPL_STACK
|
||||
#else
|
||||
add r1, r0, r20
|
||||
#if defined(CONFIG_STATIC_RELA)
|
||||
bri 1f
|
||||
|
||||
/* Force alignment for easier ASM code below */
|
||||
@@ -67,7 +61,6 @@ uboot_sym_start:
|
||||
|
||||
brlid r15, mb_fix_rela
|
||||
nop
|
||||
#endif
|
||||
#endif
|
||||
|
||||
addi r1, r1, -4 /* Decrement SP to top of memory */
|
||||
@@ -310,7 +303,6 @@ relocate_code:
|
||||
brlid r15, __setup_exceptions
|
||||
nop
|
||||
|
||||
#if defined(CONFIG_STATIC_RELA)
|
||||
/* reloc_offset is current location */
|
||||
SYM_ADDR(r10, r0, _start)
|
||||
|
||||
@@ -331,27 +323,7 @@ relocate_code:
|
||||
add r9, r9, r5
|
||||
brlid r15, mb_fix_rela
|
||||
nop
|
||||
|
||||
/* end of code which does relocation */
|
||||
#else
|
||||
/* Check if GOT exist */
|
||||
addik r21, r23, _got_start
|
||||
addik r22, r23, _got_end
|
||||
cmpu r12, r21, r22
|
||||
beqi r12, 2f /* No GOT table - jump over */
|
||||
|
||||
/* Skip last 3 entries plus 1 because of loop boundary below */
|
||||
addik r22, r22, -0x10
|
||||
|
||||
/* Relocate the GOT. */
|
||||
3: lw r12, r21, r0 /* Load entry */
|
||||
addk r12, r12, r23 /* Add reloc offset */
|
||||
sw r12, r21, r0 /* Save entry back */
|
||||
|
||||
cmpu r12, r21, r22 /* Check if this cross boundary */
|
||||
bneid r12, 3b
|
||||
addik r21. r21, 4
|
||||
#endif
|
||||
|
||||
/* Flush caches to ensure consistency */
|
||||
brlid r15, flush_cache_all
|
||||
|
||||
Reference in New Issue
Block a user