diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arc/lib/bootm.c | 5 | ||||
-rw-r--r-- | arch/microblaze/lib/bootm.c | 5 | ||||
-rw-r--r-- | arch/mips/lib/bootm.c | 6 | ||||
-rw-r--r-- | arch/nds32/lib/bootm.c | 6 | ||||
-rw-r--r-- | arch/powerpc/lib/bootm.c | 5 | ||||
-rw-r--r-- | arch/sandbox/Kconfig | 16 | ||||
-rw-r--r-- | arch/sandbox/cpu/cpu.c | 2 | ||||
-rw-r--r-- | arch/sandbox/dts/Makefile | 4 | ||||
-rw-r--r-- | arch/sandbox/dts/sandbox.dts | 4 | ||||
-rw-r--r-- | arch/sandbox/dts/sandbox64.dts | 317 | ||||
-rw-r--r-- | arch/sandbox/dts/test.dts | 6 | ||||
-rw-r--r-- | arch/sandbox/include/asm/io.h | 6 | ||||
-rw-r--r-- | arch/sandbox/include/asm/types.h | 17 | ||||
-rw-r--r-- | arch/sandbox/lib/bootm.c | 5 | ||||
-rw-r--r-- | arch/x86/lib/bootm.c | 5 |
15 files changed, 360 insertions, 49 deletions
diff --git a/arch/arc/lib/bootm.c b/arch/arc/lib/bootm.c index 9eef7070cf4..4d4acff239d 100644 --- a/arch/arc/lib/bootm.c +++ b/arch/arc/lib/bootm.c @@ -37,11 +37,6 @@ void arch_lmb_reserve(struct lmb *lmb) lmb_reserve(lmb, sp, (CONFIG_SYS_SDRAM_BASE + gd->ram_size - sp)); } -int arch_fixup_fdt(void *blob) -{ - return 0; -} - static int cleanup_before_linux(void) { disable_interrupts(); diff --git a/arch/microblaze/lib/bootm.c b/arch/microblaze/lib/bootm.c index 93525cc2a52..154671d4802 100644 --- a/arch/microblaze/lib/bootm.c +++ b/arch/microblaze/lib/bootm.c @@ -17,11 +17,6 @@ DECLARE_GLOBAL_DATA_PTR; -int arch_fixup_fdt(void *blob) -{ - return 0; -} - int do_bootm_linux(int flag, int argc, char * const argv[], bootm_headers_t *images) { diff --git a/arch/mips/lib/bootm.c b/arch/mips/lib/bootm.c index 5a9a2811ffb..9dc47407684 100644 --- a/arch/mips/lib/bootm.c +++ b/arch/mips/lib/bootm.c @@ -253,17 +253,15 @@ static int boot_reloc_fdt(bootm_headers_t *images) #endif } +#if CONFIG_IS_ENABLED(MIPS_BOOT_FDT) && CONFIG_IS_ENABLED(OF_LIBFDT) int arch_fixup_fdt(void *blob) { -#if CONFIG_IS_ENABLED(MIPS_BOOT_FDT) && CONFIG_IS_ENABLED(OF_LIBFDT) u64 mem_start = virt_to_phys((void *)gd->bd->bi_memstart); u64 mem_size = gd->ram_size; return fdt_fixup_memory_banks(blob, &mem_start, &mem_size, 1); -#else - return 0; -#endif } +#endif static int boot_setup_fdt(bootm_headers_t *images) { diff --git a/arch/nds32/lib/bootm.c b/arch/nds32/lib/bootm.c index 42b15dfcbfc..0d7f5785173 100644 --- a/arch/nds32/lib/bootm.c +++ b/arch/nds32/lib/bootm.c @@ -15,12 +15,6 @@ DECLARE_GLOBAL_DATA_PTR; -int arch_fixup_fdt(void *blob) -{ - return 0; -} - - #if defined(CONFIG_SETUP_MEMORY_TAGS) || \ defined(CONFIG_CMDLINE_TAG) || \ defined(CONFIG_INITRD_TAG) || \ diff --git a/arch/powerpc/lib/bootm.c b/arch/powerpc/lib/bootm.c index b9ae24dc98b..6ef644d85ba 100644 --- a/arch/powerpc/lib/bootm.c +++ b/arch/powerpc/lib/bootm.c @@ -40,11 +40,6 @@ static void set_clocks_in_mhz (bd_t *kbd); #define CONFIG_SYS_LINUX_LOWMEM_MAX_SIZE (768*1024*1024) #endif -int arch_fixup_fdt(void *blob) -{ - return 0; -} - static void boot_jump_linux(bootm_headers_t *images) { void (*kernel)(bd_t *, ulong r4, ulong r5, ulong r6, diff --git a/arch/sandbox/Kconfig b/arch/sandbox/Kconfig index 87418e39868..2a08533c4b5 100644 --- a/arch/sandbox/Kconfig +++ b/arch/sandbox/Kconfig @@ -10,6 +10,11 @@ config SYS_BOARD config SYS_CPU default "sandbox" +config SANDBOX64 + bool "Use 64-bit addresses" + select PHYS_64BIT + select HOST_64BIT + config SANDBOX_SPL bool "Enable SPL for sandbox" select SUPPORT_SPL @@ -20,24 +25,25 @@ config SYS_CONFIG_NAME choice prompt "Run sandbox on 32/64-bit host" - default SANDBOX_64BIT + default HOST_64BIT help Sandbox can be built on 32-bit and 64-bit hosts. The default is to build on a 64-bit host and run on a 64-bit host. If you want to run sandbox on a 32-bit host, change it here. -config SANDBOX_32BIT +config HOST_32BIT bool "32-bit host" + depends on !PHYS_64BIT -config SANDBOX_64BIT +config HOST_64BIT bool "64-bit host" endchoice config SANDBOX_BITS_PER_LONG int - default 32 if SANDBOX_32BIT - default 64 if SANDBOX_64BIT + default 32 if HOST_32BIT + default 64 if HOST_64BIT endmenu diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c index 66c3a6a88a7..4a20fde787a 100644 --- a/arch/sandbox/cpu/cpu.c +++ b/arch/sandbox/cpu/cpu.c @@ -76,7 +76,7 @@ void *map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags) if (enable_pci_map && !pci_map_physmem(paddr, &len, &map_dev, &ptr)) { if (plen != len) { printf("%s: Warning: partial map at %x, wanted %lx, got %lx\n", - __func__, paddr, len, plen); + __func__, (uint)paddr, len, plen); } map_len = len; return ptr; diff --git a/arch/sandbox/dts/Makefile b/arch/sandbox/dts/Makefile index 01975692628..861b4dc2b17 100644 --- a/arch/sandbox/dts/Makefile +++ b/arch/sandbox/dts/Makefile @@ -2,7 +2,11 @@ # SPDX-License-Identifier: GPL-2.0+ # +ifdef CONFIG_SANDBOX64 +dtb-$(CONFIG_SANDBOX) += sandbox64.dtb +else dtb-$(CONFIG_SANDBOX) += sandbox.dtb +endif dtb-$(CONFIG_UT_DM) += test.dtb targets += $(dtb-y) diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts index 0aba6c9a6da..1fb8225fbb2 100644 --- a/arch/sandbox/dts/sandbox.dts +++ b/arch/sandbox/dts/sandbox.dts @@ -70,7 +70,7 @@ compatible = "sandbox,gpio"; #gpio-cells = <1>; gpio-bank-name = "a"; - num-gpios = <20>; + sandbox,gpio-count = <20>; }; gpio_b: gpios@1 { @@ -78,7 +78,7 @@ compatible = "sandbox,gpio"; #gpio-cells = <2>; gpio-bank-name = "b"; - num-gpios = <10>; + sandbox,gpio-count = <10>; }; hexagon { diff --git a/arch/sandbox/dts/sandbox64.dts b/arch/sandbox/dts/sandbox64.dts new file mode 100644 index 00000000000..d6efc011de5 --- /dev/null +++ b/arch/sandbox/dts/sandbox64.dts @@ -0,0 +1,317 @@ +/dts-v1/; + +#define USB_CLASS_HUB 9 + +/ { + #address-cells = <2>; + #size-cells = <2>; + model = "sandbox"; + + aliases { + eth5 = "/eth@90000000"; + i2c0 = &i2c_0; + pci0 = &pci; + rtc0 = &rtc_0; + }; + + chosen { + stdout-path = "/serial"; + }; + + cros_ec: cros-ec@0 { + reg = <0 0 0 0>; + compatible = "google,cros-ec-sandbox"; + + /* + * This describes the flash memory within the EC. Note + * that the STM32L flash erases to 0, not 0xff. + */ + #address-cells = <1>; + #size-cells = <1>; + flash@8000000 { + reg = <0x08000000 0x20000>; + erase-value = <0>; + #address-cells = <1>; + #size-cells = <1>; + + /* Information for sandbox */ + ro { + reg = <0 0xf000>; + }; + wp-ro { + reg = <0xf000 0x1000>; + }; + rw { + reg = <0x10000 0x10000>; + }; + }; + }; + + eth@10002000 { + compatible = "sandbox,eth"; + reg = <0x0 0x10002000 0x0 0x1000>; + fake-host-hwaddr = [00 00 66 44 22 00]; + }; + + eth@80000000 { + compatible = "sandbox,eth-raw"; + reg = <0x0 0x80000000 0x0 0x1000>; + host-raw-interface = "eth0"; + }; + + eth@90000000 { + compatible = "sandbox,eth-raw"; + reg = <0x0 0x90000000 0x0 0x1000>; + host-raw-interface = "lo"; + }; + + gpio_a: gpios@0 { + gpio-controller; + compatible = "sandbox,gpio"; + #gpio-cells = <1>; + gpio-bank-name = "a"; + sandbox,gpio-count = <20>; + }; + + gpio_b: gpios@1 { + gpio-controller; + compatible = "sandbox,gpio"; + #gpio-cells = <2>; + gpio-bank-name = "b"; + sandbox,gpio-count = <10>; + }; + + hexagon { + compatible = "demo-simple"; + colour = "white"; + sides = <6>; + }; + + i2c_0: i2c@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0 0 0 0>; + compatible = "sandbox,i2c"; + clock-frequency = <400000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c0>; + eeprom@2c { + reg = <0x2c>; + compatible = "i2c-eeprom"; + emul { + compatible = "sandbox,i2c-eeprom"; + sandbox,filename = "i2c.bin"; + sandbox,size = <128>; + }; + }; + + rtc_0: rtc@43 { + reg = <0x43>; + compatible = "sandbox-rtc"; + emul { + compatible = "sandbox,i2c-rtc"; + }; + }; + sandbox_pmic: sandbox_pmic { + reg = <0x40>; + }; + }; + + lcd { + u-boot,dm-pre-reloc; + compatible = "sandbox,lcd-sdl"; + xres = <1366>; + yres = <768>; + }; + + leds { + compatible = "gpio-leds"; + + iracibble { + gpios = <&gpio_a 1 0>; + label = "sandbox:red"; + }; + + martinet { + gpios = <&gpio_a 2 0>; + label = "sandbox:green"; + }; + }; + + pci: pci-controller { + compatible = "sandbox,pci"; + device_type = "pci"; + #address-cells = <3>; + #size-cells = <2>; + ranges = <0x02000000 0 0x10000000 0 0x10000000 0 0x2000 + 0x01000000 0 0x20000000 0 0x20000000 0 0x2000>; + pci@1f,0 { + compatible = "pci-generic"; + reg = <0xf800 0 0 0 0>; + emul@1f,0 { + compatible = "sandbox,swap-case"; + }; + }; + }; + + pinctrl { + compatible = "sandbox,pinctrl"; + + pinctrl_i2c0: i2c0 { + groups = "i2c"; + function = "i2c"; + bias-pull-up; + }; + + pinctrl_serial0: uart0 { + groups = "serial_a"; + function = "serial"; + }; + }; + + reset@1 { + compatible = "sandbox,reset"; + }; + + spi@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0 0 0 0>; + compatible = "sandbox,spi"; + cs-gpios = <0>, <&gpio_a 0>; + firmware_storage_spi: flash@0 { + reg = <0>; + compatible = "spansion,m25p16", "sandbox,spi-flash"; + spi-max-frequency = <40000000>; + sandbox,filename = "spi.bin"; + }; + }; + + spl-test { + u-boot,dm-pre-reloc; + compatible = "sandbox,spl-test"; + boolval; + intval = <1>; + intarray = <2 3 4>; + byteval = [05]; + bytearray = [06]; + longbytearray = [09 0a 0b 0c 0d 0e 0f 10 11]; + stringval = "message"; + stringarray = "multi-word", "message"; + }; + + spl-test2 { + u-boot,dm-pre-reloc; + compatible = "sandbox,spl-test"; + intval = <3>; + intarray = <5>; + byteval = [08]; + bytearray = [01 23 34]; + longbytearray = [09 0a 0b 0c]; + stringval = "message2"; + stringarray = "another", "multi-word", "message"; + }; + + spl-test3 { + u-boot,dm-pre-reloc; + compatible = "sandbox,spl-test"; + stringarray = "one"; + }; + + spl-test4 { + u-boot,dm-pre-reloc; + compatible = "sandbox,spl-test.2"; + }; + + square { + compatible = "demo-shape"; + colour = "blue"; + sides = <4>; + }; + + timer { + compatible = "sandbox,timer"; + clock-frequency = <1000000>; + }; + + tpm { + compatible = "google,sandbox-tpm"; + }; + + triangle { + compatible = "demo-shape"; + colour = "cyan"; + sides = <3>; + character = <83>; + light-gpios = <&gpio_a 2>, <&gpio_b 6 0>; + }; + + /* Needs to be available prior to relocation */ + uart0: serial { + compatible = "sandbox,serial"; + sandbox,text-colour = "cyan"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_serial0>; + }; + + usb@0 { + compatible = "sandbox,usb"; + status = "disabled"; + hub { + compatible = "sandbox,usb-hub"; + #address-cells = <1>; + #size-cells = <0>; + flash-stick { + reg = <0>; + compatible = "sandbox,usb-flash"; + }; + }; + }; + + usb@1 { + compatible = "sandbox,usb"; + hub { + compatible = "usb-hub"; + usb,device-class = <USB_CLASS_HUB>; + hub-emul { + compatible = "sandbox,usb-hub"; + #address-cells = <1>; + #size-cells = <0>; + flash-stick { + reg = <0>; + compatible = "sandbox,usb-flash"; + sandbox,filepath = "flash.bin"; + }; + }; + }; + }; + + usb@2 { + compatible = "sandbox,usb"; + status = "disabled"; + }; + + spmi: spmi@0 { + compatible = "sandbox,spmi"; + #address-cells = <0x1>; + #size-cells = <0x1>; + pm8916@0 { + compatible = "qcom,spmi-pmic"; + reg = <0x0 0x1>; + #address-cells = <0x1>; + #size-cells = <0x1>; + + spmi_gpios: gpios@c000 { + compatible = "qcom,pm8916-gpio"; + reg = <0xc000 0x400>; + gpio-controller; + gpio-count = <4>; + #gpio-cells = <2>; + gpio-bank-name="spmi"; + }; + }; + }; +}; + +#include "cros-ec-keyboard.dtsi" +#include "sandbox_pmic.dtsi" diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 3f9e788e6c3..b0f0ca8f19c 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -177,7 +177,7 @@ gpio-controller; #gpio-cells = <1>; gpio-bank-name = "a"; - num-gpios = <20>; + sandbox,gpio-count = <20>; }; gpio_b: extra-gpios { @@ -185,7 +185,7 @@ gpio-controller; #gpio-cells = <5>; gpio-bank-name = "b"; - num-gpios = <10>; + sandbox,gpio-count = <10>; }; i2c@0 { @@ -480,6 +480,8 @@ }; chosen { + #address-cells = <1>; + #size-cells = <1>; chosen-test { compatible = "denx,u-boot-fdt-test"; reg = <9 1>; diff --git a/arch/sandbox/include/asm/io.h b/arch/sandbox/include/asm/io.h index d3e8b969d63..1a0a772adc5 100644 --- a/arch/sandbox/include/asm/io.h +++ b/arch/sandbox/include/asm/io.h @@ -43,9 +43,15 @@ phys_addr_t map_to_sysmem(const void *ptr); #define readb(addr) ((void)addr, 0) #define readw(addr) ((void)addr, 0) #define readl(addr) ((void)addr, 0) +#ifdef CONFIG_SANDBOX64 +#define readq(addr) ((void)addr, 0) +#endif #define writeb(v, addr) ((void)addr) #define writew(v, addr) ((void)addr) #define writel(v, addr) ((void)addr) +#ifdef CONFIG_SANDBOX64 +#define writeq(v, addr) ((void)addr) +#endif /* * Clear and set bits in one shot. These macros can be used to clear and diff --git a/arch/sandbox/include/asm/types.h b/arch/sandbox/include/asm/types.h index 623cdafefaa..6657f3a7b90 100644 --- a/arch/sandbox/include/asm/types.h +++ b/arch/sandbox/include/asm/types.h @@ -51,14 +51,23 @@ typedef __UINT64_TYPE__ u64; #endif /* - * Number of bits in a C 'long' on this architecture. Set this to 32 when - * building on a 32-bit machine. + * Number of bits in a C 'long' on this architecture. */ -#define BITS_PER_LONG 32 - +#ifdef CONFIG_PHYS64 +#define BITS_PER_LONG 64 +#else /* CONFIG_PHYS64 */ +#define BITS_PER_LONG 32 +#endif /* CONFIG_PHYS64 */ + +#ifdef CONFIG_PHYS64 +typedef unsigned long long dma_addr_t; +typedef u64 phys_addr_t; +typedef u64 phys_size_t; +#else /* CONFIG_PHYS64 */ typedef unsigned long dma_addr_t; typedef u32 phys_addr_t; typedef u32 phys_size_t; +#endif /* CONFIG_PHYS64 */ #endif /* __KERNEL__ */ diff --git a/arch/sandbox/lib/bootm.c b/arch/sandbox/lib/bootm.c index 4cdd18fe14b..0c9a7979d23 100644 --- a/arch/sandbox/lib/bootm.c +++ b/arch/sandbox/lib/bootm.c @@ -50,11 +50,6 @@ int bootz_setup(ulong image, ulong *start, ulong *end) return ret; } -int arch_fixup_fdt(void *blob) -{ - return 0; -} - int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images) { if (flag & (BOOTM_STATE_OS_GO | BOOTM_STATE_OS_FAKE_GO)) { diff --git a/arch/x86/lib/bootm.c b/arch/x86/lib/bootm.c index e548cdbed59..8e76ba35aea 100644 --- a/arch/x86/lib/bootm.c +++ b/arch/x86/lib/bootm.c @@ -28,11 +28,6 @@ DECLARE_GLOBAL_DATA_PTR; #define COMMAND_LINE_OFFSET 0x9000 -int arch_fixup_fdt(void *blob) -{ - return 0; -} - __weak void board_quiesce_devices(void) { } |