diff options
Diffstat (limited to 'arch/arm')
235 files changed, 1546 insertions, 243 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 3c5572e700..39f5f0165e 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1,8 +1,6 @@ config ARM bool select HAS_KALLSYMS - select HAS_MODULES - select HAS_DMA select HAS_CACHE select HAVE_CONFIGURABLE_TEXT_BASE select HAVE_PBL_IMAGE @@ -233,7 +231,6 @@ config ARCH_TEGRA select CLKDEV_LOOKUP select GPIOLIB select GPIO_TEGRA - select HAVE_DEFAULT_ENVIRONMENT_NEW select HAVE_PBL_MULTI_IMAGES select OFDEVICE select OFTREE @@ -379,6 +376,7 @@ config ARM_UNWIND config ARM_SEMIHOSTING bool "enable ARM semihosting support" + depends on !CPU_V8 help This option enables ARM semihosting support in barebox. ARM semihosting is a communication discipline that allows code diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile index b911d0357b..1a0f63fbfc 100644 --- a/arch/arm/boards/Makefile +++ b/arch/arm/boards/Makefile @@ -138,4 +138,5 @@ obj-$(CONFIG_MACH_VIRT2REAL) += virt2real/ obj-$(CONFIG_MACH_ZEDBOARD) += avnet-zedboard/ obj-$(CONFIG_MACH_ZYLONITE) += zylonite/ obj-$(CONFIG_MACH_VARISCITE_MX6) += variscite-mx6/ +obj-$(CONFIG_MACH_VSCOM_BALTOS) += vscom-baltos/ obj-$(CONFIG_MACH_QEMU_VIRT64) += qemu-virt64/ diff --git a/arch/arm/boards/animeo_ip/Makefile b/arch/arm/boards/animeo_ip/Makefile index eb072c0161..510b142ff3 100644 --- a/arch/arm/boards/animeo_ip/Makefile +++ b/arch/arm/boards/animeo_ip/Makefile @@ -1 +1,2 @@ obj-y += init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-animeo_ip diff --git a/arch/arm/boards/animeo_ip/env/config b/arch/arm/boards/animeo_ip/defaultenv-animeo_ip/config index 7526fcfc79..7526fcfc79 100644 --- a/arch/arm/boards/animeo_ip/env/config +++ b/arch/arm/boards/animeo_ip/defaultenv-animeo_ip/config diff --git a/arch/arm/boards/animeo_ip/init.c b/arch/arm/boards/animeo_ip/init.c index 14b33dc691..847417398a 100644 --- a/arch/arm/boards/animeo_ip/init.c +++ b/arch/arm/boards/animeo_ip/init.c @@ -14,6 +14,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> +#include <envfs.h> #include <mach/hardware.h> #include <nand.h> #include <linux/sizes.h> @@ -321,6 +322,9 @@ static int animeo_ip_devices_init(void) animeo_ip_add_device_eth(); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_animeo_ip); + return 0; } diff --git a/arch/arm/boards/at91rm9200ek/Makefile b/arch/arm/boards/at91rm9200ek/Makefile index eb072c0161..dec1c50455 100644 --- a/arch/arm/boards/at91rm9200ek/Makefile +++ b/arch/arm/boards/at91rm9200ek/Makefile @@ -1 +1,2 @@ obj-y += init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91rm9200ek diff --git a/arch/arm/boards/at91rm9200ek/env/bin/init_board b/arch/arm/boards/at91rm9200ek/defaultenv-at91rm9200ek/bin/init_board index 0d40eb41a5..0d40eb41a5 100644 --- a/arch/arm/boards/at91rm9200ek/env/bin/init_board +++ b/arch/arm/boards/at91rm9200ek/defaultenv-at91rm9200ek/bin/init_board diff --git a/arch/arm/boards/at91rm9200ek/env/config b/arch/arm/boards/at91rm9200ek/defaultenv-at91rm9200ek/config index 76c180bcac..76c180bcac 100644 --- a/arch/arm/boards/at91rm9200ek/env/config +++ b/arch/arm/boards/at91rm9200ek/defaultenv-at91rm9200ek/config diff --git a/arch/arm/boards/at91rm9200ek/init.c b/arch/arm/boards/at91rm9200ek/init.c index 43c8b1b055..7626786e07 100644 --- a/arch/arm/boards/at91rm9200ek/init.c +++ b/arch/arm/boards/at91rm9200ek/init.c @@ -25,6 +25,7 @@ #include <gpio.h> #include <fcntl.h> #include <io.h> +#include <envfs.h> #include <linux/sizes.h> #include <mach/hardware.h> #include <mach/at91_pmc.h> @@ -177,6 +178,9 @@ static int at91rm9200ek_devices_init(void) armlinux_set_architecture(MACH_TYPE_AT91RM9200EK); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_at91rm9200ek); + return 0; } device_initcall(at91rm9200ek_devices_init); diff --git a/arch/arm/boards/at91sam9260ek/Makefile b/arch/arm/boards/at91sam9260ek/Makefile index eb072c0161..6e07f189fa 100644 --- a/arch/arm/boards/at91sam9260ek/Makefile +++ b/arch/arm/boards/at91sam9260ek/Makefile @@ -1 +1,2 @@ obj-y += init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91sam9260ek diff --git a/arch/arm/boards/at91sam9260ek/env/bin/init_board b/arch/arm/boards/at91sam9260ek/defaultenv-at91sam9260ek/bin/init_board index f1b476d54a..f1b476d54a 100644 --- a/arch/arm/boards/at91sam9260ek/env/bin/init_board +++ b/arch/arm/boards/at91sam9260ek/defaultenv-at91sam9260ek/bin/init_board diff --git a/arch/arm/boards/at91sam9260ek/env/config b/arch/arm/boards/at91sam9260ek/defaultenv-at91sam9260ek/config index 8e88186217..8e88186217 100644 --- a/arch/arm/boards/at91sam9260ek/env/config +++ b/arch/arm/boards/at91sam9260ek/defaultenv-at91sam9260ek/config diff --git a/arch/arm/boards/at91sam9260ek/init.c b/arch/arm/boards/at91sam9260ek/init.c index 422feb2098..5a21ac12fe 100644 --- a/arch/arm/boards/at91sam9260ek/init.c +++ b/arch/arm/boards/at91sam9260ek/init.c @@ -14,6 +14,7 @@ #include <common.h> #include <init.h> +#include <envfs.h> #include <environment.h> #include <asm/armlinux.h> #include <generated/mach-types.h> @@ -261,6 +262,9 @@ static int at91sam9260ek_devices_init(void) devfs_add_partition("nand0", SZ_512K, SZ_128K, DEVFS_PARTITION_FIXED, "env_raw1"); dev_add_bb_dev("env_raw1", "env1"); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_at91sam9260ek); + return 0; } device_initcall(at91sam9260ek_devices_init); diff --git a/arch/arm/boards/at91sam9261ek/Makefile b/arch/arm/boards/at91sam9261ek/Makefile index 1398c26a0f..1764da93f2 100644 --- a/arch/arm/boards/at91sam9261ek/Makefile +++ b/arch/arm/boards/at91sam9261ek/Makefile @@ -1,3 +1,4 @@ obj-y += init.o lwl-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) += lowlevel_init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91sam9261ek diff --git a/arch/arm/boards/at91sam9261ek/env/bin/init_board b/arch/arm/boards/at91sam9261ek/defaultenv-at91sam9261ek/bin/init_board index 39a7f0826b..39a7f0826b 100644 --- a/arch/arm/boards/at91sam9261ek/env/bin/init_board +++ b/arch/arm/boards/at91sam9261ek/defaultenv-at91sam9261ek/bin/init_board diff --git a/arch/arm/boards/at91sam9261ek/env/config b/arch/arm/boards/at91sam9261ek/defaultenv-at91sam9261ek/config index cb3e847f54..cb3e847f54 100644 --- a/arch/arm/boards/at91sam9261ek/env/config +++ b/arch/arm/boards/at91sam9261ek/defaultenv-at91sam9261ek/config diff --git a/arch/arm/boards/at91sam9261ek/init.c b/arch/arm/boards/at91sam9261ek/init.c index b9e4914376..72716b8186 100644 --- a/arch/arm/boards/at91sam9261ek/init.c +++ b/arch/arm/boards/at91sam9261ek/init.c @@ -17,6 +17,7 @@ #include <common.h> #include <net.h> #include <init.h> +#include <envfs.h> #include <environment.h> #include <asm/armlinux.h> #include <generated/mach-types.h> @@ -396,6 +397,9 @@ static int at91sam9261ek_devices_init(void) else armlinux_set_architecture(MACH_TYPE_AT91SAM9261EK); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_at91sam9261ek); + return 0; } diff --git a/arch/arm/boards/at91sam9263ek/Makefile b/arch/arm/boards/at91sam9263ek/Makefile index 1398c26a0f..2072cd4164 100644 --- a/arch/arm/boards/at91sam9263ek/Makefile +++ b/arch/arm/boards/at91sam9263ek/Makefile @@ -1,3 +1,4 @@ obj-y += init.o lwl-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) += lowlevel_init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91sam9263ek diff --git a/arch/arm/boards/at91sam9263ek/env/bin/init_board b/arch/arm/boards/at91sam9263ek/defaultenv-at91sam9263ek/bin/init_board index 44972a50ec..44972a50ec 100644 --- a/arch/arm/boards/at91sam9263ek/env/bin/init_board +++ b/arch/arm/boards/at91sam9263ek/defaultenv-at91sam9263ek/bin/init_board diff --git a/arch/arm/boards/at91sam9263ek/env/config b/arch/arm/boards/at91sam9263ek/defaultenv-at91sam9263ek/config index 5125020a73..5125020a73 100644 --- a/arch/arm/boards/at91sam9263ek/env/config +++ b/arch/arm/boards/at91sam9263ek/defaultenv-at91sam9263ek/config diff --git a/arch/arm/boards/at91sam9263ek/init.c b/arch/arm/boards/at91sam9263ek/init.c index 3bb2ddafa3..682449b7be 100644 --- a/arch/arm/boards/at91sam9263ek/init.c +++ b/arch/arm/boards/at91sam9263ek/init.c @@ -19,6 +19,7 @@ #include <common.h> #include <net.h> #include <init.h> +#include <envfs.h> #include <environment.h> #include <asm/armlinux.h> #include <generated/mach-types.h> @@ -273,6 +274,9 @@ static int at91sam9263ek_devices_init(void) armlinux_set_architecture(MACH_TYPE_AT91SAM9263EK); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_at91sam9263ek); + return 0; } diff --git a/arch/arm/boards/at91sam9m10g45ek/Makefile b/arch/arm/boards/at91sam9m10g45ek/Makefile index eb072c0161..dd8052157e 100644 --- a/arch/arm/boards/at91sam9m10g45ek/Makefile +++ b/arch/arm/boards/at91sam9m10g45ek/Makefile @@ -1 +1,2 @@ obj-y += init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91sam9m10g45ek diff --git a/arch/arm/boards/at91sam9m10g45ek/env/bin/boot_board b/arch/arm/boards/at91sam9m10g45ek/defaultenv-at91sam9m10g45ek/bin/boot_board index 73daecc001..73daecc001 100644 --- a/arch/arm/boards/at91sam9m10g45ek/env/bin/boot_board +++ b/arch/arm/boards/at91sam9m10g45ek/defaultenv-at91sam9m10g45ek/bin/boot_board diff --git a/arch/arm/boards/at91sam9m10g45ek/env/bin/menu_boot b/arch/arm/boards/at91sam9m10g45ek/defaultenv-at91sam9m10g45ek/bin/menu_boot index d0b1396de9..d0b1396de9 100644 --- a/arch/arm/boards/at91sam9m10g45ek/env/bin/menu_boot +++ b/arch/arm/boards/at91sam9m10g45ek/defaultenv-at91sam9m10g45ek/bin/menu_boot diff --git a/arch/arm/boards/at91sam9m10g45ek/env/config b/arch/arm/boards/at91sam9m10g45ek/defaultenv-at91sam9m10g45ek/config index 54ed2cb9df..54ed2cb9df 100644 --- a/arch/arm/boards/at91sam9m10g45ek/env/config +++ b/arch/arm/boards/at91sam9m10g45ek/defaultenv-at91sam9m10g45ek/config diff --git a/arch/arm/boards/at91sam9m10g45ek/init.c b/arch/arm/boards/at91sam9m10g45ek/init.c index fb444d820d..ee692630bf 100644 --- a/arch/arm/boards/at91sam9m10g45ek/init.c +++ b/arch/arm/boards/at91sam9m10g45ek/init.c @@ -21,6 +21,7 @@ #include <mci.h> #include <init.h> #include <gpio.h> +#include <envfs.h> #include <environment.h> #include <asm/armlinux.h> #include <generated/mach-types.h> @@ -321,6 +322,9 @@ static int at91sam9m10g45ek_devices_init(void) armlinux_set_architecture(MACH_TYPE_AT91SAM9M10G45EK); ek_set_board_revision(); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_at91sam9m10g45ek); + return 0; } device_initcall(at91sam9m10g45ek_devices_init); diff --git a/arch/arm/boards/at91sam9m10ihd/env/boot/android b/arch/arm/boards/at91sam9m10ihd/env/boot/android index 8492e41f7f..ce5aa32353 100644 --- a/arch/arm/boards/at91sam9m10ihd/env/boot/android +++ b/arch/arm/boards/at91sam9m10ihd/env/boot/android @@ -3,4 +3,4 @@ global.bootm.image="/dev/nand0.kernel.bb" global.linux.bootargs.dyn.root="root=/dev/mtdblock1 rootfstype=jffs2 rw init=/init rootdelay=1" # clean the mtdparts otherwise android does not boot -global -r linux.mtdparts. +global -r "linux.mtdparts.*" diff --git a/arch/arm/boards/at91sam9n12ek/Makefile b/arch/arm/boards/at91sam9n12ek/Makefile index eb072c0161..f5d125a0e7 100644 --- a/arch/arm/boards/at91sam9n12ek/Makefile +++ b/arch/arm/boards/at91sam9n12ek/Makefile @@ -1 +1,2 @@ obj-y += init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91sam9n12ek diff --git a/arch/arm/boards/at91sam9n12ek/env/bin/init_board b/arch/arm/boards/at91sam9n12ek/defaultenv-at91sam9n12ek/bin/init_board index 4931342a0b..4931342a0b 100644 --- a/arch/arm/boards/at91sam9n12ek/env/bin/init_board +++ b/arch/arm/boards/at91sam9n12ek/defaultenv-at91sam9n12ek/bin/init_board diff --git a/arch/arm/boards/at91sam9n12ek/env/config b/arch/arm/boards/at91sam9n12ek/defaultenv-at91sam9n12ek/config index f5cd1cc0f7..f5cd1cc0f7 100644 --- a/arch/arm/boards/at91sam9n12ek/env/config +++ b/arch/arm/boards/at91sam9n12ek/defaultenv-at91sam9n12ek/config diff --git a/arch/arm/boards/at91sam9n12ek/init.c b/arch/arm/boards/at91sam9n12ek/init.c index 2ed58c1995..b9431b2ee1 100644 --- a/arch/arm/boards/at91sam9n12ek/init.c +++ b/arch/arm/boards/at91sam9n12ek/init.c @@ -24,6 +24,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> +#include <envfs.h> #include <mach/hardware.h> #include <nand.h> #include <linux/sizes.h> @@ -327,6 +328,9 @@ static int at91sam9n12ek_devices_init(void) devfs_add_partition("nand0", SZ_512K + SZ_256K, SZ_128K, DEVFS_PARTITION_FIXED, "env_raw1"); dev_add_bb_dev("env_raw1", "env1"); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_at91sam9n12ek); + return 0; } device_initcall(at91sam9n12ek_devices_init); diff --git a/arch/arm/boards/at91sam9x5ek/Makefile b/arch/arm/boards/at91sam9x5ek/Makefile index f2acf201b4..559df8f7b9 100644 --- a/arch/arm/boards/at91sam9x5ek/Makefile +++ b/arch/arm/boards/at91sam9x5ek/Makefile @@ -1,2 +1,3 @@ obj-y += init.o obj-y += hw_version.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91sam9x5ek diff --git a/arch/arm/boards/at91sam9x5ek/env/bin/init_board b/arch/arm/boards/at91sam9x5ek/defaultenv-at91sam9x5ek/bin/init_board index f3d417e356..f3d417e356 100644 --- a/arch/arm/boards/at91sam9x5ek/env/bin/init_board +++ b/arch/arm/boards/at91sam9x5ek/defaultenv-at91sam9x5ek/bin/init_board diff --git a/arch/arm/boards/at91sam9x5ek/env/config b/arch/arm/boards/at91sam9x5ek/defaultenv-at91sam9x5ek/config index b8cf4e3f30..b8cf4e3f30 100644 --- a/arch/arm/boards/at91sam9x5ek/env/config +++ b/arch/arm/boards/at91sam9x5ek/defaultenv-at91sam9x5ek/config diff --git a/arch/arm/boards/at91sam9x5ek/init.c b/arch/arm/boards/at91sam9x5ek/init.c index 1ef35803f7..9fe117c2d8 100644 --- a/arch/arm/boards/at91sam9x5ek/init.c +++ b/arch/arm/boards/at91sam9x5ek/init.c @@ -24,6 +24,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> +#include <envfs.h> #include <mach/hardware.h> #include <nand.h> #include <linux/sizes.h> @@ -320,6 +321,9 @@ static int at91sam9x5ek_devices_init(void) devfs_add_partition("nand0", SZ_512K + SZ_256K, SZ_128K, DEVFS_PARTITION_FIXED, "env_raw1"); dev_add_bb_dev("env_raw1", "env1"); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_at91sam9x5ek); + return 0; } device_initcall(at91sam9x5ek_devices_init); diff --git a/arch/arm/boards/eukrea_cpuimx25/Makefile b/arch/arm/boards/eukrea_cpuimx25/Makefile index 4f084760c0..159701d37a 100644 --- a/arch/arm/boards/eukrea_cpuimx25/Makefile +++ b/arch/arm/boards/eukrea_cpuimx25/Makefile @@ -18,3 +18,4 @@ obj-y += eukrea_cpuimx25.o lwl-y += lowlevel.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-eukrea_cpuimx25 diff --git a/arch/arm/boards/eukrea_cpuimx25/env/bin/init_board b/arch/arm/boards/eukrea_cpuimx25/defaultenv-eukrea_cpuimx25/bin/init_board index 8f4151c357..8f4151c357 100644 --- a/arch/arm/boards/eukrea_cpuimx25/env/bin/init_board +++ b/arch/arm/boards/eukrea_cpuimx25/defaultenv-eukrea_cpuimx25/bin/init_board diff --git a/arch/arm/boards/eukrea_cpuimx25/env/config b/arch/arm/boards/eukrea_cpuimx25/defaultenv-eukrea_cpuimx25/config index da19677574..da19677574 100644 --- a/arch/arm/boards/eukrea_cpuimx25/env/config +++ b/arch/arm/boards/eukrea_cpuimx25/defaultenv-eukrea_cpuimx25/config diff --git a/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c b/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c index 90451911e4..25bf40ce79 100644 --- a/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c +++ b/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c @@ -30,6 +30,7 @@ #include <io.h> #include <asm/mmu.h> #include <led.h> +#include <envfs.h> #include <partition.h> #include <generated/mach-types.h> @@ -216,6 +217,9 @@ static int eukrea_cpuimx25_devices_init(void) armlinux_set_architecture(MACH_TYPE_EUKREA_CPUIMX25SD); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_eukrea_cpuimx25); + return 0; } diff --git a/arch/arm/boards/eukrea_cpuimx35/Makefile b/arch/arm/boards/eukrea_cpuimx35/Makefile index 060f3b107a..3ef2c4e5f5 100644 --- a/arch/arm/boards/eukrea_cpuimx35/Makefile +++ b/arch/arm/boards/eukrea_cpuimx35/Makefile @@ -18,3 +18,4 @@ obj-y += eukrea_cpuimx35.o lwl-y += lowlevel.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-eukrea_cpuimx35 diff --git a/arch/arm/boards/eukrea_cpuimx35/env/bin/init_board b/arch/arm/boards/eukrea_cpuimx35/defaultenv-eukrea_cpuimx35/bin/init_board index 2a07a8425a..2a07a8425a 100644 --- a/arch/arm/boards/eukrea_cpuimx35/env/bin/init_board +++ b/arch/arm/boards/eukrea_cpuimx35/defaultenv-eukrea_cpuimx35/bin/init_board diff --git a/arch/arm/boards/eukrea_cpuimx35/env/config b/arch/arm/boards/eukrea_cpuimx35/defaultenv-eukrea_cpuimx35/config index 05c4391d35..05c4391d35 100644 --- a/arch/arm/boards/eukrea_cpuimx35/env/config +++ b/arch/arm/boards/eukrea_cpuimx35/defaultenv-eukrea_cpuimx35/config diff --git a/arch/arm/boards/eukrea_cpuimx35/eukrea_cpuimx35.c b/arch/arm/boards/eukrea_cpuimx35/eukrea_cpuimx35.c index 04ef9b2e00..a10763780e 100644 --- a/arch/arm/boards/eukrea_cpuimx35/eukrea_cpuimx35.c +++ b/arch/arm/boards/eukrea_cpuimx35/eukrea_cpuimx35.c @@ -34,6 +34,7 @@ #include <net.h> #include <partition.h> #include <gpio.h> +#include <envfs.h> #include <asm/armlinux.h> #include <io.h> @@ -212,6 +213,9 @@ static int eukrea_cpuimx35_devices_init(void) #endif armlinux_set_architecture(MACH_TYPE_EUKREA_CPUIMX35SD); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_eukrea_cpuimx35); + return 0; } diff --git a/arch/arm/boards/eukrea_cpuimx51/Makefile b/arch/arm/boards/eukrea_cpuimx51/Makefile index 96e26d03ef..e8c84fe17d 100644 --- a/arch/arm/boards/eukrea_cpuimx51/Makefile +++ b/arch/arm/boards/eukrea_cpuimx51/Makefile @@ -1,2 +1,3 @@ obj-y += eukrea_cpuimx51.o lwl-y += lowlevel.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-eukrea_cpuimx51 diff --git a/arch/arm/boards/eukrea_cpuimx51/env/bin/init_board b/arch/arm/boards/eukrea_cpuimx51/defaultenv-eukrea_cpuimx51/bin/init_board index 0af65822f1..0af65822f1 100644 --- a/arch/arm/boards/eukrea_cpuimx51/env/bin/init_board +++ b/arch/arm/boards/eukrea_cpuimx51/defaultenv-eukrea_cpuimx51/bin/init_board diff --git a/arch/arm/boards/eukrea_cpuimx51/env/config b/arch/arm/boards/eukrea_cpuimx51/defaultenv-eukrea_cpuimx51/config index 57abc1ee3d..57abc1ee3d 100644 --- a/arch/arm/boards/eukrea_cpuimx51/env/config +++ b/arch/arm/boards/eukrea_cpuimx51/defaultenv-eukrea_cpuimx51/config diff --git a/arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c b/arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c index fc57f6c157..bb493d7c64 100644 --- a/arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c +++ b/arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c @@ -26,6 +26,7 @@ #include <generated/mach-types.h> #include <partition.h> #include <fs.h> +#include <envfs.h> #include <fcntl.h> #include <nand.h> #include <spi/spi.h> @@ -122,6 +123,9 @@ static int eukrea_cpuimx51_devices_init(void) armlinux_set_architecture(MACH_TYPE_EUKREA_CPUIMX51SD); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_eukrea_cpuimx51); + return 0; } diff --git a/arch/arm/boards/freescale-mx25-3ds/3stack.c b/arch/arm/boards/freescale-mx25-3ds/3stack.c index 36ad591cc0..3ab8c4ad52 100644 --- a/arch/arm/boards/freescale-mx25-3ds/3stack.c +++ b/arch/arm/boards/freescale-mx25-3ds/3stack.c @@ -27,6 +27,7 @@ #include <asm/sections.h> #include <asm/barebox-arm.h> #include <io.h> +#include <envfs.h> #include <partition.h> #include <generated/mach-types.h> #include <mach/imx-nand.h> @@ -156,6 +157,9 @@ static int imx25_3ds_devices_init(void) armlinux_set_architecture(MACH_TYPE_MX25_3DS); armlinux_set_serial(imx_uid()); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_freescale_mx25_3ds); + return 0; } diff --git a/arch/arm/boards/freescale-mx25-3ds/Makefile b/arch/arm/boards/freescale-mx25-3ds/Makefile index 52c416e3a5..20787efc94 100644 --- a/arch/arm/boards/freescale-mx25-3ds/Makefile +++ b/arch/arm/boards/freescale-mx25-3ds/Makefile @@ -18,3 +18,4 @@ lwl-y += lowlevel_init.o obj-y += 3stack.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-freescale-mx25-3ds diff --git a/arch/arm/boards/freescale-mx25-3ds/env/bin/_update b/arch/arm/boards/freescale-mx25-3ds/defaultenv-freescale-mx25-3ds/bin/_update index 014bce3512..014bce3512 100644 --- a/arch/arm/boards/freescale-mx25-3ds/env/bin/_update +++ b/arch/arm/boards/freescale-mx25-3ds/defaultenv-freescale-mx25-3ds/bin/_update diff --git a/arch/arm/boards/freescale-mx25-3ds/env/bin/boot b/arch/arm/boards/freescale-mx25-3ds/defaultenv-freescale-mx25-3ds/bin/boot index 7bbff2d1f6..7bbff2d1f6 100644 --- a/arch/arm/boards/freescale-mx25-3ds/env/bin/boot +++ b/arch/arm/boards/freescale-mx25-3ds/defaultenv-freescale-mx25-3ds/bin/boot diff --git a/arch/arm/boards/freescale-mx25-3ds/env/bin/init b/arch/arm/boards/freescale-mx25-3ds/defaultenv-freescale-mx25-3ds/bin/init index 8eafa34dc8..8eafa34dc8 100644 --- a/arch/arm/boards/freescale-mx25-3ds/env/bin/init +++ b/arch/arm/boards/freescale-mx25-3ds/defaultenv-freescale-mx25-3ds/bin/init diff --git a/arch/arm/boards/freescale-mx25-3ds/env/bin/update_kernel b/arch/arm/boards/freescale-mx25-3ds/defaultenv-freescale-mx25-3ds/bin/update_kernel index 05c822d860..05c822d860 100644 --- a/arch/arm/boards/freescale-mx25-3ds/env/bin/update_kernel +++ b/arch/arm/boards/freescale-mx25-3ds/defaultenv-freescale-mx25-3ds/bin/update_kernel diff --git a/arch/arm/boards/freescale-mx25-3ds/env/bin/update_root b/arch/arm/boards/freescale-mx25-3ds/defaultenv-freescale-mx25-3ds/bin/update_root index eaf36ebcea..eaf36ebcea 100644 --- a/arch/arm/boards/freescale-mx25-3ds/env/bin/update_root +++ b/arch/arm/boards/freescale-mx25-3ds/defaultenv-freescale-mx25-3ds/bin/update_root diff --git a/arch/arm/boards/freescale-mx25-3ds/env/config b/arch/arm/boards/freescale-mx25-3ds/defaultenv-freescale-mx25-3ds/config index 8469935b20..8469935b20 100644 --- a/arch/arm/boards/freescale-mx25-3ds/env/config +++ b/arch/arm/boards/freescale-mx25-3ds/defaultenv-freescale-mx25-3ds/config diff --git a/arch/arm/boards/freescale-mx35-3ds/3stack.c b/arch/arm/boards/freescale-mx35-3ds/3stack.c index caeb3f75e8..97a9968706 100644 --- a/arch/arm/boards/freescale-mx35-3ds/3stack.c +++ b/arch/arm/boards/freescale-mx35-3ds/3stack.c @@ -30,6 +30,7 @@ #include <init.h> #include <nand.h> #include <net.h> +#include <envfs.h> #include <linux/sizes.h> #include <partition.h> #include <gpio.h> @@ -208,6 +209,9 @@ static int f3s_devices_init(void) armlinux_set_architecture(MACH_TYPE_MX35_3DS); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_freescale_mx35_3ds); + return 0; } diff --git a/arch/arm/boards/freescale-mx35-3ds/Makefile b/arch/arm/boards/freescale-mx35-3ds/Makefile index c0de068f2e..c192854f0b 100644 --- a/arch/arm/boards/freescale-mx35-3ds/Makefile +++ b/arch/arm/boards/freescale-mx35-3ds/Makefile @@ -1,2 +1,3 @@ obj-y += 3stack.o lwl-y += lowlevel_init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-freescale-mx35-3ds diff --git a/arch/arm/boards/freescale-mx35-3ds/env/config b/arch/arm/boards/freescale-mx35-3ds/defaultenv-freescale-mx35-3ds/config index af2fb6b2bc..af2fb6b2bc 100644 --- a/arch/arm/boards/freescale-mx35-3ds/env/config +++ b/arch/arm/boards/freescale-mx35-3ds/defaultenv-freescale-mx35-3ds/config diff --git a/arch/arm/boards/freescale-mx53-smd/Makefile b/arch/arm/boards/freescale-mx53-smd/Makefile index 01c7a259e9..98ed275396 100644 --- a/arch/arm/boards/freescale-mx53-smd/Makefile +++ b/arch/arm/boards/freescale-mx53-smd/Makefile @@ -1,2 +1,3 @@ obj-y += board.o lwl-y += lowlevel.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-freescale-mx53-smd diff --git a/arch/arm/boards/freescale-mx53-smd/board.c b/arch/arm/boards/freescale-mx53-smd/board.c index 5dbeeb1e7e..2b58f49205 100644 --- a/arch/arm/boards/freescale-mx53-smd/board.c +++ b/arch/arm/boards/freescale-mx53-smd/board.c @@ -26,6 +26,7 @@ #include <linux/sizes.h> #include <gpio.h> #include <mci.h> +#include <envfs.h> #include <generated/mach-types.h> @@ -135,6 +136,9 @@ static int smd_devices_init(void) armlinux_set_architecture(MACH_TYPE_MX53_SMD); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_freescale_mx53_smd); + return 0; } device_initcall(smd_devices_init); diff --git a/arch/arm/boards/freescale-mx53-smd/env/config b/arch/arm/boards/freescale-mx53-smd/defaultenv-freescale-mx53-smd/config index 27d2663566..27d2663566 100644 --- a/arch/arm/boards/freescale-mx53-smd/env/config +++ b/arch/arm/boards/freescale-mx53-smd/defaultenv-freescale-mx53-smd/config diff --git a/arch/arm/boards/freescale-mx6-sabrelite/lowlevel.c b/arch/arm/boards/freescale-mx6-sabrelite/lowlevel.c index abfb77a157..3b51e016e6 100644 --- a/arch/arm/boards/freescale-mx6-sabrelite/lowlevel.c +++ b/arch/arm/boards/freescale-mx6-sabrelite/lowlevel.c @@ -3,29 +3,70 @@ #include <mach/generic.h> #include <asm/barebox-arm-head.h> #include <asm/barebox-arm.h> +#include <mach/imx6-regs.h> +#include <io.h> +#include <mach/debug_ll.h> +#include <mach/esdctl.h> +#include <asm/cache.h> extern char __dtb_imx6q_sabrelite_start[]; -ENTRY_FUNCTION(start_imx6q_sabrelite, r0, r1, r2) +static noinline void imx6q_sabrelite_start(void) { - void *fdt; + void __iomem *iomuxbase = IOMEM(MX6_IOMUXC_BASE_ADDR); + void __iomem *uart = IOMEM(MX6_UART2_BASE_ADDR); + + writel(0x4, iomuxbase + 0x0bc); + + imx6_ungate_all_peripherals(); + imx6_uart_setup(uart); + pbl_set_putc(imx_uart_putc, uart); + pr_debug("Freescale i.MX6q SabreLite\n"); + + imx6q_barebox_entry(__dtb_imx6q_sabrelite_start); +} + +ENTRY_FUNCTION(start_imx6q_sabrelite, r0, r1, r2) +{ imx6_cpu_lowlevel_init(); - fdt = __dtb_imx6q_sabrelite_start - get_runtime_offset(); + arm_early_mmu_cache_invalidate(); + + relocate_to_current_adr(); + setup_c(); + barrier(); - barebox_arm_entry(0x10000000, SZ_1G, fdt); + imx6q_sabrelite_start(); } extern char __dtb_imx6dl_sabrelite_start[]; -ENTRY_FUNCTION(start_imx6dl_sabrelite, r0, r1, r2) +static noinline void imx6dl_sabrelite_start(void) { - void *fdt; + void __iomem *iomuxbase = IOMEM(MX6_IOMUXC_BASE_ADDR); + void __iomem *uart = IOMEM(MX6_UART2_BASE_ADDR); + + writel(0x4, iomuxbase + 0x16c); + + imx6_ungate_all_peripherals(); + imx6_uart_setup(uart); + pbl_set_putc(imx_uart_putc, uart); + pr_debug("Freescale i.MX6q SabreLite\n"); + + imx6q_barebox_entry(__dtb_imx6q_sabrelite_start); +} + +ENTRY_FUNCTION(start_imx6dl_sabrelite, r0, r1, r2) +{ imx6_cpu_lowlevel_init(); - fdt = __dtb_imx6dl_sabrelite_start - get_runtime_offset(); + arm_early_mmu_cache_invalidate(); + + relocate_to_current_adr(); + setup_c(); + barrier(); - barebox_arm_entry(0x10000000, SZ_1G, fdt); + imx6dl_sabrelite_start(); } diff --git a/arch/arm/boards/friendlyarm-mini6410/Makefile b/arch/arm/boards/friendlyarm-mini6410/Makefile index 0710d3929a..c04150e97f 100644 --- a/arch/arm/boards/friendlyarm-mini6410/Makefile +++ b/arch/arm/boards/friendlyarm-mini6410/Makefile @@ -1,2 +1,3 @@ obj-y += mini6410.o lwl-y += lowlevel.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-friendlyarm-mini6410 diff --git a/arch/arm/boards/friendlyarm-mini6410/env/config b/arch/arm/boards/friendlyarm-mini6410/defaultenv-friendlyarm-mini6410/config index 74beeff4fa..924d7b8cc7 100644 --- a/arch/arm/boards/friendlyarm-mini6410/env/config +++ b/arch/arm/boards/friendlyarm-mini6410/defaultenv-friendlyarm-mini6410/config @@ -24,13 +24,9 @@ rootfs_type=ubifs rootfsimage=root-${machine}.${rootfs_type} # The image type of the kernel. Can be uimage, zimage, raw, or raw_lzo -kernelimage_type=zimage kernelimage=zImage-${machine} -#kernelimage_type=uimage #kernelimage=uImage-$machine -#kernelimage_type=raw #kernelimage=Image-$machine -#kernelimage_type=raw_lzo #kernelimage=Image-$machine.lzo if [ -n $user ]; then diff --git a/arch/arm/boards/friendlyarm-mini6410/mini6410.c b/arch/arm/boards/friendlyarm-mini6410/mini6410.c index a85b1bd920..90fb3f5c1e 100644 --- a/arch/arm/boards/friendlyarm-mini6410/mini6410.c +++ b/arch/arm/boards/friendlyarm-mini6410/mini6410.c @@ -16,6 +16,7 @@ #include <init.h> #include <platform_data/eth-dm9000.h> #include <gpio.h> +#include <envfs.h> #include <generated/mach-types.h> #include <asm/armlinux.h> #include <mach/s3c-iomap.h> @@ -285,6 +286,9 @@ static int mini6410_devices_init(void) armlinux_set_architecture(MACH_TYPE_MINI6410); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_friendlyarm_mini6410); + return 0; } diff --git a/arch/arm/boards/friendlyarm-tiny6410/Makefile b/arch/arm/boards/friendlyarm-tiny6410/Makefile index bf17eaa2ef..ba3f3360f8 100644 --- a/arch/arm/boards/friendlyarm-tiny6410/Makefile +++ b/arch/arm/boards/friendlyarm-tiny6410/Makefile @@ -1,3 +1,4 @@ obj-y += tiny6410.o lwl-y += lowlevel.o lwl-$(CONFIG_MACH_TINY6410_FA) += development-board.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-friendlyarm-tiny6410 diff --git a/arch/arm/boards/friendlyarm-tiny6410/env/config b/arch/arm/boards/friendlyarm-tiny6410/defaultenv-friendlyarm-tiny6410/config index 6422e9f6a6..f38535be48 100644 --- a/arch/arm/boards/friendlyarm-tiny6410/env/config +++ b/arch/arm/boards/friendlyarm-tiny6410/defaultenv-friendlyarm-tiny6410/config @@ -24,13 +24,9 @@ rootfs_type=ubifs rootfsimage=root-${machine}.${rootfs_type} # The image type of the kernel. Can be uimage, zimage, raw, or raw_lzo -kernelimage_type=zimage kernelimage=zImage-${machine} -#kernelimage_type=uimage #kernelimage=uImage-$machine -#kernelimage_type=raw #kernelimage=Image-$machine -#kernelimage_type=raw_lzo #kernelimage=Image-$machine.lzo if [ -n $user ]; then diff --git a/arch/arm/boards/guf-cupid/Makefile b/arch/arm/boards/guf-cupid/Makefile index b33952c2b7..eaf2a4f407 100644 --- a/arch/arm/boards/guf-cupid/Makefile +++ b/arch/arm/boards/guf-cupid/Makefile @@ -18,3 +18,4 @@ lwl-y += lowlevel.o obj-y += board.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-guf-cupid diff --git a/arch/arm/boards/guf-cupid/board.c b/arch/arm/boards/guf-cupid/board.c index d1b285cfaf..a02cecf6c5 100644 --- a/arch/arm/boards/guf-cupid/board.c +++ b/arch/arm/boards/guf-cupid/board.c @@ -25,6 +25,7 @@ #include <driver.h> #include <environment.h> #include <fs.h> +#include <envfs.h> #include <mach/imx35-regs.h> #include <asm/armlinux.h> #include <io.h> @@ -128,6 +129,9 @@ static int cupid_devices_init(void) armlinux_set_architecture(MACH_TYPE_GUF_CUPID); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_guf_cupid); + return 0; } diff --git a/arch/arm/boards/guf-cupid/env/config b/arch/arm/boards/guf-cupid/defaultenv-guf-cupid/config index dc289b39f2..dc289b39f2 100644 --- a/arch/arm/boards/guf-cupid/env/config +++ b/arch/arm/boards/guf-cupid/defaultenv-guf-cupid/config diff --git a/arch/arm/boards/guf-neso/Makefile b/arch/arm/boards/guf-neso/Makefile index 81263ccab0..af90c36c7e 100644 --- a/arch/arm/boards/guf-neso/Makefile +++ b/arch/arm/boards/guf-neso/Makefile @@ -1,3 +1,4 @@ lwl-y += lowlevel.o obj-y += board.o obj-y += pll_init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-guf-neso diff --git a/arch/arm/boards/guf-neso/board.c b/arch/arm/boards/guf-neso/board.c index 176d77e7b3..e1cd9098e0 100644 --- a/arch/arm/boards/guf-neso/board.c +++ b/arch/arm/boards/guf-neso/board.c @@ -23,6 +23,7 @@ #include <partition.h> #include <gpio.h> #include <fs.h> +#include <envfs.h> #include <fcntl.h> #include <nand.h> #include <command.h> @@ -282,6 +283,9 @@ static int neso_devices_init(void) armlinux_set_architecture(MACH_TYPE_NESO); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_guf_neso); + return 0; } diff --git a/arch/arm/boards/guf-neso/env/config b/arch/arm/boards/guf-neso/defaultenv-guf-neso/config index bd44a555d9..bd44a555d9 100644 --- a/arch/arm/boards/guf-neso/env/config +++ b/arch/arm/boards/guf-neso/defaultenv-guf-neso/config diff --git a/arch/arm/boards/guf-vincell/board.c b/arch/arm/boards/guf-vincell/board.c index 43c195254e..007b6dd347 100644 --- a/arch/arm/boards/guf-vincell/board.c +++ b/arch/arm/boards/guf-vincell/board.c @@ -29,15 +29,6 @@ #include <mach/bbu.h> #include <mach/imx5.h> -#define LOCO_FEC_PHY_RST IMX_GPIO_NR(7, 6) - -static void vincell_fec_reset(void) -{ - gpio_direction_output(LOCO_FEC_PHY_RST, 0); - mdelay(1); - gpio_set_value(LOCO_FEC_PHY_RST, 1); -} - static int vincell_devices_init(void) { if (!of_machine_is_compatible("guf,imx53-vincell") && @@ -49,10 +40,8 @@ static int vincell_devices_init(void) clk_set_rate(clk_lookup("emi_slow_podf"), 133333334); clk_set_rate(clk_lookup("nfc_podf"), 33333334); - vincell_fec_reset(); - imx53_bbu_internal_nand_register_handler("nand", - BBU_HANDLER_FLAG_DEFAULT, SZ_512K); + BBU_HANDLER_FLAG_DEFAULT, 0xe0000); return 0; } diff --git a/arch/arm/boards/guf-vincell/lowlevel.c b/arch/arm/boards/guf-vincell/lowlevel.c index af7c65d9be..de706b68b2 100644 --- a/arch/arm/boards/guf-vincell/lowlevel.c +++ b/arch/arm/boards/guf-vincell/lowlevel.c @@ -11,6 +11,8 @@ #include <mach/generic.h> #include <asm/barebox-arm.h> #include <asm/barebox-arm-head.h> +#include <asm/cache.h> +#include <mach/xload.h> #define IOMUX_PADCTL_DDRI_DDR (1 << 9) @@ -123,12 +125,18 @@ void disable_watchdog(void) writew(0x0, MX53_WDOG2_BASE_ADDR + 8); } -static noinline void imx53_guf_vincell_init(void *fdt) +extern char __dtb_imx53_guf_vincell_lt_start[]; +extern char __dtb_imx53_guf_vincell_start[]; + +static noinline void imx53_guf_vincell_init(int is_lt) { void __iomem *ccm = (void *)MX53_CCM_BASE_ADDR; + void __iomem *uart = IOMEM(MX53_UART2_BASE_ADDR); + void *fdt; u32 r; + enum bootsource src; + int instance; - imx5_cpu_lowlevel_init(); arm_setup_stack(MX53_IRAM_BASE_ADDR + MX53_IRAM_SIZE - 8); writel(0x0088494c, ccm + MX5_CCM_CBCDR); @@ -137,12 +145,11 @@ static noinline void imx53_guf_vincell_init(void *fdt) imx53_init_lowlevel_early(800); - if (IS_ENABLED(CONFIG_DEBUG_LL)) { - writel(0x3, MX53_IOMUXC_BASE_ADDR + 0x27c); - writel(0x3, MX53_IOMUXC_BASE_ADDR + 0x278); - imx53_uart_setup_ll(); - putc_ll('>'); - } + writel(0x3, MX53_IOMUXC_BASE_ADDR + 0x27c); + writel(0x3, MX53_IOMUXC_BASE_ADDR + 0x278); + imx53_uart_setup(uart); + pbl_set_putc(imx_uart_putc, uart); + pr_debug("GuF Vincell\n"); /* Skip SDRAM initialization if we run from RAM */ r = get_pc(); @@ -150,29 +157,39 @@ static noinline void imx53_guf_vincell_init(void *fdt) disable_watchdog(); configure_dram_iomux(); imx_esdctlv4_init(); + + imx53_get_boot_source(&src, &instance); + + if (src == BOOTSOURCE_NAND && + IS_ENABLED(CONFIG_MACH_GUF_VINCELL_XLOAD)) + imx53_nand_start_image(); } + if (is_lt) + fdt = __dtb_imx53_guf_vincell_lt_start; + else + fdt = __dtb_imx53_guf_vincell_start; + imx53_barebox_entry(fdt); } -extern char __dtb_imx53_guf_vincell_lt_start[]; - -ENTRY_FUNCTION(start_imx53_guf_vincell_lt, r0, r1, r2) +static void __imx53_guf_vincell_init(int is_lt) { - void *fdt; - - fdt = __dtb_imx53_guf_vincell_lt_start - get_runtime_offset(); + arm_early_mmu_cache_invalidate(); + imx5_cpu_lowlevel_init(); + relocate_to_current_adr(); + setup_c(); + barrier(); - imx53_guf_vincell_init(fdt); + imx53_guf_vincell_init(is_lt); } -extern char __dtb_imx53_guf_vincell_start[]; +ENTRY_FUNCTION(start_imx53_guf_vincell_lt, r0, r1, r2) +{ + __imx53_guf_vincell_init(1); +} ENTRY_FUNCTION(start_imx53_guf_vincell, r0, r1, r2) { - void *fdt; - - fdt = __dtb_imx53_guf_vincell_start - get_runtime_offset(); - - imx53_guf_vincell_init(fdt); + __imx53_guf_vincell_init(0); } diff --git a/arch/arm/boards/haba-knx/Makefile b/arch/arm/boards/haba-knx/Makefile index eb072c0161..d9db6aba62 100644 --- a/arch/arm/boards/haba-knx/Makefile +++ b/arch/arm/boards/haba-knx/Makefile @@ -1 +1,2 @@ obj-y += init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-haba-knx diff --git a/arch/arm/boards/haba-knx/env/bin/init_board b/arch/arm/boards/haba-knx/defaultenv-haba-knx/bin/init_board index 0a6baf722b..0a6baf722b 100644 --- a/arch/arm/boards/haba-knx/env/bin/init_board +++ b/arch/arm/boards/haba-knx/defaultenv-haba-knx/bin/init_board diff --git a/arch/arm/boards/haba-knx/env/config b/arch/arm/boards/haba-knx/defaultenv-haba-knx/config index d1dca105ad..d1dca105ad 100644 --- a/arch/arm/boards/haba-knx/env/config +++ b/arch/arm/boards/haba-knx/defaultenv-haba-knx/config diff --git a/arch/arm/boards/haba-knx/init.c b/arch/arm/boards/haba-knx/init.c index f9d8f0f903..36f1e8b741 100644 --- a/arch/arm/boards/haba-knx/init.c +++ b/arch/arm/boards/haba-knx/init.c @@ -25,6 +25,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> +#include <envfs.h> #include <mach/hardware.h> #include <nand.h> #include <linux/sizes.h> @@ -323,6 +324,9 @@ static int haba_knx_devices_init(void) devfs_create_partitions("nand0", haba_knx_nand0_partitions); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_haba_knx); + return 0; } device_initcall(haba_knx_devices_init); diff --git a/arch/arm/boards/highbank/Makefile b/arch/arm/boards/highbank/Makefile index e11fd5b692..e5e4536cd1 100644 --- a/arch/arm/boards/highbank/Makefile +++ b/arch/arm/boards/highbank/Makefile @@ -1,3 +1,4 @@ obj-y += init.o lwl-y += lowlevel.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-highbank diff --git a/arch/arm/boards/highbank/env/boot.d/010-ahci-boot b/arch/arm/boards/highbank/defaultenv-highbank/boot.d/010-ahci-boot index 3672f0495e..3672f0495e 120000 --- a/arch/arm/boards/highbank/env/boot.d/010-ahci-boot +++ b/arch/arm/boards/highbank/defaultenv-highbank/boot.d/010-ahci-boot diff --git a/arch/arm/boards/highbank/env/boot.d/011-ahci b/arch/arm/boards/highbank/defaultenv-highbank/boot.d/011-ahci index 36b3b2815b..36b3b2815b 120000 --- a/arch/arm/boards/highbank/env/boot.d/011-ahci +++ b/arch/arm/boards/highbank/defaultenv-highbank/boot.d/011-ahci diff --git a/arch/arm/boards/highbank/env/boot.d/020-mmc-boot b/arch/arm/boards/highbank/defaultenv-highbank/boot.d/020-mmc-boot index 85c19bbd66..85c19bbd66 120000 --- a/arch/arm/boards/highbank/env/boot.d/020-mmc-boot +++ b/arch/arm/boards/highbank/defaultenv-highbank/boot.d/020-mmc-boot diff --git a/arch/arm/boards/highbank/env/boot.d/021-mmc b/arch/arm/boards/highbank/defaultenv-highbank/boot.d/021-mmc index 5af95d0ac7..5af95d0ac7 120000 --- a/arch/arm/boards/highbank/env/boot.d/021-mmc +++ b/arch/arm/boards/highbank/defaultenv-highbank/boot.d/021-mmc diff --git a/arch/arm/boards/highbank/env/boot.d/030-net b/arch/arm/boards/highbank/defaultenv-highbank/boot.d/030-net index 70b8ea3965..70b8ea3965 120000 --- a/arch/arm/boards/highbank/env/boot.d/030-net +++ b/arch/arm/boards/highbank/defaultenv-highbank/boot.d/030-net diff --git a/arch/arm/boards/highbank/env/boot.d/031-net-eth1 b/arch/arm/boards/highbank/defaultenv-highbank/boot.d/031-net-eth1 index 5a30a308c7..5a30a308c7 120000 --- a/arch/arm/boards/highbank/env/boot.d/031-net-eth1 +++ b/arch/arm/boards/highbank/defaultenv-highbank/boot.d/031-net-eth1 diff --git a/arch/arm/boards/highbank/env/boot/ahci b/arch/arm/boards/highbank/defaultenv-highbank/boot/ahci index 46a8c1b321..46a8c1b321 100644 --- a/arch/arm/boards/highbank/env/boot/ahci +++ b/arch/arm/boards/highbank/defaultenv-highbank/boot/ahci diff --git a/arch/arm/boards/highbank/env/boot/ahci-boot b/arch/arm/boards/highbank/defaultenv-highbank/boot/ahci-boot index 919eac54a7..919eac54a7 100644 --- a/arch/arm/boards/highbank/env/boot/ahci-boot +++ b/arch/arm/boards/highbank/defaultenv-highbank/boot/ahci-boot diff --git a/arch/arm/boards/highbank/env/boot/mmc b/arch/arm/boards/highbank/defaultenv-highbank/boot/mmc index 0fff5b4a81..0fff5b4a81 100644 --- a/arch/arm/boards/highbank/env/boot/mmc +++ b/arch/arm/boards/highbank/defaultenv-highbank/boot/mmc diff --git a/arch/arm/boards/highbank/env/boot/mmc-boot b/arch/arm/boards/highbank/defaultenv-highbank/boot/mmc-boot index f3ae301e1b..f3ae301e1b 100644 --- a/arch/arm/boards/highbank/env/boot/mmc-boot +++ b/arch/arm/boards/highbank/defaultenv-highbank/boot/mmc-boot diff --git a/arch/arm/boards/highbank/env/boot/net b/arch/arm/boards/highbank/defaultenv-highbank/boot/net index 6a700087fb..6a700087fb 100644 --- a/arch/arm/boards/highbank/env/boot/net +++ b/arch/arm/boards/highbank/defaultenv-highbank/boot/net diff --git a/arch/arm/boards/highbank/env/boot/net-eth1 b/arch/arm/boards/highbank/defaultenv-highbank/boot/net-eth1 index 1c70bdf3f0..1c70bdf3f0 100644 --- a/arch/arm/boards/highbank/env/boot/net-eth1 +++ b/arch/arm/boards/highbank/defaultenv-highbank/boot/net-eth1 diff --git a/arch/arm/boards/highbank/env/data/oftree b/arch/arm/boards/highbank/defaultenv-highbank/data/oftree index 9a94b310c3..9a94b310c3 100644 --- a/arch/arm/boards/highbank/env/data/oftree +++ b/arch/arm/boards/highbank/defaultenv-highbank/data/oftree diff --git a/arch/arm/boards/highbank/env/init/001-dtb-probe b/arch/arm/boards/highbank/defaultenv-highbank/init/001-dtb-probe index 610db1500e..610db1500e 100644 --- a/arch/arm/boards/highbank/env/init/001-dtb-probe +++ b/arch/arm/boards/highbank/defaultenv-highbank/init/001-dtb-probe diff --git a/arch/arm/boards/highbank/env/init/automount b/arch/arm/boards/highbank/defaultenv-highbank/init/automount index eb5c07a739..eb5c07a739 100644 --- a/arch/arm/boards/highbank/env/init/automount +++ b/arch/arm/boards/highbank/defaultenv-highbank/init/automount diff --git a/arch/arm/boards/highbank/env/nv/boot.default b/arch/arm/boards/highbank/defaultenv-highbank/nv/boot.default index c47e1b2bca..c47e1b2bca 100644 --- a/arch/arm/boards/highbank/env/nv/boot.default +++ b/arch/arm/boards/highbank/defaultenv-highbank/nv/boot.default diff --git a/arch/arm/boards/highbank/env/nv/bootm.oftree b/arch/arm/boards/highbank/defaultenv-highbank/nv/bootm.oftree index c373173805..c373173805 100644 --- a/arch/arm/boards/highbank/env/nv/bootm.oftree +++ b/arch/arm/boards/highbank/defaultenv-highbank/nv/bootm.oftree diff --git a/arch/arm/boards/highbank/env/nv/linux.bootargs.console b/arch/arm/boards/highbank/defaultenv-highbank/nv/linux.bootargs.console index 826debe7c2..826debe7c2 100644 --- a/arch/arm/boards/highbank/env/nv/linux.bootargs.console +++ b/arch/arm/boards/highbank/defaultenv-highbank/nv/linux.bootargs.console diff --git a/arch/arm/boards/highbank/init.c b/arch/arm/boards/highbank/init.c index 295d4757f2..577ccc0b74 100644 --- a/arch/arm/boards/highbank/init.c +++ b/arch/arm/boards/highbank/init.c @@ -17,6 +17,7 @@ #include <linux/sizes.h> #include <io.h> #include <of.h> +#include <envfs.h> #define FIRMWARE_DTB_BASE 0x1000 @@ -126,6 +127,9 @@ static int highbank_devices_init(void) devfs_add_partition("nvram", 0x00000, SZ_16K, DEVFS_PARTITION_FIXED, "env0"); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_highbank); + return 0; } device_initcall(highbank_devices_init); diff --git a/arch/arm/boards/nhk8815/Makefile b/arch/arm/boards/nhk8815/Makefile index f4298529a0..56f2013e22 100644 --- a/arch/arm/boards/nhk8815/Makefile +++ b/arch/arm/boards/nhk8815/Makefile @@ -1,2 +1,3 @@ obj-y += setup.o lwl-y += lowlevel.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-nhk8815 diff --git a/arch/arm/boards/nhk8815/env/config b/arch/arm/boards/nhk8815/defaultenv-nhk8815/config index c05ed2704e..c05ed2704e 100644 --- a/arch/arm/boards/nhk8815/env/config +++ b/arch/arm/boards/nhk8815/defaultenv-nhk8815/config diff --git a/arch/arm/boards/nhk8815/setup.c b/arch/arm/boards/nhk8815/setup.c index aaf9cd7531..0b6901001a 100644 --- a/arch/arm/boards/nhk8815/setup.c +++ b/arch/arm/boards/nhk8815/setup.c @@ -23,6 +23,7 @@ #include <asm/armlinux.h> #include <generated/mach-types.h> #include <io.h> +#include <envfs.h> #include <mach/hardware.h> #include <mach/board.h> @@ -106,6 +107,9 @@ static int nhk8815_devices_init(void) devfs_add_partition("nand0", 0x7FE0000, 0x020000, DEVFS_PARTITION_FIXED, "env_raw"); dev_add_bb_dev("env_raw", "env0"); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_nhk8815); + return 0; } device_initcall(nhk8815_devices_init); diff --git a/arch/arm/boards/phytec-phycard-omap4/Makefile b/arch/arm/boards/phytec-phycard-omap4/Makefile index 64782e0fc2..0fec0c7f53 100644 --- a/arch/arm/boards/phytec-phycard-omap4/Makefile +++ b/arch/arm/boards/phytec-phycard-omap4/Makefile @@ -15,3 +15,4 @@ # obj-y += pca-a-xl2.o lwl-y += mux.o lowlevel.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-phytec-phycard-omap4 diff --git a/arch/arm/boards/phytec-phycard-omap4/env/bin/nand_bootstrap b/arch/arm/boards/phytec-phycard-omap4/defaultenv-phytec-phycard-omap4/bin/nand_bootstrap index f8873fabe2..f8873fabe2 100644 --- a/arch/arm/boards/phytec-phycard-omap4/env/bin/nand_bootstrap +++ b/arch/arm/boards/phytec-phycard-omap4/defaultenv-phytec-phycard-omap4/bin/nand_bootstrap diff --git a/arch/arm/boards/phytec-phycard-omap4/env/config b/arch/arm/boards/phytec-phycard-omap4/defaultenv-phytec-phycard-omap4/config index 998f9fa0f2..998f9fa0f2 100644 --- a/arch/arm/boards/phytec-phycard-omap4/env/config +++ b/arch/arm/boards/phytec-phycard-omap4/defaultenv-phytec-phycard-omap4/config diff --git a/arch/arm/boards/phytec-phycore-omap4460/Makefile b/arch/arm/boards/phytec-phycore-omap4460/Makefile index 5d4eb10b9b..5e78e11ec1 100644 --- a/arch/arm/boards/phytec-phycore-omap4460/Makefile +++ b/arch/arm/boards/phytec-phycore-omap4460/Makefile @@ -1,2 +1,3 @@ obj-y += board.o lwl-y += lowlevel.o mux.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-phytec-phycore-omap4460 diff --git a/arch/arm/boards/phytec-phycore-omap4460/board.c b/arch/arm/boards/phytec-phycore-omap4460/board.c index 807cdd677d..b7aeeca6df 100644 --- a/arch/arm/boards/phytec-phycore-omap4460/board.c +++ b/arch/arm/boards/phytec-phycore-omap4460/board.c @@ -20,6 +20,7 @@ #include <driver.h> #include <gpio.h> #include <io.h> +#include <envfs.h> #include <asm/armlinux.h> #include <generated/mach-types.h> #include <mach/omap4-silicon.h> @@ -307,6 +308,9 @@ static int pcm049_devices_init(void) if (IS_ENABLED(CONFIG_DRIVER_VIDEO_OMAP)) omap_add_display(&pcm049_fb_data); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_phytec_phycore_omap4460); + return 0; } device_initcall(pcm049_devices_init); diff --git a/arch/arm/boards/phytec-phycore-omap4460/env/bin/init_board b/arch/arm/boards/phytec-phycore-omap4460/defaultenv-phytec-phycore-omap4460/bin/init_board index d5142ee8d0..d5142ee8d0 100644 --- a/arch/arm/boards/phytec-phycore-omap4460/env/bin/init_board +++ b/arch/arm/boards/phytec-phycore-omap4460/defaultenv-phytec-phycore-omap4460/bin/init_board diff --git a/arch/arm/boards/phytec-phycore-omap4460/env/bin/nand_bootstrap b/arch/arm/boards/phytec-phycore-omap4460/defaultenv-phytec-phycore-omap4460/bin/nand_bootstrap index 49e38dc4f0..49e38dc4f0 100644 --- a/arch/arm/boards/phytec-phycore-omap4460/env/bin/nand_bootstrap +++ b/arch/arm/boards/phytec-phycore-omap4460/defaultenv-phytec-phycore-omap4460/bin/nand_bootstrap diff --git a/arch/arm/boards/phytec-phycore-omap4460/env/config b/arch/arm/boards/phytec-phycore-omap4460/defaultenv-phytec-phycore-omap4460/config index 1a252dd9c5..1a252dd9c5 100644 --- a/arch/arm/boards/phytec-phycore-omap4460/env/config +++ b/arch/arm/boards/phytec-phycore-omap4460/defaultenv-phytec-phycore-omap4460/config diff --git a/arch/arm/boards/pm9261/Makefile b/arch/arm/boards/pm9261/Makefile index 1398c26a0f..bff467b1dc 100644 --- a/arch/arm/boards/pm9261/Makefile +++ b/arch/arm/boards/pm9261/Makefile @@ -1,3 +1,4 @@ obj-y += init.o lwl-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) += lowlevel_init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-pm9261 diff --git a/arch/arm/boards/pm9261/env/config b/arch/arm/boards/pm9261/defaultenv-pm9261/config index bdc2d38d42..bdc2d38d42 100644 --- a/arch/arm/boards/pm9261/env/config +++ b/arch/arm/boards/pm9261/defaultenv-pm9261/config diff --git a/arch/arm/boards/pm9261/init.c b/arch/arm/boards/pm9261/init.c index 177355b633..b0377d063c 100644 --- a/arch/arm/boards/pm9261/init.c +++ b/arch/arm/boards/pm9261/init.c @@ -27,6 +27,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> +#include <envfs.h> #include <mach/hardware.h> #include <nand.h> #include <linux/mtd/nand.h> @@ -152,6 +153,9 @@ static int pm9261_devices_init(void) armlinux_set_architecture(MACH_TYPE_PM9261); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_pm9261); + return 0; } device_initcall(pm9261_devices_init); diff --git a/arch/arm/boards/pm9g45/Makefile b/arch/arm/boards/pm9g45/Makefile index eb072c0161..d81b1881b3 100644 --- a/arch/arm/boards/pm9g45/Makefile +++ b/arch/arm/boards/pm9g45/Makefile @@ -1 +1,2 @@ obj-y += init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-pm9g45 diff --git a/arch/arm/boards/pm9g45/env/config b/arch/arm/boards/pm9g45/defaultenv-pm9g45/config index 18ac565d49..18ac565d49 100644 --- a/arch/arm/boards/pm9g45/env/config +++ b/arch/arm/boards/pm9g45/defaultenv-pm9g45/config diff --git a/arch/arm/boards/pm9g45/init.c b/arch/arm/boards/pm9g45/init.c index 524fe5395a..efa5dc025d 100644 --- a/arch/arm/boards/pm9g45/init.c +++ b/arch/arm/boards/pm9g45/init.c @@ -27,6 +27,7 @@ #include <fcntl.h> #include <gpio.h> #include <io.h> +#include <envfs.h> #include <mach/hardware.h> #include <nand.h> #include <linux/mtd/nand.h> @@ -164,6 +165,9 @@ static int pm9g45_devices_init(void) armlinux_set_architecture(MACH_TYPE_PM9G45); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_pm9g45); + return 0; } device_initcall(pm9g45_devices_init); diff --git a/arch/arm/boards/qemu-virt64/Makefile b/arch/arm/boards/qemu-virt64/Makefile index 2da0494d49..e354607548 100644 --- a/arch/arm/boards/qemu-virt64/Makefile +++ b/arch/arm/boards/qemu-virt64/Makefile @@ -1,2 +1,3 @@ obj-y += init.o lwl-y += lowlevel.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-qemu-virt64 diff --git a/arch/arm/boards/qemu-virt64/env/config b/arch/arm/boards/qemu-virt64/defaultenv-qemu-virt64/config index 781dbfefa6..781dbfefa6 100644 --- a/arch/arm/boards/qemu-virt64/env/config +++ b/arch/arm/boards/qemu-virt64/defaultenv-qemu-virt64/config diff --git a/arch/arm/boards/qemu-virt64/init.c b/arch/arm/boards/qemu-virt64/init.c index 58dba0f68a..a85bd84db7 100644 --- a/arch/arm/boards/qemu-virt64/init.c +++ b/arch/arm/boards/qemu-virt64/init.c @@ -12,6 +12,7 @@ #include <environment.h> #include <linux/sizes.h> #include <io.h> +#include <envfs.h> #include <globalvar.h> #include <asm/mmu.h> @@ -30,6 +31,9 @@ static int virt_env_init(void) devfs_add_partition("nor0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self0"); devfs_add_partition("nor0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0"); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_qemu_virt64); + return 0; } device_initcall(virt_env_init); diff --git a/arch/arm/boards/qil-a926x/Makefile b/arch/arm/boards/qil-a926x/Makefile index eb072c0161..0c7bc3f043 100644 --- a/arch/arm/boards/qil-a926x/Makefile +++ b/arch/arm/boards/qil-a926x/Makefile @@ -1 +1,2 @@ obj-y += init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-qil-a926x diff --git a/arch/arm/boards/qil-a926x/env/bin/init_board b/arch/arm/boards/qil-a926x/defaultenv-qil-a926x/bin/init_board index 09ba7cc981..09ba7cc981 100644 --- a/arch/arm/boards/qil-a926x/env/bin/init_board +++ b/arch/arm/boards/qil-a926x/defaultenv-qil-a926x/bin/init_board diff --git a/arch/arm/boards/qil-a926x/env/config b/arch/arm/boards/qil-a926x/defaultenv-qil-a926x/config index 793a73f11e..793a73f11e 100644 --- a/arch/arm/boards/qil-a926x/env/config +++ b/arch/arm/boards/qil-a926x/defaultenv-qil-a926x/config diff --git a/arch/arm/boards/qil-a926x/init.c b/arch/arm/boards/qil-a926x/init.c index 872743775f..3ef9872797 100644 --- a/arch/arm/boards/qil-a926x/init.c +++ b/arch/arm/boards/qil-a926x/init.c @@ -15,6 +15,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> +#include <envfs.h> #include <mach/hardware.h> #include <nand.h> #include <linux/sizes.h> @@ -215,6 +216,9 @@ static int qil_a9260_devices_init(void) devfs_add_partition("nand0", SZ_512K, SZ_128K, DEVFS_PARTITION_FIXED, "env_raw1"); dev_add_bb_dev("env_raw1", "env1"); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_qil_a926x); + return 0; } device_initcall(qil_a9260_devices_init); diff --git a/arch/arm/boards/sama5d3_xplained/Makefile b/arch/arm/boards/sama5d3_xplained/Makefile index eb072c0161..3c301cb0cd 100644 --- a/arch/arm/boards/sama5d3_xplained/Makefile +++ b/arch/arm/boards/sama5d3_xplained/Makefile @@ -1 +1,2 @@ obj-y += init.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-sama5d3_xplained diff --git a/arch/arm/boards/sama5d3_xplained/env/config b/arch/arm/boards/sama5d3_xplained/defaultenv-sama5d3_xplained/config index 5464f642c1..5464f642c1 100644 --- a/arch/arm/boards/sama5d3_xplained/env/config +++ b/arch/arm/boards/sama5d3_xplained/defaultenv-sama5d3_xplained/config diff --git a/arch/arm/boards/sama5d3_xplained/init.c b/arch/arm/boards/sama5d3_xplained/init.c index 373ab814d1..fda4c56c6c 100644 --- a/arch/arm/boards/sama5d3_xplained/init.c +++ b/arch/arm/boards/sama5d3_xplained/init.c @@ -22,6 +22,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> +#include <envfs.h> #include <mach/hardware.h> #include <nand.h> #include <linux/sizes.h> @@ -224,6 +225,9 @@ static int sama5d3_xplained_devices_init(void) devfs_create_partitions("nand0", sama5d3_xplained_nand0_partitions); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_sama5d3_xplained); + return 0; } device_initcall(sama5d3_xplained_devices_init); diff --git a/arch/arm/boards/sama5d3xek/Makefile b/arch/arm/boards/sama5d3xek/Makefile index db021eeb77..32dcb4283c 100644 --- a/arch/arm/boards/sama5d3xek/Makefile +++ b/arch/arm/boards/sama5d3xek/Makefile @@ -1,2 +1,3 @@ obj-y += init.o obj-$(CONFIG_W1) += hw_version.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-sama5d3xek diff --git a/arch/arm/boards/sama5d3xek/env/bin/init_board b/arch/arm/boards/sama5d3xek/defaultenv-sama5d3xek/bin/init_board index f3d417e356..f3d417e356 100644 --- a/arch/arm/boards/sama5d3xek/env/bin/init_board +++ b/arch/arm/boards/sama5d3xek/defaultenv-sama5d3xek/bin/init_board diff --git a/arch/arm/boards/sama5d3xek/env/config b/arch/arm/boards/sama5d3xek/defaultenv-sama5d3xek/config index a7fd930ed1..a7fd930ed1 100644 --- a/arch/arm/boards/sama5d3xek/env/config +++ b/arch/arm/boards/sama5d3xek/defaultenv-sama5d3xek/config diff --git a/arch/arm/boards/sama5d3xek/init.c b/arch/arm/boards/sama5d3xek/init.c index 7504bf83b0..b35bdb5b05 100644 --- a/arch/arm/boards/sama5d3xek/init.c +++ b/arch/arm/boards/sama5d3xek/init.c @@ -24,6 +24,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> +#include <envfs.h> #include <mach/hardware.h> #include <nand.h> #include <linux/sizes.h> @@ -463,6 +464,9 @@ static int at91sama5d3xek_devices_init(void) devfs_create_partitions("nand0", at91sama5d3xek_nand0_partitions); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_sama5d3xek); + return 0; } device_initcall(at91sama5d3xek_devices_init); diff --git a/arch/arm/boards/scb9328/Makefile b/arch/arm/boards/scb9328/Makefile index 002f218391..7ef6c3fe62 100644 --- a/arch/arm/boards/scb9328/Makefile +++ b/arch/arm/boards/scb9328/Makefile @@ -1,3 +1,4 @@ lwl-y += lowlevel_init.o obj-y += scb9328.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-scb9328 diff --git a/arch/arm/boards/scb9328/env/config b/arch/arm/boards/scb9328/defaultenv-scb9328/config index c3cbce57d4..c3cbce57d4 100644 --- a/arch/arm/boards/scb9328/env/config +++ b/arch/arm/boards/scb9328/defaultenv-scb9328/config diff --git a/arch/arm/boards/scb9328/scb9328.c b/arch/arm/boards/scb9328/scb9328.c index fda3b1432c..697ed4b401 100644 --- a/arch/arm/boards/scb9328/scb9328.c +++ b/arch/arm/boards/scb9328/scb9328.c @@ -25,6 +25,7 @@ #include <io.h> #include <partition.h> #include <fs.h> +#include <envfs.h> #include <fcntl.h> #include <platform_data/eth-dm9000.h> #include <led.h> @@ -79,6 +80,9 @@ static int scb9328_devices_init(void) armlinux_set_architecture(MACH_TYPE_SCB9328); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_scb9328); + return 0; } diff --git a/arch/arm/boards/tny-a926x/Makefile b/arch/arm/boards/tny-a926x/Makefile index 45b10ec63f..dba2f8cfcf 100644 --- a/arch/arm/boards/tny-a926x/Makefile +++ b/arch/arm/boards/tny-a926x/Makefile @@ -6,3 +6,4 @@ obj-$(CONFIG_AT91_BOOTSTRAP) += $(bootstrap-y) lowlevel_init-$(CONFIG_MACH_TNY_A9263) = tny_a9263_lowlevel_init.o lwl-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) += $(lowlevel_init-y) +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-tny-a926x diff --git a/arch/arm/boards/tny-a926x/env/bin/init_board b/arch/arm/boards/tny-a926x/defaultenv-tny-a926x/bin/init_board index 0d40eb41a5..0d40eb41a5 100644 --- a/arch/arm/boards/tny-a926x/env/bin/init_board +++ b/arch/arm/boards/tny-a926x/defaultenv-tny-a926x/bin/init_board diff --git a/arch/arm/boards/tny-a926x/env/config b/arch/arm/boards/tny-a926x/defaultenv-tny-a926x/config index c19ec4fd61..c19ec4fd61 100644 --- a/arch/arm/boards/tny-a926x/env/config +++ b/arch/arm/boards/tny-a926x/defaultenv-tny-a926x/config diff --git a/arch/arm/boards/tny-a926x/init.c b/arch/arm/boards/tny-a926x/init.c index 3ebd8aae02..3b83c9f222 100644 --- a/arch/arm/boards/tny-a926x/init.c +++ b/arch/arm/boards/tny-a926x/init.c @@ -24,6 +24,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> +#include <envfs.h> #include <mach/hardware.h> #include <nand.h> #include <linux/sizes.h> @@ -241,6 +242,9 @@ static int tny_a9260_devices_init(void) devfs_add_partition("nand0", SZ_512K, SZ_128K, DEVFS_PARTITION_FIXED, "env_raw1"); dev_add_bb_dev("env_raw1", "env1"); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_tny_a926x); + return 0; } device_initcall(tny_a9260_devices_init); diff --git a/arch/arm/boards/usb-a926x/Makefile b/arch/arm/boards/usb-a926x/Makefile index f1370a4df0..4f09581e33 100644 --- a/arch/arm/boards/usb-a926x/Makefile +++ b/arch/arm/boards/usb-a926x/Makefile @@ -6,3 +6,4 @@ obj-$(CONFIG_AT91_BOOTSTRAP) += $(bootstrap-y) lowlevel_init-$(CONFIG_MACH_USB_A9263) = usb_a9263_lowlevel_init.o lwl-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) += $(lowlevel_init-y) +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-usb-a926x diff --git a/arch/arm/boards/usb-a926x/env/bin/init_board b/arch/arm/boards/usb-a926x/defaultenv-usb-a926x/bin/init_board index 09ba7cc981..09ba7cc981 100644 --- a/arch/arm/boards/usb-a926x/env/bin/init_board +++ b/arch/arm/boards/usb-a926x/defaultenv-usb-a926x/bin/init_board diff --git a/arch/arm/boards/usb-a926x/env/config b/arch/arm/boards/usb-a926x/defaultenv-usb-a926x/config index 49199ba391..49199ba391 100644 --- a/arch/arm/boards/usb-a926x/env/config +++ b/arch/arm/boards/usb-a926x/defaultenv-usb-a926x/config diff --git a/arch/arm/boards/usb-a926x/init.c b/arch/arm/boards/usb-a926x/init.c index a9a0549adf..12e8f4e0d6 100644 --- a/arch/arm/boards/usb-a926x/init.c +++ b/arch/arm/boards/usb-a926x/init.c @@ -24,6 +24,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> +#include <envfs.h> #include <mach/hardware.h> #include <nand.h> #include <linux/sizes.h> @@ -416,6 +417,9 @@ static int usb_a9260_devices_init(void) devfs_add_partition("nand0", SZ_512K, SZ_128K, DEVFS_PARTITION_FIXED, "env_raw1"); dev_add_bb_dev("env_raw1", "env1"); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_usb_a926x); + return 0; } device_initcall(usb_a9260_devices_init); diff --git a/arch/arm/boards/vexpress/Makefile b/arch/arm/boards/vexpress/Makefile index e11fd5b692..c89d7bf182 100644 --- a/arch/arm/boards/vexpress/Makefile +++ b/arch/arm/boards/vexpress/Makefile @@ -1,3 +1,4 @@ obj-y += init.o lwl-y += lowlevel.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-vexpress diff --git a/arch/arm/boards/vexpress/env/config b/arch/arm/boards/vexpress/defaultenv-vexpress/config index 6c0abda40c..6c0abda40c 100644 --- a/arch/arm/boards/vexpress/env/config +++ b/arch/arm/boards/vexpress/defaultenv-vexpress/config diff --git a/arch/arm/boards/vexpress/init.c b/arch/arm/boards/vexpress/init.c index 5b2035bd36..f89dff9392 100644 --- a/arch/arm/boards/vexpress/init.c +++ b/arch/arm/boards/vexpress/init.c @@ -14,6 +14,7 @@ #include <partition.h> #include <linux/sizes.h> #include <io.h> +#include <envfs.h> #include <globalvar.h> #include <linux/amba/sp804.h> #include <mci.h> @@ -109,6 +110,9 @@ static int vexpress_devices_init(void) devfs_add_partition("nor0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self"); devfs_add_partition("nor0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0"); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) + defaultenv_append_directory(defaultenv_vexpress); + return 0; } device_initcall(vexpress_devices_init); diff --git a/arch/arm/boards/vscom-baltos/Makefile b/arch/arm/boards/vscom-baltos/Makefile new file mode 100644 index 0000000000..092c31d6b2 --- /dev/null +++ b/arch/arm/boards/vscom-baltos/Makefile @@ -0,0 +1,2 @@ +lwl-y += lowlevel.o +obj-y += board.o diff --git a/arch/arm/boards/vscom-baltos/board.c b/arch/arm/boards/vscom-baltos/board.c new file mode 100644 index 0000000000..dc08ed5a20 --- /dev/null +++ b/arch/arm/boards/vscom-baltos/board.c @@ -0,0 +1,132 @@ +/* + * (C) Copyright 2008 + * Texas Instruments, <www.ti.com> + * Raghavendra KH <r-khandenahally@ti.com> + * + * Copyright (C) 2012 Jan Luebbe <j.luebbe@pengutronix.de> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/** + * @file + * @brief OnRISC Baltos Specific Board Initialization routines + */ + +#include <common.h> +#include <init.h> +#include <driver.h> +#include <envfs.h> +#include <environment.h> +#include <globalvar.h> +#include <linux/sizes.h> +#include <net.h> +#include <envfs.h> +#include <bootsource.h> +#include <asm/armlinux.h> +#include <generated/mach-types.h> +#include <mach/am33xx-generic.h> +#include <mach/am33xx-silicon.h> +#include <mach/sys_info.h> +#include <mach/syslib.h> +#include <mach/gpmc.h> +#include <linux/err.h> +#include <mach/bbu.h> +#include <libfile.h> + +static struct omap_barebox_part baltos_barebox_part = { + .nand_offset = SZ_512K, + .nand_size = 0x1e0000, +}; + +struct bsp_vs_hwparam { + uint32_t Magic; + uint32_t HwRev; + uint32_t SerialNumber; + char PrdDate[11]; + uint16_t SystemId; + uint8_t MAC1[6]; + uint8_t MAC2[6]; + uint8_t MAC3[6]; +} __attribute__ ((packed)); + +static int baltos_read_eeprom(void) +{ + struct bsp_vs_hwparam hw_param; + size_t size; + char *buf, var_buf[32]; + int rc; + unsigned char mac_addr[6]; + + rc = read_file_2("/dev/eeprom0", + &size, + (void *)&buf, + sizeof(hw_param)); + if (rc && rc != -EFBIG) + return rc; + + memcpy(&hw_param, buf, sizeof(hw_param)); + + free(buf); + + if (hw_param.Magic == 0xDEADBEEF) { + /* setup MAC1 */ + mac_addr[0] = hw_param.MAC1[0]; + mac_addr[1] = hw_param.MAC1[1]; + mac_addr[2] = hw_param.MAC1[2]; + mac_addr[3] = hw_param.MAC1[3]; + mac_addr[4] = hw_param.MAC1[4]; + mac_addr[5] = hw_param.MAC1[5]; + + eth_register_ethaddr(0, mac_addr); + + /* setup MAC2 */ + mac_addr[0] = hw_param.MAC2[0]; + mac_addr[1] = hw_param.MAC2[1]; + mac_addr[2] = hw_param.MAC2[2]; + mac_addr[3] = hw_param.MAC2[3]; + mac_addr[4] = hw_param.MAC2[4]; + mac_addr[5] = hw_param.MAC2[5]; + + eth_register_ethaddr(1, mac_addr); + } else { + printf("Baltos: incorrect magic number (0x%x) " + "in EEPROM\n", + hw_param.Magic); + + hw_param.SystemId = 0; + } + + sprintf(var_buf, "%d", hw_param.SystemId); + globalvar_add_simple("board.id", var_buf); + + return 0; +} +environment_initcall(baltos_read_eeprom); + +static int baltos_devices_init(void) +{ + if (!of_machine_is_compatible("vscom,onrisc")) + return 0; + + globalvar_add_simple("board.variant", "baltos"); + + if (bootsource_get() == BOOTSOURCE_MMC) + omap_set_bootmmc_devname("mmc0"); + + omap_set_barebox_part(&baltos_barebox_part); + + if (IS_ENABLED(CONFIG_SHELL_NONE)) + return am33xx_of_register_bootdevice(); + + return 0; +} +coredevice_initcall(baltos_devices_init); diff --git a/arch/arm/boards/vscom-baltos/lowlevel.c b/arch/arm/boards/vscom-baltos/lowlevel.c new file mode 100644 index 0000000000..8bce91a938 --- /dev/null +++ b/arch/arm/boards/vscom-baltos/lowlevel.c @@ -0,0 +1,134 @@ +#include <common.h> +#include <init.h> +#include <linux/sizes.h> +#include <io.h> +#include <linux/string.h> +#include <debug_ll.h> +#include <asm/barebox-arm-head.h> +#include <asm/barebox-arm.h> +#include <mach/am33xx-silicon.h> +#include <mach/am33xx-clock.h> +#include <mach/generic.h> +#include <mach/sdrc.h> +#include <mach/sys_info.h> +#include <mach/syslib.h> +#include <mach/am33xx-mux.h> +#include <mach/am33xx-generic.h> +#include <mach/wdt.h> + +static const struct am33xx_ddr_data ddr3_data = { + .rd_slave_ratio0 = 0x38, + .wr_dqs_slave_ratio0 = 0x44, + .fifo_we_slave_ratio0 = 0x94, + .wr_slave_ratio0 = 0x7D, + .use_rank0_delay = 0x01, + .dll_lock_diff0 = 0x0, +}; + +static const struct am33xx_cmd_control ddr3_cmd_ctrl = { + .slave_ratio0 = 0x80, + .dll_lock_diff0 = 0x1, + .invert_clkout0 = 0x0, + .slave_ratio1 = 0x80, + .dll_lock_diff1 = 0x1, + .invert_clkout1 = 0x0, + .slave_ratio2 = 0x80, + .dll_lock_diff2 = 0x1, + .invert_clkout2 = 0x0, +}; + +static const struct am33xx_emif_regs ddr3_regs = { + .emif_read_latency = 0x100007, + .emif_tim1 = 0x0AAAD4DB, + .emif_tim2 = 0x266B7FDA, + .emif_tim3 = 0x501F867F, + .zq_config = 0x50074BE4, + .sdram_config = 0x61C05332, + .sdram_config2 = 0x0, + .sdram_ref_ctrl = 0xC30, +}; + +static const struct am33xx_ddr_data ddr3_data_256mb = { + .rd_slave_ratio0 = 0x36, + .wr_dqs_slave_ratio0 = 0x38, + .fifo_we_slave_ratio0 = 0x99, + .wr_slave_ratio0 = 0x73, +}; + +static const struct am33xx_emif_regs ddr3_regs_256mb = { + .emif_read_latency = 0x7, + .emif_tim1 = 0x0AAAD4DB, + .emif_tim2 = 0x26437FDA, + .emif_tim3 = 0x501F83FF, + .sdram_config = 0x61C052B2, + .zq_config = 0x50074BE4, + .sdram_ref_ctrl = 0x00000C30, + +}; + +extern char __dtb_am335x_baltos_minimal_start[]; + +/** + * @brief The basic entry point for board initialization. + * + * This is called as part of machine init (after arch init). + * This is again called with stack in SRAM, so not too many + * constructs possible here. + * + * @return void + */ +static noinline int baltos_sram_init(void) +{ + uint32_t sdram_size; + void *fdt; + + fdt = __dtb_am335x_baltos_minimal_start; + + /* WDT1 is already running when the bootloader gets control + * Disable it to avoid "random" resets + */ + __raw_writel(WDT_DISABLE_CODE1, AM33XX_WDT_REG(WSPR)); + while (__raw_readl(AM33XX_WDT_REG(WWPS)) != 0x0); + __raw_writel(WDT_DISABLE_CODE2, AM33XX_WDT_REG(WSPR)); + while (__raw_readl(AM33XX_WDT_REG(WWPS)) != 0x0); + + /* Setup the PLLs and the clocks for the peripherals */ + am33xx_pll_init(MPUPLL_M_500, DDRPLL_M_400); + am335x_sdram_init(0x18B, &ddr3_cmd_ctrl, &ddr3_regs, &ddr3_data); + sdram_size = get_ram_size((void *)0x80000000, (1024 << 20)); + if (sdram_size == SZ_256M) + am335x_sdram_init(0x18B, &ddr3_cmd_ctrl, &ddr3_regs_256mb, + &ddr3_data_256mb); + + am33xx_uart_soft_reset((void *)AM33XX_UART0_BASE); + am33xx_enable_uart0_pin_mux(); + omap_uart_lowlevel_init((void *)AM33XX_UART0_BASE); + putc_ll('>'); + + am335x_barebox_entry(fdt); +} + +ENTRY_FUNCTION(start_am33xx_baltos_sram, bootinfo, r1, r2) +{ + am33xx_save_bootinfo((void *)bootinfo); + + /* + * Setup C environment, the board init code uses global variables. + * Stackpointer has already been initialized by the ROM code. + */ + relocate_to_current_adr(); + setup_c(); + + baltos_sram_init(); +} + +ENTRY_FUNCTION(start_am33xx_baltos_sdram, r0, r1, r2) +{ + void *fdt; + + fdt = __dtb_am335x_baltos_minimal_start; + + fdt -= get_runtime_offset(); + + am335x_barebox_entry(fdt); +} diff --git a/arch/arm/configs/animeo_ip_defconfig b/arch/arm/configs/animeo_ip_defconfig index d4fbfefd00..0f2e3a07aa 100644 --- a/arch/arm/configs/animeo_ip_defconfig +++ b/arch/arm/configs/animeo_ip_defconfig @@ -17,7 +17,6 @@ CONFIG_HUSH_FANCY_PROMPT=y CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/animeo_ip/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/at91rm9200ek_defconfig b/arch/arm/configs/at91rm9200ek_defconfig index cca69b8d4e..c82fe09ac9 100644 --- a/arch/arm/configs/at91rm9200ek_defconfig +++ b/arch/arm/configs/at91rm9200ek_defconfig @@ -13,7 +13,6 @@ CONFIG_MENU=y # CONFIG_CONSOLE_ACTIVATE_FIRST is not set CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/at91rm9200ek/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/at91sam9260ek_defconfig b/arch/arm/configs/at91sam9260ek_defconfig index 5190b19493..10a735d565 100644 --- a/arch/arm/configs/at91sam9260ek_defconfig +++ b/arch/arm/configs/at91sam9260ek_defconfig @@ -17,7 +17,6 @@ CONFIG_AUTO_COMPLETE=y # CONFIG_CONSOLE_ACTIVATE_FIRST is not set CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/at91sam9260ek/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/at91sam9261ek_defconfig b/arch/arm/configs/at91sam9261ek_defconfig index 2febff07d9..ad262e913e 100644 --- a/arch/arm/configs/at91sam9261ek_defconfig +++ b/arch/arm/configs/at91sam9261ek_defconfig @@ -17,7 +17,6 @@ CONFIG_MENU=y # CONFIG_CONSOLE_ACTIVATE_FIRST is not set CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/at91sam9261ek/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/at91sam9261ek_first_stage_defconfig b/arch/arm/configs/at91sam9261ek_first_stage_defconfig index 36b2dad07c..e3b6e5fdd3 100644 --- a/arch/arm/configs/at91sam9261ek_first_stage_defconfig +++ b/arch/arm/configs/at91sam9261ek_first_stage_defconfig @@ -18,7 +18,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/at91sam9261ek/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/at91sam9263ek_defconfig b/arch/arm/configs/at91sam9263ek_defconfig index 5154c78360..5f98cd694e 100644 --- a/arch/arm/configs/at91sam9263ek_defconfig +++ b/arch/arm/configs/at91sam9263ek_defconfig @@ -15,7 +15,6 @@ CONFIG_AUTO_COMPLETE=y # CONFIG_CONSOLE_ACTIVATE_FIRST is not set CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/at91sam9263ek/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/at91sam9g10ek_defconfig b/arch/arm/configs/at91sam9g10ek_defconfig index 1c913c04ab..40b4b9accb 100644 --- a/arch/arm/configs/at91sam9g10ek_defconfig +++ b/arch/arm/configs/at91sam9g10ek_defconfig @@ -17,7 +17,6 @@ CONFIG_MENU=y # CONFIG_CONSOLE_ACTIVATE_FIRST is not set CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/at91sam9261ek/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/at91sam9g20ek_defconfig b/arch/arm/configs/at91sam9g20ek_defconfig index 2f2232825c..a501ec53d7 100644 --- a/arch/arm/configs/at91sam9g20ek_defconfig +++ b/arch/arm/configs/at91sam9g20ek_defconfig @@ -17,7 +17,6 @@ CONFIG_AUTO_COMPLETE=y # CONFIG_CONSOLE_ACTIVATE_FIRST is not set CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/at91sam9260ek/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/at91sam9m10g45ek_defconfig b/arch/arm/configs/at91sam9m10g45ek_defconfig index 1ba7a9c72b..39850723c3 100644 --- a/arch/arm/configs/at91sam9m10g45ek_defconfig +++ b/arch/arm/configs/at91sam9m10g45ek_defconfig @@ -18,7 +18,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_PASSWD_SUM_SHA1=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/at91sam9m10g45ek/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/at91sam9n12ek_defconfig b/arch/arm/configs/at91sam9n12ek_defconfig index 8d1216ed7a..e73e383182 100644 --- a/arch/arm/configs/at91sam9n12ek_defconfig +++ b/arch/arm/configs/at91sam9n12ek_defconfig @@ -18,7 +18,6 @@ CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/at91sam9n12ek/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/at91sam9x5ek_defconfig b/arch/arm/configs/at91sam9x5ek_defconfig index 22ad72f969..1af5ec6294 100644 --- a/arch/arm/configs/at91sam9x5ek_defconfig +++ b/arch/arm/configs/at91sam9x5ek_defconfig @@ -18,7 +18,6 @@ CONFIG_AUTO_COMPLETE=y # CONFIG_CONSOLE_ACTIVATE_FIRST is not set CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/at91sam9x5ek/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/cupid_defconfig b/arch/arm/configs/cupid_defconfig index 4b9055627f..a1776d2d56 100644 --- a/arch/arm/configs/cupid_defconfig +++ b/arch/arm/configs/cupid_defconfig @@ -18,7 +18,6 @@ CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/guf-cupid/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/eukrea_cpuimx25_defconfig b/arch/arm/configs/eukrea_cpuimx25_defconfig index 0080dcfbe3..feebb13fb4 100644 --- a/arch/arm/configs/eukrea_cpuimx25_defconfig +++ b/arch/arm/configs/eukrea_cpuimx25_defconfig @@ -19,7 +19,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_COMPRESSION_LZO=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/eukrea_cpuimx25/env" CONFIG_LONGHELP=y CONFIG_CMD_IOMEM=y CONFIG_CMD_MEMINFO=y diff --git a/arch/arm/configs/eukrea_cpuimx35_defconfig b/arch/arm/configs/eukrea_cpuimx35_defconfig index 588253002d..edc5b9c21f 100644 --- a/arch/arm/configs/eukrea_cpuimx35_defconfig +++ b/arch/arm/configs/eukrea_cpuimx35_defconfig @@ -19,7 +19,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_COMPRESSION_LZO=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/eukrea_cpuimx35/env" CONFIG_LONGHELP=y CONFIG_CMD_IOMEM=y CONFIG_CMD_IMD=y diff --git a/arch/arm/configs/eukrea_cpuimx51_defconfig b/arch/arm/configs/eukrea_cpuimx51_defconfig index 8e8fd94fb2..e1b011ba89 100644 --- a/arch/arm/configs/eukrea_cpuimx51_defconfig +++ b/arch/arm/configs/eukrea_cpuimx51_defconfig @@ -14,7 +14,6 @@ CONFIG_HUSH_FANCY_PROMPT=y CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/eukrea_cpuimx51/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/freescale-mx25-3ds_defconfig b/arch/arm/configs/freescale-mx25-3ds_defconfig index 8d2a200d06..1fd8be2783 100644 --- a/arch/arm/configs/freescale-mx25-3ds_defconfig +++ b/arch/arm/configs/freescale-mx25-3ds_defconfig @@ -17,7 +17,6 @@ CONFIG_AUTO_COMPLETE=y # CONFIG_ERRNO_MESSAGES is not set CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/freescale-mx25-3ds/env/" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/freescale-mx35-3ds_defconfig b/arch/arm/configs/freescale-mx35-3ds_defconfig index f45750fc81..816dc7872b 100644 --- a/arch/arm/configs/freescale-mx35-3ds_defconfig +++ b/arch/arm/configs/freescale-mx35-3ds_defconfig @@ -15,7 +15,6 @@ CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/freescale-mx35-3ds/env/" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/freescale-mx53-smd_defconfig b/arch/arm/configs/freescale-mx53-smd_defconfig index b055dc807f..c7f2191a0d 100644 --- a/arch/arm/configs/freescale-mx53-smd_defconfig +++ b/arch/arm/configs/freescale-mx53-smd_defconfig @@ -17,7 +17,6 @@ CONFIG_HUSH_FANCY_PROMPT=y CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/freescale-mx53-smd/env/" CONFIG_DEBUG_INFO=y CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y diff --git a/arch/arm/configs/friendlyarm_mini6410_defconfig b/arch/arm/configs/friendlyarm_mini6410_defconfig index 7d216333df..1789374452 100644 --- a/arch/arm/configs/friendlyarm_mini6410_defconfig +++ b/arch/arm/configs/friendlyarm_mini6410_defconfig @@ -10,7 +10,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_PARTITION=y CONFIG_PARTITION_DISK=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/friendlyarm-mini6410/env" CONFIG_DEBUG_INFO=y CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y diff --git a/arch/arm/configs/friendlyarm_tiny6410_defconfig b/arch/arm/configs/friendlyarm_tiny6410_defconfig index 3342cf8ed3..90208c3762 100644 --- a/arch/arm/configs/friendlyarm_tiny6410_defconfig +++ b/arch/arm/configs/friendlyarm_tiny6410_defconfig @@ -11,7 +11,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_PARTITION=y CONFIG_PARTITION_DISK=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/friendlyarm-tiny6410/env" CONFIG_DEBUG_INFO=y CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y diff --git a/arch/arm/configs/haba_knx_lite_defconfig b/arch/arm/configs/haba_knx_lite_defconfig index d33d440b09..d01c412388 100644 --- a/arch/arm/configs/haba_knx_lite_defconfig +++ b/arch/arm/configs/haba_knx_lite_defconfig @@ -17,7 +17,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/haba-knx/env" # CONFIG_CMD_ARM_CPUINFO is not set CONFIG_LONGHELP=y CONFIG_CMD_MEMINFO=y diff --git a/arch/arm/configs/highbank_defconfig b/arch/arm/configs/highbank_defconfig index 3e3619d4e3..01b17bc3d8 100644 --- a/arch/arm/configs/highbank_defconfig +++ b/arch/arm/configs/highbank_defconfig @@ -13,7 +13,6 @@ CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/highbank/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/imx_v7_defconfig b/arch/arm/configs/imx_v7_defconfig index e3a8f478d2..51cbf60afd 100644 --- a/arch/arm/configs/imx_v7_defconfig +++ b/arch/arm/configs/imx_v7_defconfig @@ -3,8 +3,10 @@ CONFIG_IMX_MULTI_BOARDS=y CONFIG_MACH_EFIKA_MX_SMARTBOOK=y CONFIG_MACH_EMBEDSKY_E9=y CONFIG_MACH_FREESCALE_MX51_PDK=y -CONFIG_MACH_FREESCALE_MX53_LOCO=y CONFIG_MACH_CCMX53=y +CONFIG_MACH_FREESCALE_MX53_LOCO=y +CONFIG_MACH_GUF_VINCELL=y +CONFIG_MACH_GUF_VINCELL_XLOAD=y CONFIG_MACH_TQMA53=y CONFIG_MACH_FREESCALE_MX53_VMX53=y CONFIG_MACH_PHYTEC_SOM_IMX6=y diff --git a/arch/arm/configs/neso_defconfig b/arch/arm/configs/neso_defconfig index 209396e9c9..30156632fd 100644 --- a/arch/arm/configs/neso_defconfig +++ b/arch/arm/configs/neso_defconfig @@ -17,7 +17,6 @@ CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/guf-neso/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/nhk8815_defconfig b/arch/arm/configs/nhk8815_defconfig index 02eddcc668..1526d79856 100644 --- a/arch/arm/configs/nhk8815_defconfig +++ b/arch/arm/configs/nhk8815_defconfig @@ -11,7 +11,6 @@ CONFIG_MENU=y CONFIG_PASSWD_SUM_SHA1=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/nhk8815/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/phytec-phycard-omap4_defconfig b/arch/arm/configs/phytec-phycard-omap4_defconfig index cd9310ebd7..d9c89bbdd3 100644 --- a/arch/arm/configs/phytec-phycard-omap4_defconfig +++ b/arch/arm/configs/phytec-phycard-omap4_defconfig @@ -17,7 +17,6 @@ CONFIG_AUTO_COMPLETE=y # CONFIG_TIMESTAMP is not set CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/phytec-phycard-omap4/env/" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/phytec-phycore-omap4460_defconfig b/arch/arm/configs/phytec-phycore-omap4460_defconfig index ce5d75df41..54d7722f59 100644 --- a/arch/arm/configs/phytec-phycore-omap4460_defconfig +++ b/arch/arm/configs/phytec-phycore-omap4460_defconfig @@ -16,7 +16,6 @@ CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y # CONFIG_TIMESTAMP is not set CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/phytec-phycore-omap4460/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/pm9261_defconfig b/arch/arm/configs/pm9261_defconfig index c3cecb2506..4455d9c31b 100644 --- a/arch/arm/configs/pm9261_defconfig +++ b/arch/arm/configs/pm9261_defconfig @@ -10,7 +10,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/pm9261/env/" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/pm9g45_defconfig b/arch/arm/configs/pm9g45_defconfig index a5b54ff32d..7bb3b9eccf 100644 --- a/arch/arm/configs/pm9g45_defconfig +++ b/arch/arm/configs/pm9g45_defconfig @@ -14,7 +14,6 @@ CONFIG_HUSH_FANCY_PROMPT=y CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/pm9g45/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SAVEENV=y CONFIG_CMD_EXPORT=y diff --git a/arch/arm/configs/qemu_virt64_defconfig b/arch/arm/configs/qemu_virt64_defconfig index ed5abef195..f8128aac08 100644 --- a/arch/arm/configs/qemu_virt64_defconfig +++ b/arch/arm/configs/qemu_virt64_defconfig @@ -14,7 +14,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/qemu-virt64/env" CONFIG_DEBUG_INFO=y CONFIG_LONGHELP=y CONFIG_CMD_MEMINFO=y diff --git a/arch/arm/configs/qil_a9260_128mib_defconfig b/arch/arm/configs/qil_a9260_128mib_defconfig index b92847f34d..7b6c352ec4 100644 --- a/arch/arm/configs/qil_a9260_128mib_defconfig +++ b/arch/arm/configs/qil_a9260_128mib_defconfig @@ -19,7 +19,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/qil-a926x/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/qil_a9260_defconfig b/arch/arm/configs/qil_a9260_defconfig index 72db60b444..6918abba33 100644 --- a/arch/arm/configs/qil_a9260_defconfig +++ b/arch/arm/configs/qil_a9260_defconfig @@ -18,7 +18,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/qil-a926x/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/qil_a9g20_128mib_defconfig b/arch/arm/configs/qil_a9g20_128mib_defconfig index 3e30a07a2e..7546a5b9eb 100644 --- a/arch/arm/configs/qil_a9g20_128mib_defconfig +++ b/arch/arm/configs/qil_a9g20_128mib_defconfig @@ -19,7 +19,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/qil-a926x/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/qil_a9g20_defconfig b/arch/arm/configs/qil_a9g20_defconfig index 6294692c4f..bf9e8bb81f 100644 --- a/arch/arm/configs/qil_a9g20_defconfig +++ b/arch/arm/configs/qil_a9g20_defconfig @@ -18,7 +18,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/qil-a926x/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/sama5d3_xplained_defconfig b/arch/arm/configs/sama5d3_xplained_defconfig index 156f0326e7..773223e04a 100644 --- a/arch/arm/configs/sama5d3_xplained_defconfig +++ b/arch/arm/configs/sama5d3_xplained_defconfig @@ -19,7 +19,6 @@ CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/sama5d3_xplained/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/sama5d3xek_defconfig b/arch/arm/configs/sama5d3xek_defconfig index 9e2d41e601..48535e5f61 100644 --- a/arch/arm/configs/sama5d3xek_defconfig +++ b/arch/arm/configs/sama5d3xek_defconfig @@ -18,7 +18,6 @@ CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/sama5d3xek/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/scb9328_defconfig b/arch/arm/configs/scb9328_defconfig index 09767aaecc..a707732614 100644 --- a/arch/arm/configs/scb9328_defconfig +++ b/arch/arm/configs/scb9328_defconfig @@ -12,7 +12,6 @@ CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/scb9328/env/" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/tny_a9260_defconfig b/arch/arm/configs/tny_a9260_defconfig index d9395fa7b3..f288387bbe 100644 --- a/arch/arm/configs/tny_a9260_defconfig +++ b/arch/arm/configs/tny_a9260_defconfig @@ -20,7 +20,6 @@ CONFIG_MENU=y # CONFIG_CONSOLE_ACTIVATE_FIRST is not set CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/tny-a926x/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/tny_a9263_defconfig b/arch/arm/configs/tny_a9263_defconfig index e250ab3440..cd955f73d2 100644 --- a/arch/arm/configs/tny_a9263_defconfig +++ b/arch/arm/configs/tny_a9263_defconfig @@ -20,7 +20,6 @@ CONFIG_MENU=y # CONFIG_CONSOLE_ACTIVATE_FIRST is not set CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/tny-a926x/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/tny_a9g20_defconfig b/arch/arm/configs/tny_a9g20_defconfig index 4a8da59450..dc3c13ae7f 100644 --- a/arch/arm/configs/tny_a9g20_defconfig +++ b/arch/arm/configs/tny_a9g20_defconfig @@ -20,7 +20,6 @@ CONFIG_MENU=y # CONFIG_CONSOLE_ACTIVATE_FIRST is not set CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/tny-a926x/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/usb_a9260_defconfig b/arch/arm/configs/usb_a9260_defconfig index a5785aaa1b..2a8d1a63c5 100644 --- a/arch/arm/configs/usb_a9260_defconfig +++ b/arch/arm/configs/usb_a9260_defconfig @@ -20,7 +20,6 @@ CONFIG_MENU=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/usb-a926x/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/usb_a9263_128mib_defconfig b/arch/arm/configs/usb_a9263_128mib_defconfig index f84743bd2f..c091a97053 100644 --- a/arch/arm/configs/usb_a9263_128mib_defconfig +++ b/arch/arm/configs/usb_a9263_128mib_defconfig @@ -21,7 +21,6 @@ CONFIG_MENU=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/usb-a926x/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/usb_a9263_defconfig b/arch/arm/configs/usb_a9263_defconfig index 41d82841ef..51234cd7d9 100644 --- a/arch/arm/configs/usb_a9263_defconfig +++ b/arch/arm/configs/usb_a9263_defconfig @@ -20,7 +20,6 @@ CONFIG_MENU=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/usb-a926x/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/usb_a9g20_128mib_defconfig b/arch/arm/configs/usb_a9g20_128mib_defconfig index d5e8e5e857..7890776ddb 100644 --- a/arch/arm/configs/usb_a9g20_128mib_defconfig +++ b/arch/arm/configs/usb_a9g20_128mib_defconfig @@ -21,7 +21,6 @@ CONFIG_MENU=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/usb-a926x/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/usb_a9g20_defconfig b/arch/arm/configs/usb_a9g20_defconfig index 6e59cf5cf2..0953aaf0a9 100644 --- a/arch/arm/configs/usb_a9g20_defconfig +++ b/arch/arm/configs/usb_a9g20_defconfig @@ -20,7 +20,6 @@ CONFIG_MENU=y CONFIG_CONSOLE_ACTIVATE_ALL=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/usb-a926x/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/vexpress_ca9_defconfig b/arch/arm/configs/vexpress_ca9_defconfig index c24c0ea03b..fb40567199 100644 --- a/arch/arm/configs/vexpress_ca9_defconfig +++ b/arch/arm/configs/vexpress_ca9_defconfig @@ -13,7 +13,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/vexpress/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/vexpress_defconfig b/arch/arm/configs/vexpress_defconfig index 241889b3b2..9e74bb4450 100644 --- a/arch/arm/configs/vexpress_defconfig +++ b/arch/arm/configs/vexpress_defconfig @@ -12,7 +12,6 @@ CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y CONFIG_PARTITION=y CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y -CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/vexpress/env" CONFIG_CMD_EDIT=y CONFIG_CMD_SLEEP=y CONFIG_CMD_SAVEENV=y diff --git a/arch/arm/configs/vincell_defconfig b/arch/arm/configs/vincell_defconfig index 83862dea0d..81bfbede3b 100644 --- a/arch/arm/configs/vincell_defconfig +++ b/arch/arm/configs/vincell_defconfig @@ -104,7 +104,6 @@ CONFIG_USB_EHCI=y CONFIG_USB_ULPI=y CONFIG_USB_STORAGE=y CONFIG_MCI=y -CONFIG_MCI_MMC_BOOT_PARTITIONS=y CONFIG_MCI_IMX_ESDHC=y CONFIG_STATE_DRV=y CONFIG_EEPROM_AT25=y @@ -112,5 +111,4 @@ CONFIG_EEPROM_AT24=y CONFIG_WATCHDOG=y CONFIG_WATCHDOG_IMX=y CONFIG_FS_TFTP=y -CONFIG_FS_UBIFS=y -CONFIG_FS_UBIFS_COMPRESSION_LZO=y +CONFIG_LZO_DECOMPRESS=y diff --git a/arch/arm/cpu/Kconfig b/arch/arm/cpu/Kconfig index 450a6d593a..e45e05bdb1 100644 --- a/arch/arm/cpu/Kconfig +++ b/arch/arm/cpu/Kconfig @@ -5,6 +5,8 @@ config PHYS_ADDR_T_64BIT config CPU_32 bool + select HAS_MODULES + select HAS_DMA config CPU_64 bool @@ -80,6 +82,7 @@ config CPU_V8 bool select CPU_64v8 select CPU_SUPPORTS_64BIT_KERNEL + select ARM_EXCEPTIONS config CPU_XSC3 bool diff --git a/arch/arm/cpu/Makefile b/arch/arm/cpu/Makefile index 331c1cd8bc..d8cb1871a6 100644 --- a/arch/arm/cpu/Makefile +++ b/arch/arm/cpu/Makefile @@ -16,8 +16,10 @@ obj-y += start.o entry.o ifeq ($(CONFIG_CPU_64v8), y) obj-y += setupc_64.o +pbl-y += setupc_64.o else obj-y += setupc.o +pbl-y += setupc.o endif # @@ -48,7 +50,7 @@ obj-$(CONFIG_CPU_64v8) += cache-armv8.o AFLAGS_pbl-cache-armv8.o :=-Wa,-march=armv8-a pbl-$(CONFIG_CPU_64v8) += cache-armv8.o -pbl-y += setupc.o entry.o +pbl-y += entry.o pbl-$(CONFIG_PBL_SINGLE_IMAGE) += start-pbl.o pbl-$(CONFIG_PBL_MULTI_IMAGES) += uncompress.o diff --git a/arch/arm/cpu/start-pbl.c b/arch/arm/cpu/start-pbl.c index f723edc613..5f1469bb3e 100644 --- a/arch/arm/cpu/start-pbl.c +++ b/arch/arm/cpu/start-pbl.c @@ -28,6 +28,7 @@ #include <asm/sections.h> #include <asm/pgtable.h> #include <asm/cache.h> +#include <asm/unaligned.h> #include "mmu-early.h" @@ -49,7 +50,7 @@ __noreturn void barebox_single_pbl_start(unsigned long membase, unsigned long memsize, void *boarddata) { uint32_t offset; - uint32_t pg_start, pg_end, pg_len; + uint32_t pg_start, pg_end, pg_len, uncompressed_len; void __noreturn (*barebox)(unsigned long, unsigned long, void *); uint32_t endmem = membase + memsize; unsigned long barebox_base; @@ -63,9 +64,10 @@ __noreturn void barebox_single_pbl_start(unsigned long membase, pg_start = (uint32_t)&input_data - offset; pg_end = (uint32_t)&input_data_end - offset; pg_len = pg_end - pg_start; + uncompressed_len = get_unaligned((const u32 *)(pg_start + pg_len - 4)); if (IS_ENABLED(CONFIG_RELOCATABLE)) - barebox_base = arm_mem_barebox_image(membase, endmem, pg_len); + barebox_base = arm_mem_barebox_image(membase, endmem, uncompressed_len + MAX_BSS_SIZE); else barebox_base = TEXT_BASE; diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c index f25e5928cb..0120117e01 100644 --- a/arch/arm/cpu/start.c +++ b/arch/arm/cpu/start.c @@ -143,8 +143,7 @@ __noreturn void barebox_non_pbl_start(unsigned long membase, { unsigned long endmem = membase + memsize; unsigned long malloc_start, malloc_end; - unsigned long barebox_size = barebox_image_size + - ((unsigned long)&__bss_stop - (unsigned long)&__bss_start); + unsigned long barebox_size = barebox_image_size + MAX_BSS_SIZE; if (IS_ENABLED(CONFIG_RELOCATABLE)) { unsigned long barebox_base = arm_mem_barebox_image(membase, diff --git a/arch/arm/cpu/uncompress.c b/arch/arm/cpu/uncompress.c index b8e2e9ffd7..eeb5a65439 100644 --- a/arch/arm/cpu/uncompress.c +++ b/arch/arm/cpu/uncompress.c @@ -29,6 +29,7 @@ #include <asm/sections.h> #include <asm/pgtable.h> #include <asm/cache.h> +#include <asm/unaligned.h> #include <debug_ll.h> @@ -44,7 +45,7 @@ static int __attribute__((__used__)) void __noreturn barebox_multi_pbl_start(unsigned long membase, unsigned long memsize, void *boarddata) { - uint32_t pg_len; + uint32_t pg_len, uncompressed_len; void __noreturn (*barebox)(unsigned long, unsigned long, void *); uint32_t endmem = membase + memsize; unsigned long barebox_base; @@ -72,10 +73,11 @@ void __noreturn barebox_multi_pbl_start(unsigned long membase, */ pg_start = image_end + 1; pg_len = *(image_end); + uncompressed_len = get_unaligned((const u32 *)(pg_start + pg_len - 4)); if (IS_ENABLED(CONFIG_RELOCATABLE)) barebox_base = arm_mem_barebox_image(membase, endmem, - pg_len); + uncompressed_len + MAX_BSS_SIZE); else barebox_base = TEXT_BASE; @@ -92,8 +94,8 @@ void __noreturn barebox_multi_pbl_start(unsigned long membase, free_mem_ptr = arm_mem_early_malloc(membase, endmem); free_mem_end_ptr = arm_mem_early_malloc_end(membase, endmem); - pr_debug("uncompressing barebox binary at 0x%p (size 0x%08x) to 0x%08lx\n", - pg_start, pg_len, barebox_base); + pr_debug("uncompressing barebox binary at 0x%p (size 0x%08x) to 0x%08lx (uncompressed size: 0x%08x)\n", + pg_start, pg_len, barebox_base, uncompressed_len); pbl_barebox_uncompress((void*)barebox_base, pg_start, pg_len); diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 77f20d60d9..671888e7e4 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -77,5 +77,6 @@ pbl-dtb-$(CONFIG_MACH_TX6X) += imx6q-tx6q.dtb.o pbl-dtb-$(CONFIG_MACH_UDOO) += imx6q-udoo.dtb.o pbl-dtb-$(CONFIG_MACH_USI_TOPKICK) += kirkwood-topkick-bb.dtb.o pbl-dtb-$(CONFIG_MACH_VARISCITE_MX6) += imx6q-var-custom.dtb.o +pbl-dtb-$(CONFIG_MACH_VSCOM_BALTOS) += am335x-baltos-minimal.dtb.o clean-files := *.dtb *.dtb.S .*.dtc .*.pre .*.dts *.dtb.lzo diff --git a/arch/arm/dts/am335x-baltos-minimal.dts b/arch/arm/dts/am335x-baltos-minimal.dts new file mode 100644 index 0000000000..13eb91c83e --- /dev/null +++ b/arch/arm/dts/am335x-baltos-minimal.dts @@ -0,0 +1,439 @@ +/* + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +/* + * VScom OnRISC + * http://www.vscom.de + */ + +/dts-v1/; + +#include "am33xx.dtsi" +#include <dt-bindings/pwm/pwm.h> + +/ { + model = "OnRISC Baltos"; + compatible = "vscom,onrisc", "ti,am33xx"; + + chosen { + linux,stdout-path = &uart0; + }; + + cpus { + cpu@0 { + cpu0-supply = <&vdd1_reg>; + }; + }; + + vbat: fixedregulator@0 { + compatible = "regulator-fixed"; + regulator-name = "vbat"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-boot-on; + }; +}; + +&am33xx_pinmux { + mmc1_pins: pinmux_mmc1_pins { + pinctrl-single,pins = < + 0xf0 (MUX_MODE0 | INPUT_EN | PULL_UP) /* mmc0_dat3.mmc0_dat3 */ + 0xf4 (MUX_MODE0 | INPUT_EN | PULL_UP) /* mmc0_dat2.mmc0_dat2 */ + 0xf8 (MUX_MODE0 | INPUT_EN | PULL_UP) /* mmc0_dat1.mmc0_dat1 */ + 0xfc (MUX_MODE0 | INPUT_EN | PULL_UP) /* mmc0_dat0.mmc0_dat0 */ + 0x100 (MUX_MODE0 | INPUT_EN | PULL_UP) /* mmc0_clk.mmc0_clk */ + 0x104 (MUX_MODE0 | INPUT_EN | PULL_UP) /* mmc0_cmd.mmc0_cmd */ + >; + }; + + i2c1_pins: pinmux_i2c1_pins { + pinctrl-single,pins = < + 0x158 0x2a /* spi0_d1.i2c1_sda_mux3, INPUT | MODE2 */ + 0x15c 0x2a /* spi0_cs0.i2c1_scl_mux3, INPUT | MODE2 */ + >; + }; + + tps65910_pins: pinmux_tps65910_pins { + pinctrl-single,pins = < + 0x078 (PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_ben1.gpio1[28] */ + >; + + }; + tca6416_pins: pinmux_tca6416_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x9b4, PIN_INPUT_PULLUP | MUX_MODE7) /* xdma_event_intr1.gpio0[20] tca6416 stuff */ + >; + }; + + uart0_pins: pinmux_uart0_pins { + pinctrl-single,pins = < + 0x170 (PIN_INPUT_PULLUP | MUX_MODE0) /* uart0_rxd.uart0_rxd */ + 0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */ + >; + }; + + cpsw_default: cpsw_default { + pinctrl-single,pins = < + /* Slave 1 */ + 0x10c (PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_crs.rmii1_crs_dv */ + 0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_tx_en.rmii1_txen */ + 0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd1.rmii1_txd1 */ + 0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd0.rmii1_txd0 */ + 0x13c (PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_rxd1.rmii1_rxd1 */ + 0x140 (PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_rxd0.rmii1_rxd0 */ + 0x144 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii1_ref_clk.rmii1_refclk */ + + + /* Slave 2 */ + 0x40 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a0.rgmii2_tctl */ + 0x44 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a1.rgmii2_rctl */ + 0x48 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a2.rgmii2_td3 */ + 0x4c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a3.rgmii2_td2 */ + 0x50 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a4.rgmii2_td1 */ + 0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a5.rgmii2_td0 */ + 0x58 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a6.rgmii2_tclk */ + 0x5c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a7.rgmii2_rclk */ + 0x60 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a8.rgmii2_rd3 */ + 0x64 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a9.rgmii2_rd2 */ + 0x68 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a10.rgmii2_rd1 */ + 0x6c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a11.rgmii2_rd0 */ + >; + }; + + cpsw_sleep: cpsw_sleep { + pinctrl-single,pins = < + /* Slave 1 reset value */ + 0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7) + + /* Slave 2 reset value*/ + 0x40 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x44 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x48 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x4c (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x50 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x54 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x58 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x5c (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x60 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x64 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x68 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x6c (PIN_INPUT_PULLDOWN | MUX_MODE7) + >; + }; + + davinci_mdio_default: davinci_mdio_default { + pinctrl-single,pins = < + /* MDIO */ + 0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */ + 0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */ + >; + }; + + davinci_mdio_sleep: davinci_mdio_sleep { + pinctrl-single,pins = < + /* MDIO reset value */ + 0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7) + 0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7) + >; + }; + + nandflash_pins_s0: nandflash_pins_s0 { + pinctrl-single,pins = < + 0x0 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad0.gpmc_ad0 */ + 0x4 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad1.gpmc_ad1 */ + 0x8 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad2.gpmc_ad2 */ + 0xc (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad3.gpmc_ad3 */ + 0x10 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad4.gpmc_ad4 */ + 0x14 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad5.gpmc_ad5 */ + 0x18 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad6.gpmc_ad6 */ + 0x1c (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad7.gpmc_ad7 */ + 0x70 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_wait0.gpmc_wait0 */ + 0x74 (PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_wpn.gpio0_30 */ + 0x7c (PIN_OUTPUT | MUX_MODE0) /* gpmc_csn0.gpmc_csn0 */ + 0x90 (PIN_OUTPUT | MUX_MODE0) /* gpmc_advn_ale.gpmc_advn_ale */ + 0x94 (PIN_OUTPUT | MUX_MODE0) /* gpmc_oen_ren.gpmc_oen_ren */ + 0x98 (PIN_OUTPUT | MUX_MODE0) /* gpmc_wen.gpmc_wen */ + 0x9c (PIN_OUTPUT | MUX_MODE0) /* gpmc_be0n_cle.gpmc_be0n_cle */ + >; + }; +}; + +&elm { + status = "okay"; +}; + +&gpmc { + pinctrl-names = "default"; + pinctrl-0 = <&nandflash_pins_s0>; + ranges = <0 0 0x08000000 0x10000000>; /* CS0: NAND */ + status = "okay"; + + nand@0,0 { + reg = <0 0 0>; /* CS0, offset 0 */ + nand-bus-width = <8>; + ti,nand-ecc-opt = "bch8"; + ti,nand-xfer-type = "polled"; + + gpmc,device-nand = "true"; + gpmc,device-width = <1>; + gpmc,sync-clk-ps = <0>; + gpmc,cs-on-ns = <0>; + gpmc,cs-rd-off-ns = <44>; + gpmc,cs-wr-off-ns = <44>; + gpmc,adv-on-ns = <6>; + gpmc,adv-rd-off-ns = <34>; + gpmc,adv-wr-off-ns = <44>; + gpmc,we-on-ns = <0>; + gpmc,we-off-ns = <40>; + gpmc,oe-on-ns = <0>; + gpmc,oe-off-ns = <54>; + gpmc,access-ns = <64>; + gpmc,rd-cycle-ns = <82>; + gpmc,wr-cycle-ns = <82>; + gpmc,wait-on-read = "true"; + gpmc,wait-on-write = "true"; + gpmc,bus-turnaround-ns = <0>; + gpmc,cycle2cycle-delay-ns = <0>; + gpmc,clk-activation-ns = <0>; + gpmc,wait-monitoring-ns = <0>; + gpmc,wr-access-ns = <40>; + gpmc,wr-data-mux-bus-ns = <0>; + + #address-cells = <1>; + #size-cells = <1>; + elm_id = <&elm>; + + boot@0 { + label = "SPL"; + reg = <0x0 0x20000>; + }; + boot@20000{ + label = "SPL.backup1"; + reg = <0x20000 0x20000>; + }; + boot@40000 { + label = "SPL.backup2"; + reg = <0x40000 0x20000>; + }; + boot@60000 { + label = "SPL.backup3"; + reg = <0x60000 0x20000>; + }; + boot@80000 { + label = "u-boot"; + reg = <0x80000 0x1e0000>; + }; + boot@260000 { + label = "UBI"; + reg = <0x260000 0xfda0000>; + }; + }; +}; + +&uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins>; + + status = "okay"; +}; + +&i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; + + status = "okay"; + clock-frequency = <1000>; + + tps: tps@2d { + reg = <0x2d>; + gpio-controller; + #gpio-cells = <2>; + interrupt-parent = <&gpio1>; + interrupts = <28 GPIO_ACTIVE_LOW>; + pinctrl-names = "default"; + pinctrl-0 = <&tps65910_pins>; + }; + + at24@50 { + compatible = "at24,24c02"; + pagesize = <8>; + reg = <0x50>; + }; + + tca6416: gpio@20 { + compatible = "ti,tca6416"; + reg = <0x20>; + gpio-controller; + #gpio-cells = <2>; + interrupt-parent = <&gpio0>; + interrupts = <20 GPIO_ACTIVE_LOW>; + pinctrl-names = "default"; + pinctrl-0 = <&tca6416_pins>; + }; +}; + +&usb { + status = "okay"; +}; + +&usb_ctrl_mod { + status = "okay"; +}; + +&usb0_phy { + status = "okay"; +}; + +&usb1_phy { + status = "okay"; +}; + +&usb0 { + status = "okay"; + dr_mode = "host"; +}; + +&usb1 { + status = "okay"; + dr_mode = "host"; +}; + +&cppi41dma { + status = "okay"; +}; + +/include/ "tps65910.dtsi" + +&tps { + vcc1-supply = <&vbat>; + vcc2-supply = <&vbat>; + vcc3-supply = <&vbat>; + vcc4-supply = <&vbat>; + vcc5-supply = <&vbat>; + vcc6-supply = <&vbat>; + vcc7-supply = <&vbat>; + vccio-supply = <&vbat>; + + ti,en-ck32k-xtal = <1>; + + regulators { + vrtc_reg: regulator@0 { + regulator-always-on; + }; + + vio_reg: regulator@1 { + regulator-always-on; + }; + + vdd1_reg: regulator@2 { + /* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */ + regulator-name = "vdd_mpu"; + regulator-min-microvolt = <912500>; + regulator-max-microvolt = <1312500>; + regulator-boot-on; + regulator-always-on; + }; + + vdd2_reg: regulator@3 { + /* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */ + regulator-name = "vdd_core"; + regulator-min-microvolt = <912500>; + regulator-max-microvolt = <1150000>; + regulator-boot-on; + regulator-always-on; + }; + + vdd3_reg: regulator@4 { + regulator-always-on; + }; + + vdig1_reg: regulator@5 { + regulator-always-on; + }; + + vdig2_reg: regulator@6 { + regulator-always-on; + }; + + vpll_reg: regulator@7 { + regulator-always-on; + }; + + vdac_reg: regulator@8 { + regulator-always-on; + }; + + vaux1_reg: regulator@9 { + regulator-always-on; + }; + + vaux2_reg: regulator@10 { + regulator-always-on; + }; + + vaux33_reg: regulator@11 { + regulator-always-on; + }; + + vmmc_reg: regulator@12 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + }; +}; + +&mac { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&cpsw_default>; + pinctrl-1 = <&cpsw_sleep>; + dual_emac = <1>; + + status = "okay"; +}; + +&davinci_mdio { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&davinci_mdio_default>; + pinctrl-1 = <&davinci_mdio_sleep>; + + status = "okay"; +}; + +&cpsw_emac0 { + phy_id = <&davinci_mdio>, <0>; + phy-mode = "rmii"; + dual_emac_res_vlan = <1>; +}; + +&cpsw_emac1 { + phy_id = <&davinci_mdio>, <7>; + phy-mode = "rgmii-txid"; + dual_emac_res_vlan = <2>; +}; + +&phy_sel { + rmii-clock-ext = <1>; +}; + +&mmc1 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc1_pins>; + vmmc-supply = <&vmmc_reg>; + status = "okay"; +}; + +&gpio0 { + ti,no-reset-on-init; +}; diff --git a/arch/arm/dts/imx53-guf-vincell-lt.dts b/arch/arm/dts/imx53-guf-vincell-lt.dts index bcc378d07f..67a41332f5 100644 --- a/arch/arm/dts/imx53-guf-vincell-lt.dts +++ b/arch/arm/dts/imx53-guf-vincell-lt.dts @@ -136,6 +136,7 @@ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_fec>; phy-mode = "rmii"; + phy-reset-gpios = <&gpio7 6 GPIO_ACTIVE_HIGH>; status = "okay"; }; diff --git a/arch/arm/include/asm/barebox-arm.h b/arch/arm/include/asm/barebox-arm.h index 0acdfa3dbc..061296a476 100644 --- a/arch/arm/include/asm/barebox-arm.h +++ b/arch/arm/include/asm/barebox-arm.h @@ -164,6 +164,13 @@ static inline unsigned long arm_mem_barebox_image(unsigned long membase, static void __naked noinline __##name \ (uint32_t arg0, uint32_t arg1, uint32_t arg2) - +/* + * When using compressed images in conjunction with relocatable images + * the PBL code must pick a suitable place where to uncompress the barebox + * image. For doing this the PBL code must know the size of the final + * image including the BSS segment. The BSS size is unknown to the PBL + * code, so define a maximum BSS size here. + */ +#define MAX_BSS_SIZE SZ_1M #endif /* _BAREBOX_ARM_H_ */ diff --git a/arch/arm/include/asm/barebox.h b/arch/arm/include/asm/barebox.h index 31a8e15630..5a6622235b 100644 --- a/arch/arm/include/asm/barebox.h +++ b/arch/arm/include/asm/barebox.h @@ -2,8 +2,10 @@ #define _BAREBOX_H_ 1 #ifdef CONFIG_ARM_UNWIND +#ifndef CONFIG_CPU_V8 #define ARCH_HAS_STACK_DUMP #endif +#endif #ifdef CONFIG_ARM_EXCEPTIONS #define ARCH_HAS_DATA_ABORT_MASK diff --git a/arch/arm/lib64/Makefile b/arch/arm/lib64/Makefile index 87e26f6afa..4b7b7e3cc5 100644 --- a/arch/arm/lib64/Makefile +++ b/arch/arm/lib64/Makefile @@ -4,6 +4,4 @@ obj-$(CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS) += memcpy.o obj-$(CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS) += memset.o extra-y += barebox.lds -pbl-y += lib1funcs.o -pbl-y += ashldi3.o pbl-y += div0.o diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig index 4166fa5d07..c45fc4d6b8 100644 --- a/arch/arm/mach-at91/Kconfig +++ b/arch/arm/mach-at91/Kconfig @@ -255,7 +255,6 @@ config MACH_USB_A9260 config MACH_GE863 bool "Telit EVK-PRO3" - select HAVE_DEFAULT_ENVIRONMENT_NEW help Say y here if you are using Telit EVK-PRO3 with GE863-PRO3 <http://www.telit.com> @@ -494,13 +493,11 @@ choice config MACH_SAMA5D4EK bool "Atmel SAMA5D4 Evaluation Kit" - select HAVE_DEFAULT_ENVIRONMENT_NEW help Select this if you are using Atmel's SAMA5D4-EK Evaluation Kit. config MACH_SAMA5D4_XPLAINED bool "Atmel SAMA5D4 XPLAINED ULTRA Evaluation Kit" - select HAVE_DEFAULT_ENVIRONMENT_NEW help Select this if you are using Atmel's SAMA5D4_XPLAINED ULTRA Evaluation Kit. diff --git a/arch/arm/mach-clps711x/Kconfig b/arch/arm/mach-clps711x/Kconfig index 92dd51ac9b..0853ce2e62 100644 --- a/arch/arm/mach-clps711x/Kconfig +++ b/arch/arm/mach-clps711x/Kconfig @@ -5,7 +5,6 @@ choice config MACH_CLEP7212 bool "Cirrus Logic CLEP7212" - select HAVE_DEFAULT_ENVIRONMENT_NEW help Boards based on the Cirrus Logic 7212/7312 CPU. diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig index 3165d5086d..66d3d7a5f7 100644 --- a/arch/arm/mach-davinci/Kconfig +++ b/arch/arm/mach-davinci/Kconfig @@ -9,7 +9,6 @@ choice config MACH_VIRT2REAL bool "Virt2Real" - select HAVE_DEFAULT_ENVIRONMENT_NEW endchoice diff --git a/arch/arm/mach-highbank/Kconfig b/arch/arm/mach-highbank/Kconfig index 8af480861c..8a22348798 100644 --- a/arch/arm/mach-highbank/Kconfig +++ b/arch/arm/mach-highbank/Kconfig @@ -10,7 +10,6 @@ choice config MACH_HIGHBANK bool "Calxeda Highbank" select OFTREE - select HAVE_DEFAULT_ENVIRONMENT_NEW endchoice diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index a80bc6b986..f23af99c11 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -151,7 +151,6 @@ config ARCH_IMX6SX config IMX_MULTI_BOARDS bool "Allow multiple boards to be selected" - select HAVE_DEFAULT_ENVIRONMENT_NEW select HAVE_PBL_MULTI_IMAGES if IMX_MULTI_BOARDS @@ -166,7 +165,6 @@ config MACH_TX25 config MACH_PCA100 bool "phyCard-i.MX27" select ARCH_IMX27 - select HAVE_DEFAULT_ENVIRONMENT_NEW select ARCH_IMX_EXTERNAL_BOOT_NAND help Say Y here if you are using Phytec's phyCard-i.MX27 (pca100) equipped @@ -178,7 +176,6 @@ config MACH_PCM038 select SPI select DRIVER_SPI_IMX select MFD_MC13XXX - select HAVE_DEFAULT_ENVIRONMENT_NEW select ARCH_IMX_EXTERNAL_BOOT_NAND help Say Y here if you are using Phytec's phyCORE-i.MX27 (pcm038) equipped @@ -224,6 +221,15 @@ config MACH_GUF_VINCELL bool "Garz-Fricke Vincell" select ARCH_IMX53 +config MACH_GUF_VINCELL_XLOAD + depends on MACH_GUF_VINCELL + bool "Garz-Fricke Vincell NAND xload support" + help + The Vincell initializes SDRAM from board code. This normally limits + the image size to the size of the SoC internal SRAM. Enable this + option to be able to use bigger images when booting from NAND. Images + built with this option are no longer bootable from USB though. + config MACH_TQMA53 bool "TQ i.MX53 TQMa53" select ARCH_IMX53 @@ -272,7 +278,6 @@ config MACH_TX6X config MACH_SABRELITE bool "Freescale i.MX6 Sabre Lite" select ARCH_IMX6 - select HAVE_DEFAULT_ENVIRONMENT_NEW select HAVE_PBL_MULTI_IMAGES config MACH_SABRESD @@ -404,7 +409,6 @@ config MACH_PCM037 bool "phyCORE-i.MX31" select ARCH_IMX31 select USB_ULPI if USB - select HAVE_DEFAULT_ENVIRONMENT_NEW select ARCH_HAS_L2X0 help Say Y here if you are using Phytec's phyCORE-i.MX31 (pcm037) equipped @@ -414,7 +418,6 @@ config MACH_MX31MOBOARD bool "mx31moboard-i.MX31" select ARCH_IMX31 select USB_ULPI if USB - select HAVE_DEFAULT_ENVIRONMENT_NEW select ARCH_HAS_L2X0 help Say Y here if you are using EPFL mx31moboard board equipped @@ -447,7 +450,6 @@ config MACH_PCM043 bool "phyCORE-i.MX35" select ARCH_IMX35 select ARCH_HAS_L2X0 - select HAVE_DEFAULT_ENVIRONMENT_NEW help Say Y here if you are using Phytec's phyCORE-i.MX35 (pcm043) equipped with a Freescale i.MX35 Processor @@ -464,7 +466,6 @@ config MACH_KINDLE3 bool "Amazon Kindle3" select ARCH_IMX35 select ARCH_HAS_L2X0 - select HAVE_DEFAULT_ENVIRONMENT_NEW help Say Y here if you are using the Amazon Model No. D00901 Kindle @@ -515,7 +516,6 @@ config MACH_FREESCALE_MX53_SMD config MACH_TX53 bool "Ka-Ro TX53" select ARCH_IMX53 - select HAVE_DEFAULT_ENVIRONMENT_NEW help Say Y here if you are using the Ka-Ro tx53 board diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index 0763944895..a216c9bb07 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -25,4 +25,4 @@ obj-pbl-y += esdctl.o boot.o obj-$(CONFIG_BAREBOX_UPDATE) += imx-bbu-internal.o obj-$(CONFIG_BAREBOX_UPDATE_IMX_EXTERNAL_NAND) += imx-bbu-external-nand.o lwl-y += cpu_init.o -pbl-y += xload-spi.o xload-esdhc.o xload-common.o +pbl-y += xload-spi.o xload-esdhc.o xload-common.o xload-imx-nand.o diff --git a/arch/arm/mach-imx/boot.c b/arch/arm/mach-imx/boot.c index 376e370cf9..b66c29d8d9 100644 --- a/arch/arm/mach-imx/boot.c +++ b/arch/arm/mach-imx/boot.c @@ -20,7 +20,10 @@ #include <io.h> #include <mach/generic.h> #include <mach/imx25-regs.h> +#include <mach/imx27-regs.h> #include <mach/imx35-regs.h> +#include <mach/imx51-regs.h> +#include <mach/imx53-regs.h> #include <mach/imx6-regs.h> /* [CTRL][TYPE] */ @@ -75,8 +78,9 @@ static void imx25_35_boot_save_loc(unsigned int ctrl, unsigned int type) bootsource_set(src); } -void imx25_boot_save_loc(void __iomem *ccm_base) +void imx25_get_boot_source(enum bootsource *src, int *instance) { + void __iomem *ccm_base = IOMEM(MX25_CCM_BASE_ADDR); uint32_t val; val = readl(ccm_base + MX25_CCM_RCSR); @@ -84,8 +88,20 @@ void imx25_boot_save_loc(void __iomem *ccm_base) (val >> MX25_CCM_RCSR_MEM_TYPE_SHIFT) & 0x3); } -void imx35_boot_save_loc(void __iomem *ccm_base) +void imx25_boot_save_loc(void) { + enum bootsource src = BOOTSOURCE_UNKNOWN; + int instance = BOOTSOURCE_INSTANCE_UNKNOWN; + + imx25_get_boot_source(&src, &instance); + + bootsource_set(src); + bootsource_set_instance(instance); +} + +void imx35_get_boot_source(enum bootsource *src, int *instance) +{ + void __iomem *ccm_base = IOMEM(MX35_CCM_BASE_ADDR); uint32_t val; val = readl(ccm_base + MX35_CCM_RCSR); @@ -93,6 +109,17 @@ void imx35_boot_save_loc(void __iomem *ccm_base) (val >> MX35_CCM_RCSR_MEM_TYPE_SHIFT) & 0x3); } +void imx35_boot_save_loc(void) +{ + enum bootsource src = BOOTSOURCE_UNKNOWN; + int instance = BOOTSOURCE_INSTANCE_UNKNOWN; + + imx35_get_boot_source(&src, &instance); + + bootsource_set(src); + bootsource_set_instance(instance); +} + #define IMX27_SYSCTRL_GPCR 0x18 #define IMX27_GPCR_BOOT_SHIFT 16 #define IMX27_GPCR_BOOT_MASK (0xf << IMX27_GPCR_BOOT_SHIFT) @@ -104,9 +131,9 @@ void imx35_boot_save_loc(void __iomem *ccm_base) #define IMX27_GPCR_BOOT_32BIT_CS0 6 #define IMX27_GPCR_BOOT_8BIT_NAND_512 7 -void imx27_boot_save_loc(void __iomem *sysctrl_base) +void imx27_get_boot_source(enum bootsource *src, int *instance) { - enum bootsource src; + void __iomem *sysctrl_base = IOMEM(MX27_SYSCTRL_BASE_ADDR); uint32_t val; val = readl(sysctrl_base + IMX27_SYSCTRL_GPCR); @@ -115,20 +142,29 @@ void imx27_boot_save_loc(void __iomem *sysctrl_base) switch (val) { case IMX27_GPCR_BOOT_UART_USB: - src = BOOTSOURCE_SERIAL; + *src = BOOTSOURCE_SERIAL; break; case IMX27_GPCR_BOOT_8BIT_NAND_2k: case IMX27_GPCR_BOOT_16BIT_NAND_2k: case IMX27_GPCR_BOOT_16BIT_NAND_512: case IMX27_GPCR_BOOT_8BIT_NAND_512: - src = BOOTSOURCE_NAND; + *src = BOOTSOURCE_NAND; break; default: - src = BOOTSOURCE_NOR; + *src = BOOTSOURCE_NOR; break; } +} + +void imx27_boot_save_loc(void) +{ + enum bootsource src = BOOTSOURCE_UNKNOWN; + int instance = BOOTSOURCE_INSTANCE_UNKNOWN; + + imx27_get_boot_source(&src, &instance); bootsource_set(src); + bootsource_set_instance(instance); } #define IMX51_SRC_SBMR 0x4 @@ -136,9 +172,9 @@ void imx27_boot_save_loc(void __iomem *sysctrl_base) #define IMX51_SBMR_BT_MEM_CTL_SHIFT 0 #define IMX51_SBMR_BMOD_SHIFT 14 -void imx51_boot_save_loc(void __iomem *src_base) +void imx51_get_boot_source(enum bootsource *src, int *instance) { - enum bootsource src = BOOTSOURCE_UNKNOWN; + void __iomem *src_base = IOMEM(MX51_SRC_BASE_ADDR); uint32_t reg; unsigned int ctrl, type; @@ -151,62 +187,84 @@ void imx51_boot_save_loc(void __iomem *src_base) ctrl = (reg >> IMX51_SBMR_BT_MEM_CTL_SHIFT) & 0x3; type = (reg >> IMX51_SBMR_BT_MEM_TYPE_SHIFT) & 0x3; - src = locations[ctrl][type]; + *src = locations[ctrl][type]; break; case 1: /* reserved */ - src = BOOTSOURCE_UNKNOWN; + *src = BOOTSOURCE_UNKNOWN; break; case 3: - src = BOOTSOURCE_SERIAL; + *src = BOOTSOURCE_SERIAL; break; } +} + +void imx51_boot_save_loc(void) +{ + enum bootsource src = BOOTSOURCE_UNKNOWN; + int instance = BOOTSOURCE_INSTANCE_UNKNOWN; + + imx51_get_boot_source(&src, &instance); bootsource_set(src); + bootsource_set_instance(instance); } #define IMX53_SRC_SBMR 0x4 -void imx53_boot_save_loc(void __iomem *src_base) +void imx53_get_boot_source(enum bootsource *src, int *instance) { - enum bootsource src = BOOTSOURCE_UNKNOWN; - int instance; + void __iomem *src_base = IOMEM(MX53_SRC_BASE_ADDR); uint32_t cfg1 = readl(src_base + IMX53_SRC_SBMR); + if (((cfg1 >> 24) & 0x3) == 0x3) { + *src = BOOTSOURCE_USB; + *instance = 0; + return; + } + switch ((cfg1 & 0xff) >> 4) { case 2: - src = BOOTSOURCE_HD; + *src = BOOTSOURCE_HD; break; case 3: if (cfg1 & (1 << 3)) - src = BOOTSOURCE_SPI; + *src = BOOTSOURCE_SPI; else - src = BOOTSOURCE_I2C; + *src = BOOTSOURCE_I2C; break; case 4: case 5: case 6: case 7: - src = BOOTSOURCE_MMC; + *src = BOOTSOURCE_MMC; break; default: break; } if (cfg1 & (1 << 7)) - src = BOOTSOURCE_NAND; + *src = BOOTSOURCE_NAND; - switch (src) { + switch (*src) { case BOOTSOURCE_MMC: case BOOTSOURCE_SPI: case BOOTSOURCE_I2C: - instance = (cfg1 >> 20) & 0x3; + *instance = (cfg1 >> 20) & 0x3; break; default: - instance = 0; + *instance = 0; break; } +} + +void imx53_boot_save_loc(void) +{ + enum bootsource src = BOOTSOURCE_UNKNOWN; + int instance = BOOTSOURCE_INSTANCE_UNKNOWN; + + imx53_get_boot_source(&src, &instance); bootsource_set(src); bootsource_set_instance(instance); @@ -278,7 +336,7 @@ internal_boot: return; } -void imx6_boot_save_loc(void __iomem *src_base) +void imx6_boot_save_loc(void) { enum bootsource src = BOOTSOURCE_UNKNOWN; int instance = BOOTSOURCE_INSTANCE_UNKNOWN; diff --git a/arch/arm/mach-imx/clk-imx5.c b/arch/arm/mach-imx/clk-imx5.c index d3cde7e42f..c4c47a6d87 100644 --- a/arch/arm/mach-imx/clk-imx5.c +++ b/arch/arm/mach-imx/clk-imx5.c @@ -467,6 +467,7 @@ int __init mx53_clocks_init(struct device_d *dev, void __iomem *regs) clkdev_add_physbase(clks[IMX5_CLK_UART_ROOT], MX53_UART2_BASE_ADDR, NULL); clkdev_add_physbase(clks[IMX5_CLK_UART_ROOT], MX53_UART3_BASE_ADDR, NULL); clkdev_add_physbase(clks[IMX5_CLK_UART_ROOT], MX53_UART4_BASE_ADDR, NULL); + clkdev_add_physbase(clks[IMX5_CLK_UART_ROOT], MX53_UART5_BASE_ADDR, NULL); clkdev_add_physbase(clks[IMX5_CLK_PER_ROOT], MX53_I2C1_BASE_ADDR, NULL); clkdev_add_physbase(clks[IMX5_CLK_PER_ROOT], MX53_I2C2_BASE_ADDR, NULL); clkdev_add_physbase(clks[IMX5_CLK_PER_ROOT], MX53_I2C3_BASE_ADDR, NULL); diff --git a/arch/arm/mach-imx/clk-imx6.c b/arch/arm/mach-imx/clk-imx6.c index a634580c86..8ac43bebb0 100644 --- a/arch/arm/mach-imx/clk-imx6.c +++ b/arch/arm/mach-imx/clk-imx6.c @@ -495,10 +495,13 @@ static int imx6_ccm_probe(struct device_d *dev) writel(0xf0ffffff, ccm_base + CCGR1); /* gate GPU3D, GPU2D */ writel(0xffffffff, ccm_base + CCGR2); if (IS_ENABLED(CONFIG_DRIVER_VIDEO_IMX_IPUV3)) - writel(0xffffffff, ccm_base + CCGR3); /* gate OpenVG */ + writel(0x3fffffff, ccm_base + CCGR3); /* gate OpenVG */ else - writel(0x3fffffff, ccm_base + CCGR3); /* gate OpenVG, LDB, IPU1, IPU2 */ - writel(0xffffffff, ccm_base + CCGR4); + writel(0x3fff0000, ccm_base + CCGR3); /* gate OpenVG, LDB, IPU1, IPU2 */ + if (IS_ENABLED(CONFIG_PCI_IMX6)) + writel(0xffffffff, ccm_base + CCGR4); + else + writel(0xfffffffc, ccm_base + CCGR4); /* gate PCIe */ writel(0xffffffff, ccm_base + CCGR5); writel(0xffff3fff, ccm_base + CCGR6); /* gate VPU */ writel(0xffffffff, ccm_base + CCGR7); diff --git a/arch/arm/mach-imx/imx25.c b/arch/arm/mach-imx/imx25.c index 2534d75429..a4e27dd913 100644 --- a/arch/arm/mach-imx/imx25.c +++ b/arch/arm/mach-imx/imx25.c @@ -52,7 +52,7 @@ int imx25_init(void) { int val; - imx25_boot_save_loc((void *)MX25_CCM_BASE_ADDR); + imx25_boot_save_loc(); add_generic_device("imx25-esdctl", 0, NULL, MX25_ESDCTL_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); /* diff --git a/arch/arm/mach-imx/imx27.c b/arch/arm/mach-imx/imx27.c index b99a4eae3f..81b9f539df 100644 --- a/arch/arm/mach-imx/imx27.c +++ b/arch/arm/mach-imx/imx27.c @@ -100,7 +100,7 @@ static void imx27_init_max(void) int imx27_init(void) { imx27_silicon_revision(); - imx27_boot_save_loc((void *)MX27_SYSCTRL_BASE_ADDR); + imx27_boot_save_loc(); add_generic_device("imx27-esdctl", DEVICE_ID_SINGLE, NULL, MX27_ESDCTL_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); diff --git a/arch/arm/mach-imx/imx35.c b/arch/arm/mach-imx/imx35.c index 3e1aa97583..d37bdfda7b 100644 --- a/arch/arm/mach-imx/imx35.c +++ b/arch/arm/mach-imx/imx35.c @@ -55,7 +55,7 @@ int imx35_init(void) imx35_silicon_revision(); - imx35_boot_save_loc((void *)MX35_CCM_BASE_ADDR); + imx35_boot_save_loc(); add_generic_device("imx35-esdctl", 0, NULL, MX35_ESDCTL_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); return 0; diff --git a/arch/arm/mach-imx/imx51.c b/arch/arm/mach-imx/imx51.c index a6784d0a04..ffe6a7c651 100644 --- a/arch/arm/mach-imx/imx51.c +++ b/arch/arm/mach-imx/imx51.c @@ -58,7 +58,7 @@ static void imx51_ipu_mipi_setup(void) int imx51_init(void) { imx_set_silicon_revision("i.MX51", imx51_silicon_revision()); - imx51_boot_save_loc((void *)MX51_SRC_BASE_ADDR); + imx51_boot_save_loc(); add_generic_device("imx51-esdctl", 0, NULL, MX51_ESDCTL_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); imx51_ipu_mipi_setup(); diff --git a/arch/arm/mach-imx/imx53.c b/arch/arm/mach-imx/imx53.c index 872d293640..2758f1bbcf 100644 --- a/arch/arm/mach-imx/imx53.c +++ b/arch/arm/mach-imx/imx53.c @@ -53,7 +53,7 @@ static int imx53_silicon_revision(void) int imx53_init(void) { imx53_silicon_revision(); - imx53_boot_save_loc((void *)MX53_SRC_BASE_ADDR); + imx53_boot_save_loc(); add_generic_device("imx53-esdctl", 0, NULL, MX53_ESDCTL_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); return 0; diff --git a/arch/arm/mach-imx/imx6.c b/arch/arm/mach-imx/imx6.c index 18509a7b51..a635ccd741 100644 --- a/arch/arm/mach-imx/imx6.c +++ b/arch/arm/mach-imx/imx6.c @@ -25,16 +25,12 @@ #include <asm/mmu.h> #include <asm/cache-l2x0.h> -#define SI_REV 0x260 - void imx6_init_lowlevel(void) { void __iomem *aips1 = (void *)MX6_AIPS1_ON_BASE_ADDR; void __iomem *aips2 = (void *)MX6_AIPS2_ON_BASE_ADDR; - void __iomem *iomux = (void *)MX6_IOMUXC_BASE_ADDR; bool is_imx6q = __imx6_cpu_type() == IMX6_CPUTYPE_IMX6Q; bool is_imx6d = __imx6_cpu_type() == IMX6_CPUTYPE_IMX6D; - uint32_t val; /* * Set all MPROTx to be non-bufferable, trusted for R/W, @@ -56,19 +52,10 @@ void imx6_init_lowlevel(void) writel(0, aips2 + 0x4c); writel(0, aips2 + 0x50); - /* enable all clocks */ - writel(0xffffffff, 0x020c4068); - writel(0xffffffff, 0x020c406c); - writel(0xffffffff, 0x020c4070); - writel(0xffffffff, 0x020c4074); - writel(0xffffffff, 0x020c4078); - writel(0xffffffff, 0x020c407c); - writel(0xffffffff, 0x020c4080); - - /* - * Due to a hardware bug (related to errata ERR006282) on i.MX6DQ we - * need to gate/ungate all PFDs to make sure PFD is working right, - * otherwise PFDs may not output clock after reset. + /* Due to hardware limitation, on MX6Q we need to gate/ungate all PFDs + * to make sure PFD is working right, otherwise, PFDs may + * not output clock after reset, MX6DL and MX6SL have added 396M pfd + * workaround in ROM code, as bus clock need it */ if (is_imx6q || is_imx6d) { writel(BM_ANADIG_PFD_480_PFD3_CLKGATE | @@ -94,6 +81,18 @@ void imx6_init_lowlevel(void) MX6_ANATOP_BASE_ADDR + HW_ANADIG_PFD_528_CLR); } +} + +void imx6_setup_ipu_qos(void) +{ + void __iomem *iomux = (void *)MX6_IOMUXC_BASE_ADDR; + void __iomem *fast2 = (void *)MX6_FAST2_BASE_ADDR; + uint32_t val; + + if (!cpu_mx6_is_mx6q() && !cpu_mx6_is_mx6d() && + !cpu_mx6_is_mx6dl() && cpu_mx6_is_mx6s()) + return; + val = readl(iomux + IOMUXC_GPR4); val |= IMX6Q_GPR4_VPU_WR_CACHE_SEL | IMX6Q_GPR4_VPU_RD_CACHE_SEL | IMX6Q_GPR4_VPU_P_WR_CACHE_VAL | IMX6Q_GPR4_VPU_P_RD_CACHE_VAL_MASK | @@ -110,52 +109,28 @@ void imx6_init_lowlevel(void) val &= ~(IMX6Q_GPR7_IPU2_ID00_RD_QOS_MASK | IMX6Q_GPR7_IPU2_ID01_RD_QOS_MASK); val |= (0xf << 16) | (0x7 << 20); writel(val, iomux + IOMUXC_GPR7); + + /* + * On i.MX6 QP/DP the NoC regulator for the IPU ports needs to be in + * bypass mode for the above settings to take effect. + */ + if ((cpu_mx6_is_mx6q() || cpu_mx6_is_mx6d()) && + imx_silicon_revision() >= IMX_CHIP_REV_2_0) { + writel(0x2, fast2 + 0xb048c); + writel(0x2, fast2 + 0xb050c); + } } int imx6_init(void) { const char *cputypestr; - u32 rev; u32 mx6_silicon_revision; imx6_init_lowlevel(); - imx6_boot_save_loc((void *)MX6_SRC_BASE_ADDR); - - rev = readl(MX6_ANATOP_BASE_ADDR + SI_REV); + imx6_boot_save_loc(); - switch (rev & 0xfff) { - case 0x00: - mx6_silicon_revision = IMX_CHIP_REV_1_0; - break; - - case 0x01: - mx6_silicon_revision = IMX_CHIP_REV_1_1; - break; - - case 0x02: - mx6_silicon_revision = IMX_CHIP_REV_1_2; - break; - - case 0x03: - mx6_silicon_revision = IMX_CHIP_REV_1_3; - break; - - case 0x04: - mx6_silicon_revision = IMX_CHIP_REV_1_4; - break; - - case 0x05: - mx6_silicon_revision = IMX_CHIP_REV_1_5; - break; - - case 0x100: - mx6_silicon_revision = IMX_CHIP_REV_2_0; - break; - - default: - mx6_silicon_revision = IMX_CHIP_REV_UNKNOWN; - } + mx6_silicon_revision = imx6_cpu_revision(); switch (imx6_cpu_type()) { case IMX6_CPUTYPE_IMX6Q: @@ -186,6 +161,8 @@ int imx6_init(void) imx_set_silicon_revision(cputypestr, mx6_silicon_revision); + imx6_setup_ipu_qos(); + return 0; } @@ -291,7 +268,8 @@ static int imx6_fixup_cpus(struct device_node *root, void *context) static int imx6_fixup_cpus_register(void) { - if (!of_machine_is_compatible("fsl,imx6q") && + if (!of_machine_is_compatible("fsl,imx6qp") && + !of_machine_is_compatible("fsl,imx6q") && !of_machine_is_compatible("fsl,imx6dl")) return 0; diff --git a/arch/arm/mach-imx/include/mach/generic.h b/arch/arm/mach-imx/include/mach/generic.h index cadc501040..7c275dff84 100644 --- a/arch/arm/mach-imx/include/mach/generic.h +++ b/arch/arm/mach-imx/include/mach/generic.h @@ -8,13 +8,17 @@ u64 imx_uid(void); -void imx25_boot_save_loc(void __iomem *ccm_base); -void imx35_boot_save_loc(void __iomem *ccm_base); -void imx27_boot_save_loc(void __iomem *sysctrl_base); -void imx50_boot_save_loc(void __iomem *src_base); -void imx51_boot_save_loc(void __iomem *src_base); -void imx53_boot_save_loc(void __iomem *src_base); -void imx6_boot_save_loc(void __iomem *src_base); +void imx25_boot_save_loc(void); +void imx35_boot_save_loc(void); +void imx27_boot_save_loc(void); +void imx51_boot_save_loc(void); +void imx53_boot_save_loc(void); +void imx6_boot_save_loc(void); + +void imx25_get_boot_source(enum bootsource *src, int *instance); +void imx35_get_boot_source(enum bootsource *src, int *instance); +void imx51_get_boot_source(enum bootsource *src, int *instance); +void imx53_get_boot_source(enum bootsource *src, int *instance); void imx6_get_boot_source(enum bootsource *src, int *instance); int imx1_init(void); diff --git a/arch/arm/mach-imx/include/mach/imx-nand.h b/arch/arm/mach-imx/include/mach/imx-nand.h index b9305e2e9d..0adba0989a 100644 --- a/arch/arm/mach-imx/include/mach/imx-nand.h +++ b/arch/arm/mach-imx/include/mach/imx-nand.h @@ -59,6 +59,55 @@ struct imx_nand_platform_data { #define NFC_V2_SPAS_SPARESIZE(spas) ((spas) >> 1) +#define NFC_V3_FLASH_CMD (host->regs_axi + 0x00) +#define NFC_V3_FLASH_ADDR0 (host->regs_axi + 0x04) + +#define NFC_V3_CONFIG1 (host->regs_axi + 0x34) +#define NFC_V3_CONFIG1_SP_EN (1 << 0) +#define NFC_V3_CONFIG1_RBA(x) (((x) & 0x7 ) << 4) + +#define NFC_V3_ECC_STATUS_RESULT (host->regs_axi + 0x38) + +#define NFC_V3_LAUNCH (host->regs_axi + 0x40) + +#define NFC_V3_WRPROT (host->regs_ip + 0x0) +#define NFC_V3_WRPROT_LOCK_TIGHT (1 << 0) +#define NFC_V3_WRPROT_LOCK (1 << 1) +#define NFC_V3_WRPROT_UNLOCK (1 << 2) +#define NFC_V3_WRPROT_BLS_UNLOCK (2 << 6) + +#define NFC_V3_WRPROT_UNLOCK_BLK_ADD0 (host->regs_ip + 0x04) + +#define NFC_V3_CONFIG2 (host->regs_ip + 0x24) +#define NFC_V3_CONFIG2_PS_512 (0 << 0) +#define NFC_V3_CONFIG2_PS_2048 (1 << 0) +#define NFC_V3_CONFIG2_PS_4096 (2 << 0) +#define NFC_V3_CONFIG2_ONE_CYCLE (1 << 2) +#define NFC_V3_CONFIG2_ECC_EN (1 << 3) +#define NFC_V3_CONFIG2_2CMD_PHASES (1 << 4) +#define NFC_V3_CONFIG2_NUM_ADDR_PHASE0 (1 << 5) +#define NFC_V3_CONFIG2_ECC_MODE_8 (1 << 6) +#define NFC_V3_MX51_CONFIG2_PPB(x) (((x) & 0x3) << 7) +#define NFC_V3_MX53_CONFIG2_PPB(x) (((x) & 0x3) << 8) +#define NFC_V3_CONFIG2_NUM_ADDR_PHASE1(x) (((x) & 0x3) << 12) +#define NFC_V3_CONFIG2_INT_MSK (1 << 15) +#define NFC_V3_CONFIG2_ST_CMD(x) (((x) & 0xff) << 24) +#define NFC_V3_CONFIG2_SPAS(x) (((x) & 0xff) << 16) + +#define NFC_V3_CONFIG3 (host->regs_ip + 0x28) +#define NFC_V3_CONFIG3_ADD_OP(x) (((x) & 0x3) << 0) +#define NFC_V3_CONFIG3_FW8 (1 << 3) +#define NFC_V3_CONFIG3_SBB(x) (((x) & 0x7) << 8) +#define NFC_V3_CONFIG3_NUM_OF_DEVICES(x) (((x) & 0x7) << 12) +#define NFC_V3_CONFIG3_RBB_MODE (1 << 15) +#define NFC_V3_CONFIG3_NO_SDMA (1 << 20) + +#define NFC_V3_IPC (host->regs_ip + 0x2C) +#define NFC_V3_IPC_CREQ (1 << 0) +#define NFC_V3_IPC_INT (1 << 31) + +#define NFC_V3_DELAY_LINE (host->regs_ip + 0x34) + /* * Operation modes for the NFC. Valid for v1, v2 and v3 * type controllers. diff --git a/arch/arm/mach-imx/include/mach/imx6-regs.h b/arch/arm/mach-imx/include/mach/imx6-regs.h index 68be43c9ab..e661c4ed12 100644 --- a/arch/arm/mach-imx/include/mach/imx6-regs.h +++ b/arch/arm/mach-imx/include/mach/imx6-regs.h @@ -3,6 +3,9 @@ #define MX6_GPMI_BASE_ADDR 0x00112000 +#define MX6_FAST1_BASE_ADDR 0x00c00000 +#define MX6_FAST2_BASE_ADDR 0x00b00000 + #define MX6_AIPS1_ARB_BASE_ADDR 0x02000000 #define MX6_AIPS2_ARB_BASE_ADDR 0x02100000 diff --git a/arch/arm/mach-imx/include/mach/imx6.h b/arch/arm/mach-imx/include/mach/imx6.h index e8ffa47a7d..fb5eaf16b7 100644 --- a/arch/arm/mach-imx/include/mach/imx6.h +++ b/arch/arm/mach-imx/include/mach/imx6.h @@ -4,6 +4,7 @@ #include <io.h> #include <mach/generic.h> #include <mach/imx6-regs.h> +#include <mach/revision.h> void imx6_init_lowlevel(void); @@ -48,6 +49,41 @@ static inline int imx6_cpu_type(void) return __imx6_cpu_type(); } +static inline int __imx6_cpu_revision(void) +{ + + uint32_t rev; + + rev = readl(MX6_ANATOP_BASE_ADDR + IMX6_ANATOP_SI_REV); + + switch (rev & 0xfff) { + case 0x00: + return IMX_CHIP_REV_1_0; + case 0x01: + return IMX_CHIP_REV_1_1; + case 0x02: + return IMX_CHIP_REV_1_2; + case 0x03: + return IMX_CHIP_REV_1_3; + case 0x04: + return IMX_CHIP_REV_1_4; + case 0x05: + return IMX_CHIP_REV_1_5; + case 0x100: + return IMX_CHIP_REV_2_0; + } + + return IMX_CHIP_REV_UNKNOWN; +} + +static inline int imx6_cpu_revision(void) +{ + if (!cpu_is_mx6()) + return 0; + + return __imx6_cpu_revision(); +} + #define DEFINE_MX6_CPU_TYPE(str, type) \ static inline int cpu_mx6_is_##str(void) \ { \ diff --git a/arch/arm/mach-imx/include/mach/xload.h b/arch/arm/mach-imx/include/mach/xload.h index 997522e2d5..3898d664ef 100644 --- a/arch/arm/mach-imx/include/mach/xload.h +++ b/arch/arm/mach-imx/include/mach/xload.h @@ -1,6 +1,7 @@ #ifndef __MACH_XLOAD_H #define __MACH_XLOAD_H +int imx53_nand_start_image(void); int imx6_spi_load_image(int instance, unsigned int flash_offset, void *buf, int len); int imx6_spi_start_image(int instance); int imx6_esdhc_load_image(int instance, void *buf, int len); diff --git a/arch/arm/mach-imx/xload-imx-nand.c b/arch/arm/mach-imx/xload-imx-nand.c new file mode 100644 index 0000000000..22e41fac77 --- /dev/null +++ b/arch/arm/mach-imx/xload-imx-nand.c @@ -0,0 +1,308 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ +#define pr_fmt(fmt) "imx-nand-boot: " fmt + +#include <common.h> +#include <init.h> +#include <io.h> +#include <linux/mtd/nand.h> +#include <mach/imx-nand.h> +#include <mach/generic.h> +#include <mach/imx53-regs.h> +#include <mach/xload.h> + +struct imx_nand { + void __iomem *base; + void __iomem *main_area0; + void __iomem *regs_ip; + void __iomem *regs_axi; + void *spare0; + int pagesize; + int v1; + int pages_per_block; +}; + +static void wait_op_done(struct imx_nand *host) +{ + u32 r; + + while (1) { + r = readl(NFC_V3_IPC); + if (r & NFC_V3_IPC_INT) + break; + }; + + r &= ~NFC_V3_IPC_INT; + + writel(r, NFC_V3_IPC); +} + +/* + * This function issues the specified command to the NAND device and + * waits for completion. + * + * @param cmd command for NAND Flash + */ +static void imx_nandboot_send_cmd(struct imx_nand *host, u16 cmd) +{ + /* fill command */ + writel(cmd, NFC_V3_FLASH_CMD); + + /* send out command */ + writel(NFC_CMD, NFC_V3_LAUNCH); + + /* Wait for operation to complete */ + wait_op_done(host); +} + +/* + * This function sends an address (or partial address) to the + * NAND device. The address is used to select the source/destination for + * a NAND command. + * + * @param addr address to be written to NFC. + * @param islast True if this is the last address cycle for command + */ +static void imx_nandboot_send_addr(struct imx_nand *host, u16 addr) +{ + /* fill address */ + writel(addr, NFC_V3_FLASH_ADDR0); + + /* send out address */ + writel(NFC_ADDR, NFC_V3_LAUNCH); + + wait_op_done(host); +} + +static void imx_nandboot_nfc_addr(struct imx_nand *host, int page) +{ + imx_nandboot_send_addr(host, 0); + + if (host->pagesize == 2048) + imx_nandboot_send_addr(host, 0); + + imx_nandboot_send_addr(host, page & 0xff); + imx_nandboot_send_addr(host, (page >> 8) & 0xff); + imx_nandboot_send_addr(host, (page >> 16) & 0xff); + + if (host->pagesize == 2048) + imx_nandboot_send_cmd(host, NAND_CMD_READSTART); +} + +static void imx_nandboot_send_page(struct imx_nand *host, unsigned int ops) +{ + uint32_t tmp; + + tmp = readl(NFC_V3_CONFIG1); + tmp &= ~(7 << 4); + writel(tmp, NFC_V3_CONFIG1); + + /* transfer data from NFC ram to nand */ + writel(ops, NFC_V3_LAUNCH); + + wait_op_done(host); +} + +static void __memcpy32(void *trg, const void *src, int size) +{ + int i; + unsigned int *t = trg; + unsigned const int *s = src; + + for (i = 0; i < (size >> 2); i++) + *t++ = *s++; +} + +static void imx_nandboot_get_page(struct imx_nand *host, unsigned int page) +{ + imx_nandboot_send_cmd(host, NAND_CMD_READ0); + imx_nandboot_nfc_addr(host, page); + imx_nandboot_send_page(host, NFC_OUTPUT); +} + +static int imx_nandboot_read_page(struct imx_nand *host, unsigned int page, + void *buf) +{ + int nsubpages; + u32 eccstat, err; + + imx_nandboot_get_page(host, page); + + __memcpy32(buf, host->main_area0, host->pagesize); + + eccstat = readl(NFC_V3_ECC_STATUS_RESULT); + nsubpages = host->pagesize / 512; + + do { + err = eccstat & 0xf; + if (err == 0xf) + return -EBADMSG; + eccstat >>= 4; + } while (--nsubpages); + + return 0; +} + +static int dbbt_block_is_bad(void *_dbbt, int block) +{ + int i; + u32 *dbbt = _dbbt; + int num_bad_blocks; + + if (!_dbbt) + return false; + + dbbt++; /* reserved */ + + num_bad_blocks = *dbbt++; + + for (i = 0; i < num_bad_blocks; i++) { + if (*dbbt == block) + return true; + dbbt++; + } + + return false; +} + +static int read_firmware(struct imx_nand *host, void *dbbt, int page, void *buf, + int npages) +{ + int ret; + + if (dbbt_block_is_bad(dbbt, page / host->pages_per_block)) + page = ALIGN(page, host->pages_per_block); + + while (npages) { + if (!(page % host->pages_per_block)) { + if (dbbt_block_is_bad(NULL, page / host->pages_per_block)) { + page += host->pages_per_block; + continue; + } + } + + ret = imx_nandboot_read_page(host, page, buf); + if (ret) + return ret; + + buf += host->pagesize; + page++; + npages--; + } + + return 0; +} + +int imx53_nand_start_image(void) +{ + struct imx_nand host; + void *buf = IOMEM(MX53_CSD0_BASE_ADDR); + void *dbbt = NULL; + int page_firmware1, page_firmware2, page_dbbt, image_size, npages; + void (*firmware)(void); + int ret; + u32 cfg1 = readl(IOMEM(MX53_SRC_BASE_ADDR) + 0x4); + + host.base = IOMEM(MX53_NFC_AXI_BASE_ADDR); + host.main_area0 = host.base; + host.regs_ip = IOMEM(MX53_NFC_BASE_ADDR); + host.regs_axi = host.base + 0x1e00; + host.spare0 = host.base + 0x1000; + + switch ((cfg1 >> 14) & 0x3) { + case 0: + host.pagesize = 512; + break; + case 1: + host.pagesize = 2048; + break; + case 2: + case 3: + host.pagesize = 4096; + break; + } + + switch ((cfg1 >> 17) & 0x3) { + case 0: + host.pages_per_block = 32; + break; + case 1: + host.pages_per_block = 64; + break; + case 2: + host.pages_per_block = 128; + break; + case 3: + host.pages_per_block = 256; + break; + } + + pr_debug("Using pagesize %d, %d pages per block\n", + host.pagesize, host.pages_per_block); + + ret = imx_nandboot_read_page(&host, 0, buf); + if (ret) + return ret; + + if (*(u32 *)(buf + 0x4) != 0x20424346) { + pr_err("No FCB Found on flash\n"); + return -EINVAL; + } + + page_firmware1 = *(u32 *)(buf + 0x68); + page_firmware2 = *(u32 *)(buf + 0x6c); + page_dbbt = *(u32 *)(buf + 0x78); + + image_size = ALIGN(imx_image_size(), host.pagesize); + npages = image_size / host.pagesize; + + if (page_dbbt) { + ret = imx_nandboot_read_page(&host, page_dbbt, buf); + if (!ret && *(u32 *)(buf + 0x4) == 0x44424254) { + ret = imx_nandboot_read_page(&host, page_dbbt + 4, buf); + if (!ret) { + pr_debug("Using DBBT from page %d\n", page_dbbt + 4); + dbbt = buf; + buf += host.pagesize; + } + } + } + + pr_debug("Reading firmware from page %d, size %d\n", + page_firmware1, image_size); + + ret = read_firmware(&host, dbbt, page_firmware1, buf, npages); + if (ret) { + pr_debug("Reading primary firmware failed\n"); + if (page_firmware2) { + pr_debug("Reading firmware from page %d, size %d\n", + page_firmware2, image_size); + ret = read_firmware(&host, dbbt, page_firmware2, buf, npages); + if (ret) { + pr_err("Could not read firmware\n"); + return -EINVAL; + } + } else { + pr_err("Reading primary firmware failed, no secondary firmware found\n"); + return -EINVAL; + } + } + + pr_debug("Firmware read, starting it\n"); + + firmware = buf; + + firmware(); + + return 0; +} diff --git a/arch/arm/mach-mxs/Kconfig b/arch/arm/mach-mxs/Kconfig index ea0fa5a62b..facab9c251 100644 --- a/arch/arm/mach-mxs/Kconfig +++ b/arch/arm/mach-mxs/Kconfig @@ -45,7 +45,6 @@ config MACH_CHUMBY config MACH_IMX233_OLINUXINO bool "Olimex.ltd imx223-olinuxino" - select HAVE_DEFAULT_ENVIRONMENT_NEW select HAVE_PBL_MULTI_IMAGES help Say Y here if you are using the imx233-olinuxino @@ -61,14 +60,12 @@ choice config MACH_TX28 bool "KARO tx28" - select HAVE_DEFAULT_ENVIRONMENT_NEW select HAVE_PBL_MULTI_IMAGES help Say Y here if you are using the KARO TX28 CPU module. config MACH_MX28EVK bool "mx28-evk" - select HAVE_DEFAULT_ENVIRONMENT_NEW select MXS_OCOTP select HAVE_PBL_MULTI_IMAGES help @@ -76,7 +73,6 @@ config MACH_MX28EVK config MACH_DUCKBILL bool "Duckbill" - select HAVE_DEFAULT_ENVIRONMENT_NEW select MXS_OCOTP select HAVE_PBL_MULTI_IMAGES help @@ -84,7 +80,6 @@ config MACH_DUCKBILL config MACH_CFA10036 bool "cfa-10036" - select HAVE_DEFAULT_ENVIRONMENT_NEW select MXS_OCOTP select I2C_GPIO select EEPROM_AT24 diff --git a/arch/arm/mach-omap/Kconfig b/arch/arm/mach-omap/Kconfig index d7c863ca12..93fa35a208 100644 --- a/arch/arm/mach-omap/Kconfig +++ b/arch/arm/mach-omap/Kconfig @@ -155,7 +155,6 @@ config OMAP_SERIALBOOT config OMAP_MULTI_BOARDS bool "Allow multiple boards to be selected" - select HAVE_DEFAULT_ENVIRONMENT_NEW select HAVE_PBL_MULTI_IMAGES if OMAP_MULTI_BOARDS @@ -168,7 +167,6 @@ config MACH_AFI_GF config MACH_BEAGLE bool "Texas Instrument's Beagle Board" - select HAVE_DEFAULT_ENVIRONMENT_NEW select ARCH_OMAP3 help Say Y here if you are using Beagle Board @@ -184,6 +182,13 @@ config MACH_PHYTEC_SOM_AM335X select ARCH_AM33XX help Say Y here if you are using a am335x based Phytecs SOM + +config MACH_VSCOM_BALTOS + bool "VScom Baltos Devices" + select ARCH_AM33XX + help + Say Y here if you are using a am335x based VScom Baltos devices + endif choice @@ -204,7 +209,6 @@ config MACH_OMAP3EVM config MACH_PANDA bool "Texas Instrument's Panda Board" - select HAVE_DEFAULT_ENVIRONMENT_NEW select ARCH_OMAP4 help Say Y here if you are using OMAP4 Panda board diff --git a/arch/arm/mach-omap/xload.c b/arch/arm/mach-omap/xload.c index 14a631ebfc..822389c38c 100644 --- a/arch/arm/mach-omap/xload.c +++ b/arch/arm/mach-omap/xload.c @@ -231,8 +231,10 @@ static void *am33xx_net_boot(void) int err; int len; struct dhcp_req_param dhcp_param; - const char *bootfile, *ip; + const char *bootfile; + IPaddr_t ip; char *file; + char ip4_str[sizeof("255.255.255.255")]; am33xx_register_ethaddr(0, 0); @@ -258,8 +260,9 @@ static void *am33xx_net_boot(void) if (err) return NULL; - ip = ip_to_string(net_get_serverip()); - err = mount(ip, "tftp", TFTP_MOUNT, NULL); + ip = net_get_serverip(); + sprintf(ip4_str, "%pI4", &ip); + err = mount(ip4_str, "tftp", TFTP_MOUNT, NULL); if (err < 0) { printf("Unable to mount.\n"); return NULL; diff --git a/arch/arm/mach-samsung/Kconfig b/arch/arm/mach-samsung/Kconfig index 8f421bb839..a2ddabf589 100644 --- a/arch/arm/mach-samsung/Kconfig +++ b/arch/arm/mach-samsung/Kconfig @@ -52,7 +52,6 @@ config MACH_MINI2440 select S3C_PLL_INIT select S3C_SDRAM_INIT select HAS_DM9000 - select HAVE_DEFAULT_ENVIRONMENT_NEW help Say Y here if you are using Mini 2440 dev board equipped with a Samsung S3C2440 Processor diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig index 94689e3ecd..04b5416b64 100644 --- a/arch/arm/mach-socfpga/Kconfig +++ b/arch/arm/mach-socfpga/Kconfig @@ -13,19 +13,15 @@ config ARCH_TEXT_BASE default 0x00100000 if MACH_SOCFPGA_CYCLONE5 config MACH_SOCFPGA_ALTERA_SOCDK - select HAVE_DEFAULT_ENVIRONMENT_NEW bool "Altera SoCFPGA Development Kit" config MACH_SOCFPGA_EBV_SOCRATES - select HAVE_DEFAULT_ENVIRONMENT_NEW bool "EBV Socrates" config MACH_SOCFPGA_TERASIC_DE0_NANO_SOC - select HAVE_DEFAULT_ENVIRONMENT_NEW bool "Terasic DE0-NANO-SoC aka Atlas" config MACH_SOCFPGA_TERASIC_SOCKIT - select HAVE_DEFAULT_ENVIRONMENT_NEW bool "Terasic SoCKit" endif diff --git a/arch/arm/mach-uemd/Kconfig b/arch/arm/mach-uemd/Kconfig index aedd7574ac..2bcdd320c9 100644 --- a/arch/arm/mach-uemd/Kconfig +++ b/arch/arm/mach-uemd/Kconfig @@ -9,7 +9,6 @@ choice config MACH_MB7707 bool "MB7707" - select HAVE_DEFAULT_ENVIRONMENT_NEW endchoice diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig index 755fdc168a..3c5cced455 100644 --- a/arch/arm/mach-versatile/Kconfig +++ b/arch/arm/mach-versatile/Kconfig @@ -9,7 +9,6 @@ config MACH_VERSATILEPB default y select ARM_AMBA select CLKDEV_LOOKUP - select HAVE_DEFAULT_ENVIRONMENT_NEW choice prompt "ARM Board type" diff --git a/arch/arm/pbl/Makefile b/arch/arm/pbl/Makefile index 1ff39dbdfe..c45511261d 100644 --- a/arch/arm/pbl/Makefile +++ b/arch/arm/pbl/Makefile @@ -3,7 +3,7 @@ suffix_$(CONFIG_IMAGE_COMPRESSION_GZIP) = gzip suffix_$(CONFIG_IMAGE_COMPRESSION_LZO) = lzo suffix_$(CONFIG_IMAGE_COMPRESSION_LZ4) = lz4 suffix_$(CONFIG_IMAGE_COMPRESSION_XZKERN) = xzkern -suffix_$(CONFIG_IMAGE_COMPRESSION_NONE) = shipped +suffix_$(CONFIG_IMAGE_COMPRESSION_NONE) = comp_copy OBJCOPYFLAGS_zbarebox.bin = -O binary piggy_o := piggy.$(suffix_y).o |