summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Documentation/boards/bcm2835.rst17
-rw-r--r--Kbuild43
-rw-r--r--Makefile59
-rw-r--r--TODO2
-rw-r--r--arch/arm/Kconfig3
-rw-r--r--arch/arm/Makefile2
-rw-r--r--arch/arm/boards/a9m2410/lowlevel_init.S2
-rw-r--r--arch/arm/boards/a9m2440/lowlevel_init.S2
-rw-r--r--arch/arm/boards/afi-gf/board.c2
-rw-r--r--arch/arm/boards/afi-gf/lowlevel.c2
-rw-r--r--arch/arm/boards/animeo_ip/init.c3
-rw-r--r--arch/arm/boards/archosg9/board.c2
-rw-r--r--arch/arm/boards/archosg9/lowlevel.c2
-rw-r--r--arch/arm/boards/at91rm9200ek/init.c2
-rw-r--r--arch/arm/boards/at91sam9260ek/init.c2
-rw-r--r--arch/arm/boards/at91sam9261ek/init.c2
-rw-r--r--arch/arm/boards/at91sam9263ek/init.c2
-rw-r--r--arch/arm/boards/at91sam9m10g45ek/init.c2
-rw-r--r--arch/arm/boards/at91sam9m10ihd/init.c2
-rw-r--r--arch/arm/boards/at91sam9n12ek/init.c2
-rw-r--r--arch/arm/boards/at91sam9x5ek/init.c2
-rw-r--r--arch/arm/boards/avnet-zedboard/board.c2
-rw-r--r--arch/arm/boards/beagle/board.c2
-rw-r--r--arch/arm/boards/beagle/lowlevel.c2
-rw-r--r--arch/arm/boards/beaglebone/board.c5
-rw-r--r--arch/arm/boards/beaglebone/lowlevel.c2
-rw-r--r--arch/arm/boards/boundarydevices-nitrogen6x/lowlevel.c2
-rw-r--r--arch/arm/boards/canon-a1100/lowlevel.c2
-rw-r--r--arch/arm/boards/ccxmx51/ccxmx51.c2
-rw-r--r--arch/arm/boards/chumby_falconwing/falconwing.c2
-rw-r--r--arch/arm/boards/chumby_falconwing/lowlevel.c2
-rw-r--r--arch/arm/boards/clep7212/clep7212.c2
-rw-r--r--arch/arm/boards/crystalfontz-cfa10036/cfa10036.c2
-rw-r--r--arch/arm/boards/crystalfontz-cfa10036/lowlevel.c2
-rw-r--r--arch/arm/boards/datamodul-edm-qmx6/Makefile4
-rw-r--r--arch/arm/boards/datamodul-edm-qmx6/board.c2
-rw-r--r--arch/arm/boards/datamodul-edm-qmx6/lowlevel.c2
-rw-r--r--arch/arm/boards/dfi-fs700-m60/board.c2
-rw-r--r--arch/arm/boards/dfi-fs700-m60/lowlevel.c2
-rw-r--r--arch/arm/boards/ebv-socrates/board.c2
-rw-r--r--arch/arm/boards/ebv-socrates/lowlevel.c2
-rw-r--r--arch/arm/boards/efika-mx-smartbook/board.c2
-rw-r--r--arch/arm/boards/embedsky-e9/board.c2
-rw-r--r--arch/arm/boards/embedsky-e9/lowlevel.c2
-rw-r--r--arch/arm/boards/embest-riotboard/board.c2
-rw-r--r--arch/arm/boards/embest-riotboard/lowlevel.c2
-rw-r--r--arch/arm/boards/freescale-mx21-ads/imx21ads.c2
-rw-r--r--arch/arm/boards/freescale-mx21-ads/lowlevel_init.S2
-rw-r--r--arch/arm/boards/freescale-mx23-evk/lowlevel.c2
-rw-r--r--arch/arm/boards/freescale-mx28-evk/lowlevel.c2
-rw-r--r--arch/arm/boards/freescale-mx35-3ds/3stack.c2
-rw-r--r--arch/arm/boards/freescale-mx53-qsb/board.c2
-rw-r--r--arch/arm/boards/freescale-mx53-smd/board.c2
-rw-r--r--arch/arm/boards/freescale-mx53-vmx53/board.c2
-rw-r--r--arch/arm/boards/freescale-mx6-arm2/board.c2
-rw-r--r--arch/arm/boards/freescale-mx6-arm2/lowlevel.c2
-rw-r--r--arch/arm/boards/freescale-mx6-sabrelite/board.c2
-rw-r--r--arch/arm/boards/freescale-mx6-sabrelite/lowlevel.c2
-rw-r--r--arch/arm/boards/freescale-mx6-sabresd/board.c2
-rw-r--r--arch/arm/boards/freescale-mx6-sabresd/lowlevel.c2
-rw-r--r--arch/arm/boards/freescale-mx6sx-sabresdb/board.c2
-rw-r--r--arch/arm/boards/freescale-mx6sx-sabresdb/lowlevel.c2
-rw-r--r--arch/arm/boards/friendlyarm-mini2440/lowlevel_init.S2
-rw-r--r--arch/arm/boards/friendlyarm-mini6410/lowlevel.c2
-rw-r--r--arch/arm/boards/friendlyarm-tiny210/lowlevel.c2
-rw-r--r--arch/arm/boards/friendlyarm-tiny210/tiny210.c2
-rw-r--r--arch/arm/boards/friendlyarm-tiny6410/lowlevel.c2
-rw-r--r--arch/arm/boards/gateworks-ventana/lowlevel.c2
-rw-r--r--arch/arm/boards/gk802/board.c2
-rw-r--r--arch/arm/boards/gk802/lowlevel.c2
-rw-r--r--arch/arm/boards/globalscale-guruplug/lowlevel.c2
-rw-r--r--arch/arm/boards/globalscale-mirabox/lowlevel.c2
-rw-r--r--arch/arm/boards/guf-santaro/board.c2
-rw-r--r--arch/arm/boards/guf-santaro/lowlevel.c2
-rw-r--r--arch/arm/boards/guf-vincell/board.c2
-rw-r--r--arch/arm/boards/highbank/init.c2
-rw-r--r--arch/arm/boards/highbank/lowlevel.c2
-rw-r--r--arch/arm/boards/imx233-olinuxino/lowlevel.c2
-rw-r--r--arch/arm/boards/karo-tx25/board.c2
-rw-r--r--arch/arm/boards/karo-tx25/lowlevel.c2
-rw-r--r--arch/arm/boards/karo-tx28/lowlevel.c2
-rw-r--r--arch/arm/boards/karo-tx28/tx28-stk5.c2
-rw-r--r--arch/arm/boards/karo-tx53/board.c2
-rw-r--r--arch/arm/boards/karo-tx6x/lowlevel.c2
-rw-r--r--arch/arm/boards/marvell-armada-xp-gp/lowlevel.c2
-rw-r--r--arch/arm/boards/mioa701/lowlevel.c2
-rw-r--r--arch/arm/boards/module-mb7707/lowlevel.c2
-rw-r--r--arch/arm/boards/netx/platform.S2
-rw-r--r--arch/arm/boards/nhk8815/lowlevel.c2
-rw-r--r--arch/arm/boards/nvidia-beaver/entry.c2
-rw-r--r--arch/arm/boards/nvidia-jetson-tk1/entry.c2
-rw-r--r--arch/arm/boards/omap343xdsp/lowlevel.c2
-rw-r--r--arch/arm/boards/omap3evm/board.c2
-rw-r--r--arch/arm/boards/omap3evm/lowlevel.c2
-rw-r--r--arch/arm/boards/panda/board.c2
-rw-r--r--arch/arm/boards/panda/lowlevel.c2
-rw-r--r--arch/arm/boards/phytec-phycard-imx27/pca100.c2
-rw-r--r--arch/arm/boards/phytec-phycard-imx6/lowlevel.c2
-rw-r--r--arch/arm/boards/phytec-phycard-omap3/lowlevel.c2
-rw-r--r--arch/arm/boards/phytec-phycard-omap3/pca-a-l1.c2
-rw-r--r--arch/arm/boards/phytec-phycard-omap4/lowlevel.c2
-rw-r--r--arch/arm/boards/phytec-phycard-omap4/pca-a-xl2.c2
-rw-r--r--arch/arm/boards/phytec-phycore-am335x/board.c2
-rw-r--r--arch/arm/boards/phytec-phycore-am335x/lowlevel.c2
-rw-r--r--arch/arm/boards/phytec-phycore-imx27/pcm038.c2
-rw-r--r--arch/arm/boards/phytec-phycore-imx27/pcm970.c2
-rw-r--r--arch/arm/boards/phytec-phycore-imx35/pcm043.c2
-rw-r--r--arch/arm/boards/phytec-phycore-omap4460/board.c2
-rw-r--r--arch/arm/boards/phytec-phycore-omap4460/lowlevel.c2
-rw-r--r--arch/arm/boards/phytec-phycore-pxa270/board.c2
-rw-r--r--arch/arm/boards/phytec-phycore-pxa270/lowlevel_init.S2
-rw-r--r--arch/arm/boards/phytec-phyflex-am335x/board.c2
-rw-r--r--arch/arm/boards/phytec-phyflex-am335x/lowlevel.c2
-rw-r--r--arch/arm/boards/phytec-phyflex-imx6/lowlevel.c2
-rw-r--r--arch/arm/boards/plathome-openblocks-a6/lowlevel.c2
-rw-r--r--arch/arm/boards/plathome-openblocks-ax3/lowlevel.c2
-rw-r--r--arch/arm/boards/pm9261/init.c1
-rw-r--r--arch/arm/boards/pm9263/init.c1
-rw-r--r--arch/arm/boards/pm9g45/init.c1
-rw-r--r--arch/arm/boards/qil-a926x/init.c3
-rw-r--r--arch/arm/boards/radxa-rock/lowlevel.c2
-rw-r--r--arch/arm/boards/raspberry-pi/lowlevel.c2
-rw-r--r--arch/arm/boards/sama5d3_xplained/init.c2
-rw-r--r--arch/arm/boards/sama5d3xek/init.c2
-rw-r--r--arch/arm/boards/sama5d4_xplained/sama5d4_xplained.c2
-rw-r--r--arch/arm/boards/sama5d4ek/sama5d4ek.c2
-rw-r--r--arch/arm/boards/solidrun-cubox/lowlevel.c2
-rw-r--r--arch/arm/boards/solidrun-microsom/board.c2
-rw-r--r--arch/arm/boards/solidrun-microsom/lowlevel.c2
-rw-r--r--arch/arm/boards/telit-evk-pro3/init.c2
-rw-r--r--arch/arm/boards/terasic-sockit/board.c2
-rw-r--r--arch/arm/boards/terasic-sockit/lowlevel.c2
-rw-r--r--arch/arm/boards/tny-a926x/init.c3
-rw-r--r--arch/arm/boards/toradex-colibri-t20/entry.c2
-rw-r--r--arch/arm/boards/toshiba-ac100/board.c2
-rw-r--r--arch/arm/boards/toshiba-ac100/entry.c2
-rw-r--r--arch/arm/boards/tqma6x/board.c2
-rw-r--r--arch/arm/boards/tqma6x/lowlevel.c2
-rw-r--r--arch/arm/boards/udoo/board.c2
-rw-r--r--arch/arm/boards/udoo/lowlevel.c2
-rw-r--r--arch/arm/boards/usb-a926x/init.c3
-rw-r--r--arch/arm/boards/usi-topkick/lowlevel.c2
-rw-r--r--arch/arm/boards/variscite-mx6/board.c2
-rw-r--r--arch/arm/boards/variscite-mx6/lowlevel.c2
l---------arch/arm/boards/versatile/env/boot.d/001-nor1
l---------arch/arm/boards/versatile/env/boot.d/101-nor-update1
-rw-r--r--arch/arm/boards/versatile/env/boot/nor15
-rw-r--r--arch/arm/boards/versatile/env/boot/nor-update14
-rw-r--r--arch/arm/boards/versatile/env/config38
-rw-r--r--arch/arm/boards/versatile/env/init/automount11
-rw-r--r--arch/arm/boards/versatile/env/init/mtdparts-nor11
-rw-r--r--arch/arm/boards/versatile/env/init/ps17
-rw-r--r--arch/arm/boards/versatile/env/nv/boot.default1
-rw-r--r--arch/arm/boards/versatile/env/nv/linux.bootargs.base1
-rw-r--r--arch/arm/boards/versatile/lowlevel.c2
-rw-r--r--arch/arm/boards/versatile/versatilepb.c21
-rw-r--r--arch/arm/boards/vexpress/init.c2
-rw-r--r--arch/arm/boards/vexpress/lowlevel.c2
-rw-r--r--arch/arm/boards/virt2real/lowlevel.c2
-rw-r--r--arch/arm/configs/rpi_defconfig1
-rw-r--r--arch/arm/configs/versatilepb_arm1176_defconfig99
-rw-r--r--arch/arm/configs/versatilepb_defconfig31
-rw-r--r--arch/arm/cpu/common.c2
-rw-r--r--arch/arm/cpu/lowlevel.S38
-rw-r--r--arch/arm/cpu/mmu-early.c2
-rw-r--r--arch/arm/cpu/mmu.c2
-rw-r--r--arch/arm/cpu/start-pbl.c2
-rw-r--r--arch/arm/cpu/start.c2
-rw-r--r--arch/arm/cpu/uncompress.c2
-rw-r--r--arch/arm/dts/am335x-bone-common.dts16
-rw-r--r--arch/arm/dts/am335x-phytec-phycore-som.dtsi2
-rw-r--r--arch/arm/dts/am335x-phytec-phyflex.dts2
-rw-r--r--arch/arm/include/asm/barebox-arm.h4
-rw-r--r--arch/arm/include/asm/debug_ll_pl011.h25
-rw-r--r--arch/arm/include/asm/system_info.h2
-rw-r--r--arch/arm/lib/asm-offsets.c16
-rw-r--r--arch/arm/lib/bootm.c2
-rw-r--r--arch/arm/lib/bootz.c2
-rw-r--r--arch/arm/lib/pbl.lds.S2
-rw-r--r--arch/arm/mach-at91/at91rm9200_devices.c2
-rw-r--r--arch/arm/mach-at91/at91sam9260_devices.c2
-rw-r--r--arch/arm/mach-at91/at91sam9260_lowlevel_init.c2
-rw-r--r--arch/arm/mach-at91/at91sam9261_devices.c2
-rw-r--r--arch/arm/mach-at91/at91sam9261_lowlevel_init.c2
-rw-r--r--arch/arm/mach-at91/at91sam9263_devices.c2
-rw-r--r--arch/arm/mach-at91/at91sam9263_lowlevel_init.c2
-rw-r--r--arch/arm/mach-at91/at91sam926x_lowlevel_init.c2
-rw-r--r--arch/arm/mach-at91/at91sam926x_time.c6
-rw-r--r--arch/arm/mach-at91/at91sam9g45_devices.c2
-rw-r--r--arch/arm/mach-at91/at91sam9g45_lowlevel_init.c2
-rw-r--r--arch/arm/mach-at91/at91sam9n12_devices.c2
-rw-r--r--arch/arm/mach-at91/at91sam9n12_lowlevel_init.c2
-rw-r--r--arch/arm/mach-at91/at91sam9x5_devices.c2
-rw-r--r--arch/arm/mach-at91/at91sam9x5_lowlevel_init.c2
-rw-r--r--arch/arm/mach-at91/bootstrap.c2
-rw-r--r--arch/arm/mach-at91/include/mach/board.h2
-rw-r--r--arch/arm/mach-at91/sama5d3_devices.c2
-rw-r--r--arch/arm/mach-at91/sama5d3_lowlevel_init.c2
-rw-r--r--arch/arm/mach-at91/sama5d4_devices.c2
-rw-r--r--arch/arm/mach-bcm2835/core.c2
-rw-r--r--arch/arm/mach-bcm2835/include/mach/debug_ll.h27
-rw-r--r--arch/arm/mach-clps711x/clock.c2
-rw-r--r--arch/arm/mach-clps711x/devices.c2
-rw-r--r--arch/arm/mach-clps711x/lowlevel.c2
-rw-r--r--arch/arm/mach-ep93xx/lowlevel_init.S2
-rw-r--r--arch/arm/mach-highbank/devices.c2
-rw-r--r--arch/arm/mach-highbank/include/mach/debug_ll.h16
-rw-r--r--arch/arm/mach-imx/Kconfig3
-rw-r--r--arch/arm/mach-imx/esdctl.c2
-rw-r--r--arch/arm/mach-imx/imx-bbu-external-nand.c2
-rw-r--r--arch/arm/mach-imx/imx-bbu-internal.c2
-rw-r--r--arch/arm/mach-imx/imx25.c2
-rw-r--r--arch/arm/mach-imx/imx27.c2
-rw-r--r--arch/arm/mach-imx/imx31.c2
-rw-r--r--arch/arm/mach-imx/imx35.c2
-rw-r--r--arch/arm/mach-imx/imx5.c2
-rw-r--r--arch/arm/mach-imx/imx51.c2
-rw-r--r--arch/arm/mach-imx/imx53.c2
-rw-r--r--arch/arm/mach-imx/imx6-bbu-nand.c2
-rw-r--r--arch/arm/mach-imx/imx6.c2
-rw-r--r--arch/arm/mach-imx/include/mach/devices-imx51.h2
-rw-r--r--arch/arm/mach-imx/include/mach/imx31-regs.h2
-rw-r--r--arch/arm/mach-imx/include/mach/imx35-regs.h2
-rw-r--r--arch/arm/mach-mvebu/lowlevel.c2
-rw-r--r--arch/arm/mach-mxs/bcb.c2
-rw-r--r--arch/arm/mach-mxs/include/mach/devices.h2
-rw-r--r--arch/arm/mach-omap/am33xx_scrm.c2
-rw-r--r--arch/arm/mach-omap/include/mach/am33xx-devices.h2
-rw-r--r--arch/arm/mach-omap/include/mach/am33xx-silicon.h2
-rw-r--r--arch/arm/mach-omap/include/mach/omap3-devices.h2
-rw-r--r--arch/arm/mach-omap/include/mach/omap3-generic.h2
-rw-r--r--arch/arm/mach-omap/include/mach/omap4-devices.h2
-rw-r--r--arch/arm/mach-omap/xload.c2
-rw-r--r--arch/arm/mach-samsung/lowlevel-s3c24x0.S2
-rw-r--r--arch/arm/mach-samsung/mem-s3c24x0.c2
-rw-r--r--arch/arm/mach-socfpga/xload.c2
-rw-r--r--arch/arm/mach-tegra/include/mach/iomap.h2
-rw-r--r--arch/arm/mach-tegra/include/mach/lowlevel.h2
-rw-r--r--arch/arm/mach-tegra/tegra_maincomplex_init.c2
-rw-r--r--arch/arm/mach-versatile/Kconfig19
-rw-r--r--arch/arm/mach-versatile/core.c2
-rw-r--r--arch/arm/mach-versatile/include/mach/debug_ll.h15
-rw-r--r--arch/arm/mach-vexpress/include/mach/debug_ll.h15
-rw-r--r--arch/blackfin/lib/asm-offsets.c12
-rw-r--r--arch/efi/efi/efi-device.c2
-rw-r--r--arch/efi/efi/efi-image.c2
-rw-r--r--arch/efi/efi/efi.c20
-rw-r--r--arch/efi/lib/asm-offsets.c12
-rw-r--r--arch/mips/Makefile43
-rw-r--r--arch/mips/boards/netgear-wg102/ram.c2
-rw-r--r--arch/mips/boards/qemu-malta/init.c2
-rw-r--r--arch/mips/boot/main_entry-pbl.c2
-rw-r--r--arch/nios2/lib/asm-offsets.c22
-rw-r--r--arch/openrisc/lib/asm-offsets.c18
-rw-r--r--arch/ppc/boards/pcm030/pcm030.c2
-rw-r--r--arch/ppc/lib/asm-offsets.c21
-rw-r--r--arch/sandbox/lib/asm-offsets.c12
-rw-r--r--arch/x86/lib/asm-offsets.c11
-rw-r--r--commands/loadxy.c6
-rw-r--r--common/clock.c20
-rw-r--r--common/efi-devicepath.c15
-rw-r--r--common/memtest.c2
-rw-r--r--common/startup.c6
-rw-r--r--drivers/ata/ahci.c2
-rw-r--r--drivers/base/driver.c18
-rw-r--r--drivers/bus/omap-gpmc.c2
-rw-r--r--drivers/clocksource/Kconfig27
-rw-r--r--drivers/clocksource/Makefile1
-rw-r--r--drivers/clocksource/dummy.c55
-rw-r--r--drivers/i2c/busses/i2c-omap.c11
-rw-r--r--drivers/mtd/nand/nand_ids.c2
-rw-r--r--drivers/net/cpsw.c29
-rw-r--r--drivers/net/mvneta.c2
-rw-r--r--drivers/net/orion-gbe.c2
-rw-r--r--drivers/net/rtl8169.c24
-rw-r--r--drivers/net/smc91111.c101
-rw-r--r--drivers/of/base.c2
-rw-r--r--drivers/of/fdt.c2
-rw-r--r--drivers/pci/pci-mvebu.c2
-rw-r--r--drivers/pci/pci-tegra.c2
-rw-r--r--drivers/pci/pci.c2
-rw-r--r--drivers/pinctrl/mvebu/armada-370.c2
-rw-r--r--drivers/pinctrl/mvebu/armada-xp.c2
-rw-r--r--drivers/pinctrl/mvebu/dove.c2
-rw-r--r--drivers/pinctrl/pinctrl-at91.c6
-rw-r--r--drivers/serial/atmel.c6
-rw-r--r--drivers/usb/gadget/f_fastboot.c5
-rw-r--r--drivers/video/imx-ipu-v3/imx-hdmi.c20
-rw-r--r--fs/efivarfs.c246
-rw-r--r--fs/nfs.c2
-rw-r--r--fs/tftp.c2
-rw-r--r--include/driver.h8
-rw-r--r--include/efi.h19
-rw-r--r--include/linux/amba/sp804.h2
-rw-r--r--include/linux/sizes.h (renamed from include/sizes.h)23
-rw-r--r--include/wchar.h2
-rw-r--r--lib/bootstrap/devfs.c2
-rw-r--r--lib/bootstrap/disk.c2
-rw-r--r--lib/gui/graphic_utils.c2
-rw-r--r--lib/wchar.c16
301 files changed, 1195 insertions, 699 deletions
diff --git a/.gitignore b/.gitignore
index 5d9157d85d..03c5e20189 100644
--- a/.gitignore
+++ b/.gitignore
@@ -61,7 +61,6 @@ barebox_default_env*
#
# Generated include files
#
-include/asm
include/asm-*/asm-offsets.h
include/config
include/linux/compile.h
diff --git a/Documentation/boards/bcm2835.rst b/Documentation/boards/bcm2835.rst
new file mode 100644
index 0000000000..13cebb01c4
--- /dev/null
+++ b/Documentation/boards/bcm2835.rst
@@ -0,0 +1,17 @@
+Broadcom BCM2835
+================
+
+Raspberry Pi
+------------
+
+ 1. Prepare a card with a FAT filesystem. Download a tiny NOOBS LITE
+ zip archive and unpack it into FAT partition.
+ See http://www.raspberrypi.org/help/noobs-setup/ for details.
+
+ 2. Compile ``barebox.bin`` image (use ``rpi_defconfig``).
+ Copy it to the SD/microSD card and name it ``recovery.img``.
+
+ 3. Connect to board's UART (115200 8N1);
+ Use PIN6 (GND), PIN8 (UART_TX), PIN10 (UART_RX) pins.
+
+ 4. Turn board's power on.
diff --git a/Kbuild b/Kbuild
new file mode 100644
index 0000000000..329609604f
--- /dev/null
+++ b/Kbuild
@@ -0,0 +1,43 @@
+#####
+# 1) Generate asm-offsets.h
+#
+
+offsets-file := include/generated/asm-offsets.h
+
+always += $(offsets-file)
+targets += $(offsets-file)
+targets += arch/$(SRCARCH)/lib/asm-offsets.s
+
+
+# Default sed regexp - multiline due to syntax constraints
+define sed-y
+ "/^->/{s:->#\(.*\):/* \1 */:; \
+ s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
+ s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
+ s:->::; p;}"
+endef
+
+quiet_cmd_offsets = GEN $@
+define cmd_offsets
+ (set -e; \
+ echo "#ifndef __ASM_OFFSETS_H__"; \
+ echo "#define __ASM_OFFSETS_H__"; \
+ echo "/*"; \
+ echo " * DO NOT MODIFY."; \
+ echo " *"; \
+ echo " * This file was generated by Kbuild"; \
+ echo " *"; \
+ echo " */"; \
+ echo ""; \
+ sed -ne $(sed-y) $<; \
+ echo ""; \
+ echo "#endif" ) > $@
+endef
+
+# We use internal kbuild rules to avoid the "is up to date" message from make
+arch/$(SRCARCH)/lib/asm-offsets.s: arch/$(SRCARCH)/lib/asm-offsets.c FORCE
+ $(Q)mkdir -p $(dir $@)
+ $(call if_changed_dep,cc_s_c)
+
+$(obj)/$(offsets-file): arch/$(SRCARCH)/lib/asm-offsets.s Kbuild
+ $(call cmd,offsets)
diff --git a/Makefile b/Makefile
index df5cf49de8..90a7eeee65 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
-VERSION = 2014
-PATCHLEVEL = 12
+VERSION = 2015
+PATCHLEVEL = 01
SUBLEVEL = 0
EXTRAVERSION =
NAME = None
@@ -112,9 +112,10 @@ ifneq ($(KBUILD_OUTPUT),)
# Invoke a second make in the output directory, passing relevant variables
# check that the output directory actually exists
saved-output := $(KBUILD_OUTPUT)
-KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
+KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
+ && /bin/pwd)
$(if $(KBUILD_OUTPUT),, \
- $(error output directory "$(saved-output)" does not exist))
+ $(error failed to create output directory "$(saved-output)"))
PHONY += $(MAKECMDGOALS)
@@ -291,10 +292,9 @@ export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_ve
# Use LINUXINCLUDE when you must reference the include/ directory.
# Needed to be compatible with the O= option
LINUXINCLUDE := -Iinclude -I$(srctree)/dts/include \
- $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
+ $(if $(KBUILD_SRC), -I$(srctree)/include) \
-I$(srctree)/arch/$(ARCH)/include \
-I$(objtree)/arch/$(ARCH)/include \
- -include include/generated/autoconf.h \
-include $(srctree)/include/linux/kconfig.h
CPPFLAGS := -D__KERNEL__ -D__BAREBOX__ $(LINUXINCLUDE) -fno-builtin -ffreestanding
@@ -790,7 +790,6 @@ PHONY += prepare-all
# prepare3 is used to check if we are building in a separate output directory,
# and if so do:
# 1) Check that make has not been executed in the kernel src $(srctree)
-# 2) Create the include2 directory, used for the second asm symlink
prepare3: include/config/kernel.release
ifneq ($(KBUILD_SRC),)
@echo ' Using $(srctree) as source for kernel'
@@ -799,17 +798,13 @@ ifneq ($(KBUILD_SRC),)
echo " in the '$(srctree)' directory.";\
false; \
fi;
- $(Q)if [ ! -d include2 ]; then mkdir -p include2; fi;
- $(Q)if [ -e $(srctree)/include/asm-$(SRCARCH)/barebox.h ]; then \
- ln -fsn $(srctree)/include/asm-$(SRCARCH) include2/asm; \
- fi
endif
# prepare2 creates a makefile if using a separate output directory
prepare2: prepare3 outputmakefile
prepare1: prepare2 include/generated/version.h include/generated/utsrelease.h \
- include/asm include/config.h include/config/auto.conf
+ include/config.h include/config/auto.conf
ifneq ($(KBUILD_MODULES),)
$(Q)mkdir -p $(MODVERDIR)
@@ -829,39 +824,6 @@ prepare prepare-all: prepare0
export CPPFLAGS_barebox.lds += -C -U$(ARCH)
-# FIXME: The asm symlink changes when $(ARCH) changes. That's
-# hard to detect, but I suppose "make mrproper" is a good idea
-# before switching between archs anyway.
-
-define check-symlink
- set -e; \
- if [ -L include/asm ]; then \
- asmlink=`readlink include/asm | cut -d '-' -f 2`; \
- if [ "$$asmlink" != "$(SRCARCH)" ]; then \
- echo "ERROR: the symlink $@ points to asm-$$asmlink but asm-$(SRCARCH) was expected"; \
- echo " set ARCH or save .config and run 'make mrproper' to fix it"; \
- exit 1; \
- fi; \
- fi
-endef
-
-# We create the target directory of the symlink if it does
-# not exist so the test in chack-symlink works and we have a
-# directory for generated filesas used by some architectures.
-define create-symlink
- if [ ! -L include/asm ]; then \
- $(kecho) ' SYMLINK $@ -> include/asm-$(SRCARCH)'; \
- if [ ! -d include/asm-$(SRCARCH) ]; then \
- mkdir -p include/asm-$(SRCARCH); \
- fi; \
- ln -fsn asm-$(SRCARCH) $@; \
- fi
-endef
-
-include/asm:
- $(Q)$(check-symlink)
- $(Q)$(create-symlink)
-
define symlink-config-h
if [ -f $(srctree)/$(BOARD)/config.h ]; then \
$(kecho) ' SYMLINK $@ -> $(BOARD)/config.h'; \
@@ -998,10 +960,9 @@ CLEAN_FILES += barebox System.map include/generated/barebox_default_env.h \
barebox.efi barebox.canon-a1100.bin
# Directories & files removed with 'make mrproper'
-MRPROPER_DIRS += include/config include2 usr/include
-MRPROPER_FILES += .config .config.old include/asm .version .old_version \
- include/generated/autoconf.h include/generated/version.h \
- include/generated/utsrelease.h include/config.h \
+MRPROPER_DIRS += include/config usr/include include/generated
+MRPROPER_FILES += .config .config.old .version .old_version \
+ include/config.h \
Module.symvers tags TAGS cscope*
# clean - Delete most, but leave enough to build external modules
diff --git a/TODO b/TODO
index 6350799e67..8527e577e0 100644
--- a/TODO
+++ b/TODO
@@ -4,7 +4,6 @@ TODO
[ ] ask jbe about:
./commands/Makefile:40:obj-$(CONFIG_SIMPLE_PARSER) += setenv.o
[ ] bark on partition not ending on flash sector boundaries
-[ ] distclean doesn't work without a config
[ ] Every driver should have a remove function.
(It must have. Currently there is no provision to given to remove my
interrupt handlers and to reset all hardware in use, before the target
@@ -108,3 +107,4 @@ DONE
countdown -m msg -t timeout -x [ctrl-c|anykey|string]
If done, remove the corresponding stuff from common/main.c
[X] Board support should go to arch/*/boards/*
+[X] distclean doesn't work without a config
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 4aa6afec1e..09bbe05bad 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -53,6 +53,7 @@ config ARCH_BCM2835
select COMMON_CLK
select CLOCKSOURCE_BCM2835
select ARM_AMBA
+ select HAS_DEBUG_LL
config ARCH_CLPS711X
bool "Cirrus Logic EP711x/EP721x/EP731x"
@@ -188,9 +189,9 @@ config ARCH_S3C64xx
config ARCH_VERSATILE
bool "ARM Versatile boards (ARM926EJ-S)"
- select CPU_ARM926T
select GPIOLIB
select HAVE_CLK
+ select HAS_DEBUG_LL
config ARCH_VEXPRESS
bool "ARM Vexpres boards"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index cf81c9c083..193f731e90 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -105,11 +105,9 @@ TEXT_BASE = $(CONFIG_TEXT_BASE)
CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
-ifndef CONFIG_MODULES
# Add cleanup flags
CPPFLAGS += -fdata-sections -ffunction-sections
LDFLAGS_barebox += -static --gc-sections
-endif
ifdef CONFIG_RELOCATABLE
LDFLAGS_barebox += -pie
diff --git a/arch/arm/boards/a9m2410/lowlevel_init.S b/arch/arm/boards/a9m2410/lowlevel_init.S
index 57d63e8de3..b772b1f7f0 100644
--- a/arch/arm/boards/a9m2410/lowlevel_init.S
+++ b/arch/arm/boards/a9m2410/lowlevel_init.S
@@ -3,7 +3,7 @@
*/
#include <config.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/s3c-iomap.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/boards/a9m2440/lowlevel_init.S b/arch/arm/boards/a9m2440/lowlevel_init.S
index 87112011bc..2c51e05806 100644
--- a/arch/arm/boards/a9m2440/lowlevel_init.S
+++ b/arch/arm/boards/a9m2440/lowlevel_init.S
@@ -3,7 +3,7 @@
*/
#include <config.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/s3c-iomap.h>
#include <mach/s3c24xx-gpio.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/boards/afi-gf/board.c b/arch/arm/boards/afi-gf/board.c
index dfcb579f24..14e2603910 100644
--- a/arch/arm/boards/afi-gf/board.c
+++ b/arch/arm/boards/afi-gf/board.c
@@ -16,7 +16,7 @@
#include <common.h>
#include <string.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <envfs.h>
#include <bootsource.h>
#include <asm/armlinux.h>
diff --git a/arch/arm/boards/afi-gf/lowlevel.c b/arch/arm/boards/afi-gf/lowlevel.c
index fdc340c057..4aaecb9e88 100644
--- a/arch/arm/boards/afi-gf/lowlevel.c
+++ b/arch/arm/boards/afi-gf/lowlevel.c
@@ -1,5 +1,5 @@
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <asm/armlinux.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/boards/animeo_ip/init.c b/arch/arm/boards/animeo_ip/init.c
index ca64d6df83..0fda01363c 100644
--- a/arch/arm/boards/animeo_ip/init.c
+++ b/arch/arm/boards/animeo_ip/init.c
@@ -17,7 +17,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <linux/clk.h>
#include <mach/board.h>
@@ -93,6 +93,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PC13,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
.bus_width_16 = 0,
.on_flash_bbt = 1,
};
diff --git a/arch/arm/boards/archosg9/board.c b/arch/arm/boards/archosg9/board.c
index 114c34ec24..0a3c0b9d98 100644
--- a/arch/arm/boards/archosg9/board.c
+++ b/arch/arm/boards/archosg9/board.c
@@ -18,7 +18,7 @@
#include <mach/omap4-silicon.h>
#include <mach/omap4-devices.h>
#include <mach/omap4_rom_usb.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <i2c/i2c.h>
#include <gpio.h>
#include <gpio_keys.h>
diff --git a/arch/arm/boards/archosg9/lowlevel.c b/arch/arm/boards/archosg9/lowlevel.c
index 6813e0d18a..c76d04b905 100644
--- a/arch/arm/boards/archosg9/lowlevel.c
+++ b/arch/arm/boards/archosg9/lowlevel.c
@@ -13,7 +13,7 @@
#include <common.h>
#include <io.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <mach/omap4-mux.h>
#include <mach/omap4-silicon.h>
diff --git a/arch/arm/boards/at91rm9200ek/init.c b/arch/arm/boards/at91rm9200ek/init.c
index c444669ff8..43c8b1b055 100644
--- a/arch/arm/boards/at91rm9200ek/init.c
+++ b/arch/arm/boards/at91rm9200ek/init.c
@@ -25,7 +25,7 @@
#include <gpio.h>
#include <fcntl.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/hardware.h>
#include <mach/at91_pmc.h>
#include <mach/board.h>
diff --git a/arch/arm/boards/at91sam9260ek/init.c b/arch/arm/boards/at91sam9260ek/init.c
index bc0c411d3a..422feb2098 100644
--- a/arch/arm/boards/at91sam9260ek/init.c
+++ b/arch/arm/boards/at91sam9260ek/init.c
@@ -19,7 +19,7 @@
#include <generated/mach-types.h>
#include <nand.h>
#include <linux/mtd/nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/board.h>
#include <mach/at91sam9_smc.h>
#include <gpio.h>
diff --git a/arch/arm/boards/at91sam9261ek/init.c b/arch/arm/boards/at91sam9261ek/init.c
index 7b8ce98d5d..a0b0219191 100644
--- a/arch/arm/boards/at91sam9261ek/init.c
+++ b/arch/arm/boards/at91sam9261ek/init.c
@@ -26,7 +26,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <mach/at91_pmc.h>
#include <mach/board.h>
diff --git a/arch/arm/boards/at91sam9263ek/init.c b/arch/arm/boards/at91sam9263ek/init.c
index c8a9d5c005..3bb2ddafa3 100644
--- a/arch/arm/boards/at91sam9263ek/init.c
+++ b/arch/arm/boards/at91sam9263ek/init.c
@@ -28,7 +28,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <mach/at91_pmc.h>
#include <mach/board.h>
diff --git a/arch/arm/boards/at91sam9m10g45ek/init.c b/arch/arm/boards/at91sam9m10g45ek/init.c
index cdd7806848..e00908bc39 100644
--- a/arch/arm/boards/at91sam9m10g45ek/init.c
+++ b/arch/arm/boards/at91sam9m10g45ek/init.c
@@ -30,7 +30,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <mach/at91_pmc.h>
#include <mach/board.h>
diff --git a/arch/arm/boards/at91sam9m10ihd/init.c b/arch/arm/boards/at91sam9m10ihd/init.c
index a432e5c411..dcd93c10b3 100644
--- a/arch/arm/boards/at91sam9m10ihd/init.c
+++ b/arch/arm/boards/at91sam9m10ihd/init.c
@@ -17,7 +17,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <mach/board.h>
#include <gpio.h>
diff --git a/arch/arm/boards/at91sam9n12ek/init.c b/arch/arm/boards/at91sam9n12ek/init.c
index 818a598907..26d08ae659 100644
--- a/arch/arm/boards/at91sam9n12ek/init.c
+++ b/arch/arm/boards/at91sam9n12ek/init.c
@@ -27,7 +27,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <mach/board.h>
#include <mach/at91sam9_smc.h>
diff --git a/arch/arm/boards/at91sam9x5ek/init.c b/arch/arm/boards/at91sam9x5ek/init.c
index 183ddc7052..e0c11a11e1 100644
--- a/arch/arm/boards/at91sam9x5ek/init.c
+++ b/arch/arm/boards/at91sam9x5ek/init.c
@@ -27,7 +27,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <mach/board.h>
#include <mach/at91sam9_smc.h>
diff --git a/arch/arm/boards/avnet-zedboard/board.c b/arch/arm/boards/avnet-zedboard/board.c
index ef9a8a878c..722bda302e 100644
--- a/arch/arm/boards/avnet-zedboard/board.c
+++ b/arch/arm/boards/avnet-zedboard/board.c
@@ -19,7 +19,7 @@
#include <init.h>
#include <mach/devices.h>
#include <mach/zynq7000-regs.h>
-#include <sizes.h>
+#include <linux/sizes.h>
static int zedboard_mem_init(void)
{
diff --git a/arch/arm/boards/beagle/board.c b/arch/arm/boards/beagle/board.c
index 4054960581..775621069c 100644
--- a/arch/arm/boards/beagle/board.c
+++ b/arch/arm/boards/beagle/board.c
@@ -19,7 +19,7 @@
#include <console.h>
#include <init.h>
#include <driver.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <ns16550.h>
#include <asm/armlinux.h>
diff --git a/arch/arm/boards/beagle/lowlevel.c b/arch/arm/boards/beagle/lowlevel.c
index 62c98a9cec..d6e6b9f91c 100644
--- a/arch/arm/boards/beagle/lowlevel.c
+++ b/arch/arm/boards/beagle/lowlevel.c
@@ -1,6 +1,6 @@
#include <init.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <mach/control.h>
diff --git a/arch/arm/boards/beaglebone/board.c b/arch/arm/boards/beaglebone/board.c
index 3042189f6d..4e0e3745bb 100644
--- a/arch/arm/boards/beaglebone/board.c
+++ b/arch/arm/boards/beaglebone/board.c
@@ -27,7 +27,7 @@
#include <envfs.h>
#include <environment.h>
#include <globalvar.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <net.h>
#include <envfs.h>
#include <bootsource.h>
@@ -92,6 +92,9 @@ static int beaglebone_devices_init(void)
armlinux_set_architecture(MACH_TYPE_BEAGLEBONE);
+ if (IS_ENABLED(CONFIG_SHELL_NONE))
+ return am33xx_of_register_bootdevice();
+
return 0;
}
coredevice_initcall(beaglebone_devices_init);
diff --git a/arch/arm/boards/beaglebone/lowlevel.c b/arch/arm/boards/beaglebone/lowlevel.c
index a742bbf7af..05b3e5f157 100644
--- a/arch/arm/boards/beaglebone/lowlevel.c
+++ b/arch/arm/boards/beaglebone/lowlevel.c
@@ -1,5 +1,5 @@
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <linux/string.h>
#include <debug_ll.h>
diff --git a/arch/arm/boards/boundarydevices-nitrogen6x/lowlevel.c b/arch/arm/boards/boundarydevices-nitrogen6x/lowlevel.c
index a32e29c3e4..7d859330f9 100644
--- a/arch/arm/boards/boundarydevices-nitrogen6x/lowlevel.c
+++ b/arch/arm/boards/boundarydevices-nitrogen6x/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/canon-a1100/lowlevel.c b/arch/arm/boards/canon-a1100/lowlevel.c
index bbae825661..5f4297ea4c 100644
--- a/arch/arm/boards/canon-a1100/lowlevel.c
+++ b/arch/arm/boards/canon-a1100/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/ccxmx51/ccxmx51.c b/arch/arm/boards/ccxmx51/ccxmx51.c
index 0960d1ecf7..40cf76dc5a 100644
--- a/arch/arm/boards/ccxmx51/ccxmx51.c
+++ b/arch/arm/boards/ccxmx51/ccxmx51.c
@@ -26,7 +26,7 @@
#include <partition.h>
#include <fs.h>
#include <fcntl.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <nand.h>
#include <notifier.h>
#include <spi/spi.h>
diff --git a/arch/arm/boards/chumby_falconwing/falconwing.c b/arch/arm/boards/chumby_falconwing/falconwing.c
index 2e5fca5f50..5e569bcc9a 100644
--- a/arch/arm/boards/chumby_falconwing/falconwing.c
+++ b/arch/arm/boards/chumby_falconwing/falconwing.c
@@ -19,7 +19,7 @@
#include <envfs.h>
#include <errno.h>
#include <mci.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <usb/ehci.h>
#include <asm/armlinux.h>
#include <io.h>
diff --git a/arch/arm/boards/chumby_falconwing/lowlevel.c b/arch/arm/boards/chumby_falconwing/lowlevel.c
index d26562c02b..bfc76cc7d4 100644
--- a/arch/arm/boards/chumby_falconwing/lowlevel.c
+++ b/arch/arm/boards/chumby_falconwing/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <mach/imx23-regs.h>
diff --git a/arch/arm/boards/clep7212/clep7212.c b/arch/arm/boards/clep7212/clep7212.c
index e521643912..de125ea9ee 100644
--- a/arch/arm/boards/clep7212/clep7212.c
+++ b/arch/arm/boards/clep7212/clep7212.c
@@ -12,7 +12,7 @@
#include <init.h>
#include <partition.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/armlinux.h>
#include <asm/mmu.h>
#include <generated/mach-types.h>
diff --git a/arch/arm/boards/crystalfontz-cfa10036/cfa10036.c b/arch/arm/boards/crystalfontz-cfa10036/cfa10036.c
index e6ebe82076..1412eff4a7 100644
--- a/arch/arm/boards/crystalfontz-cfa10036/cfa10036.c
+++ b/arch/arm/boards/crystalfontz-cfa10036/cfa10036.c
@@ -25,7 +25,7 @@
#include <mci.h>
#include <io.h>
#include <net.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <i2c/i2c.h>
#include <i2c/i2c-gpio.h>
diff --git a/arch/arm/boards/crystalfontz-cfa10036/lowlevel.c b/arch/arm/boards/crystalfontz-cfa10036/lowlevel.c
index aa3b09b2ee..3c7248ef65 100644
--- a/arch/arm/boards/crystalfontz-cfa10036/lowlevel.c
+++ b/arch/arm/boards/crystalfontz-cfa10036/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <mach/imx28-regs.h>
diff --git a/arch/arm/boards/datamodul-edm-qmx6/Makefile b/arch/arm/boards/datamodul-edm-qmx6/Makefile
index bb6d9d848d..01c7a259e9 100644
--- a/arch/arm/boards/datamodul-edm-qmx6/Makefile
+++ b/arch/arm/boards/datamodul-edm-qmx6/Makefile
@@ -1,2 +1,2 @@
-obj-y += board.o lowlevel.o
-pbl-y += lowlevel.o
+obj-y += board.o
+lwl-y += lowlevel.o
diff --git a/arch/arm/boards/datamodul-edm-qmx6/board.c b/arch/arm/boards/datamodul-edm-qmx6/board.c
index 25f45dfcc0..81356e61c0 100644
--- a/arch/arm/boards/datamodul-edm-qmx6/board.c
+++ b/arch/arm/boards/datamodul-edm-qmx6/board.c
@@ -23,7 +23,7 @@
#include <partition.h>
#include <common.h>
#include <envfs.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <init.h>
#include <gpio.h>
#include <fec.h>
diff --git a/arch/arm/boards/datamodul-edm-qmx6/lowlevel.c b/arch/arm/boards/datamodul-edm-qmx6/lowlevel.c
index 914c275b88..28b4aa280d 100644
--- a/arch/arm/boards/datamodul-edm-qmx6/lowlevel.c
+++ b/arch/arm/boards/datamodul-edm-qmx6/lowlevel.c
@@ -13,7 +13,7 @@
*
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <debug_ll.h>
#include <asm/sections.h>
diff --git a/arch/arm/boards/dfi-fs700-m60/board.c b/arch/arm/boards/dfi-fs700-m60/board.c
index e0dc5b242e..bef4612d9e 100644
--- a/arch/arm/boards/dfi-fs700-m60/board.c
+++ b/arch/arm/boards/dfi-fs700-m60/board.c
@@ -23,7 +23,7 @@
#include <bootsource.h>
#include <globalvar.h>
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <envfs.h>
#include <init.h>
#include <gpio.h>
diff --git a/arch/arm/boards/dfi-fs700-m60/lowlevel.c b/arch/arm/boards/dfi-fs700-m60/lowlevel.c
index 81b3530468..b9b498e463 100644
--- a/arch/arm/boards/dfi-fs700-m60/lowlevel.c
+++ b/arch/arm/boards/dfi-fs700-m60/lowlevel.c
@@ -13,7 +13,7 @@
*
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <asm/sections.h>
#include <asm/mmu.h>
diff --git a/arch/arm/boards/ebv-socrates/board.c b/arch/arm/boards/ebv-socrates/board.c
index b2f62dc2f3..5d2d619914 100644
--- a/arch/arm/boards/ebv-socrates/board.c
+++ b/arch/arm/boards/ebv-socrates/board.c
@@ -5,7 +5,7 @@
#include <asm/armlinux.h>
#include <linux/micrel_phy.h>
#include <linux/phy.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <fcntl.h>
#include <fs.h>
#include <mach/socfpga-regs.h>
diff --git a/arch/arm/boards/ebv-socrates/lowlevel.c b/arch/arm/boards/ebv-socrates/lowlevel.c
index 7fc81678ef..66cb226b21 100644
--- a/arch/arm/boards/ebv-socrates/lowlevel.c
+++ b/arch/arm/boards/ebv-socrates/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/efika-mx-smartbook/board.c b/arch/arm/boards/efika-mx-smartbook/board.c
index 99efd666f9..4a38afd27b 100644
--- a/arch/arm/boards/efika-mx-smartbook/board.c
+++ b/arch/arm/boards/efika-mx-smartbook/board.c
@@ -246,6 +246,8 @@ static int efikamx_late_init(void)
for (i = 0; i < ARRAY_SIZE(leds); i++)
led_gpio_register(&leds[i]);
+ led_set_trigger(LED_TRIGGER_HEARTBEAT, &leds[0].led);
+
writew(0x0, MX51_WDOG_BASE_ADDR + 0x8);
imx51_bbu_internal_mmc_register_handler("mmc", "/dev/mmc1",
diff --git a/arch/arm/boards/embedsky-e9/board.c b/arch/arm/boards/embedsky-e9/board.c
index 55b4320219..1e7e06788a 100644
--- a/arch/arm/boards/embedsky-e9/board.c
+++ b/arch/arm/boards/embedsky-e9/board.c
@@ -31,7 +31,7 @@
#include <asm/io.h>
#include <asm/mmu.h>
#include <mach/generic.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <net.h>
#include <mach/imx6.h>
#include <mach/devices-imx6.h>
diff --git a/arch/arm/boards/embedsky-e9/lowlevel.c b/arch/arm/boards/embedsky-e9/lowlevel.c
index fee1011700..fb1ba5f64a 100644
--- a/arch/arm/boards/embedsky-e9/lowlevel.c
+++ b/arch/arm/boards/embedsky-e9/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/embest-riotboard/board.c b/arch/arm/boards/embest-riotboard/board.c
index 3f5b4dec51..a885a08a70 100644
--- a/arch/arm/boards/embest-riotboard/board.c
+++ b/arch/arm/boards/embest-riotboard/board.c
@@ -26,7 +26,7 @@
#include <mach/imx6.h>
#include <mach/bbu.h>
#include <mfd/imx6q-iomuxc-gpr.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/phy.h>
static int ar8035_phy_fixup(struct phy_device *dev)
diff --git a/arch/arm/boards/embest-riotboard/lowlevel.c b/arch/arm/boards/embest-riotboard/lowlevel.c
index c4ef28786e..fe21b9aadc 100644
--- a/arch/arm/boards/embest-riotboard/lowlevel.c
+++ b/arch/arm/boards/embest-riotboard/lowlevel.c
@@ -1,6 +1,6 @@
#include <debug_ll.h>
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/freescale-mx21-ads/imx21ads.c b/arch/arm/boards/freescale-mx21-ads/imx21ads.c
index bd7e46e161..5f0e7bda63 100644
--- a/arch/arm/boards/freescale-mx21-ads/imx21ads.c
+++ b/arch/arm/boards/freescale-mx21-ads/imx21ads.c
@@ -30,7 +30,7 @@
#include <mach/weim.h>
#include <partition.h>
#include <fs.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <fcntl.h>
#include <generated/mach-types.h>
#include <mach/imx-nand.h>
diff --git a/arch/arm/boards/freescale-mx21-ads/lowlevel_init.S b/arch/arm/boards/freescale-mx21-ads/lowlevel_init.S
index 87b2f942ff..16739b5577 100644
--- a/arch/arm/boards/freescale-mx21-ads/lowlevel_init.S
+++ b/arch/arm/boards/freescale-mx21-ads/lowlevel_init.S
@@ -14,7 +14,7 @@
*/
#include <config.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm-generic/memory_layout.h>
#include <mach/imx21-regs.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/boards/freescale-mx23-evk/lowlevel.c b/arch/arm/boards/freescale-mx23-evk/lowlevel.c
index 2a26a7763e..b260f3a7fa 100644
--- a/arch/arm/boards/freescale-mx23-evk/lowlevel.c
+++ b/arch/arm/boards/freescale-mx23-evk/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <mach/imx23-regs.h>
diff --git a/arch/arm/boards/freescale-mx28-evk/lowlevel.c b/arch/arm/boards/freescale-mx28-evk/lowlevel.c
index aa3b09b2ee..3c7248ef65 100644
--- a/arch/arm/boards/freescale-mx28-evk/lowlevel.c
+++ b/arch/arm/boards/freescale-mx28-evk/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <mach/imx28-regs.h>
diff --git a/arch/arm/boards/freescale-mx35-3ds/3stack.c b/arch/arm/boards/freescale-mx35-3ds/3stack.c
index 8f821adb73..cca0fe49eb 100644
--- a/arch/arm/boards/freescale-mx35-3ds/3stack.c
+++ b/arch/arm/boards/freescale-mx35-3ds/3stack.c
@@ -30,7 +30,7 @@
#include <init.h>
#include <nand.h>
#include <net.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <partition.h>
#include <gpio.h>
diff --git a/arch/arm/boards/freescale-mx53-qsb/board.c b/arch/arm/boards/freescale-mx53-qsb/board.c
index 1128e686bc..f65b55658f 100644
--- a/arch/arm/boards/freescale-mx53-qsb/board.c
+++ b/arch/arm/boards/freescale-mx53-qsb/board.c
@@ -17,7 +17,7 @@
#include <environment.h>
#include <partition.h>
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <init.h>
#include <fs.h>
diff --git a/arch/arm/boards/freescale-mx53-smd/board.c b/arch/arm/boards/freescale-mx53-smd/board.c
index c81f43c158..196d20a45d 100644
--- a/arch/arm/boards/freescale-mx53-smd/board.c
+++ b/arch/arm/boards/freescale-mx53-smd/board.c
@@ -23,7 +23,7 @@
#include <nand.h>
#include <net.h>
#include <partition.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <generated/mach-types.h>
diff --git a/arch/arm/boards/freescale-mx53-vmx53/board.c b/arch/arm/boards/freescale-mx53-vmx53/board.c
index b91bfdf5ed..1859aaca26 100644
--- a/arch/arm/boards/freescale-mx53-vmx53/board.c
+++ b/arch/arm/boards/freescale-mx53-vmx53/board.c
@@ -18,7 +18,7 @@
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <generated/mach-types.h>
#include <mach/imx5.h>
diff --git a/arch/arm/boards/freescale-mx6-arm2/board.c b/arch/arm/boards/freescale-mx6-arm2/board.c
index 7a78400f2e..3d5576c065 100644
--- a/arch/arm/boards/freescale-mx6-arm2/board.c
+++ b/arch/arm/boards/freescale-mx6-arm2/board.c
@@ -25,7 +25,7 @@
#include <asm/io.h>
#include <asm/mmu.h>
#include <mach/generic.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/imx6.h>
#include <mach/devices-imx6.h>
#include <mach/iomux-mx6.h>
diff --git a/arch/arm/boards/freescale-mx6-arm2/lowlevel.c b/arch/arm/boards/freescale-mx6-arm2/lowlevel.c
index 5676711a13..f833893335 100644
--- a/arch/arm/boards/freescale-mx6-arm2/lowlevel.c
+++ b/arch/arm/boards/freescale-mx6-arm2/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <mach/generic.h>
diff --git a/arch/arm/boards/freescale-mx6-sabrelite/board.c b/arch/arm/boards/freescale-mx6-sabrelite/board.c
index 1f26548058..edf081140c 100644
--- a/arch/arm/boards/freescale-mx6-sabrelite/board.c
+++ b/arch/arm/boards/freescale-mx6-sabrelite/board.c
@@ -28,7 +28,7 @@
#include <asm/io.h>
#include <asm/mmu.h>
#include <mach/generic.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <net.h>
#include <linux/micrel_phy.h>
#include <mach/imx6.h>
diff --git a/arch/arm/boards/freescale-mx6-sabrelite/lowlevel.c b/arch/arm/boards/freescale-mx6-sabrelite/lowlevel.c
index 1b4796571a..abfb77a157 100644
--- a/arch/arm/boards/freescale-mx6-sabrelite/lowlevel.c
+++ b/arch/arm/boards/freescale-mx6-sabrelite/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/freescale-mx6-sabresd/board.c b/arch/arm/boards/freescale-mx6-sabresd/board.c
index 53aada7bba..734adde070 100644
--- a/arch/arm/boards/freescale-mx6-sabresd/board.c
+++ b/arch/arm/boards/freescale-mx6-sabresd/board.c
@@ -28,7 +28,7 @@
#include <asm/io.h>
#include <asm/mmu.h>
#include <mach/generic.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <net.h>
#include <mach/imx6.h>
#include <mach/devices-imx6.h>
diff --git a/arch/arm/boards/freescale-mx6-sabresd/lowlevel.c b/arch/arm/boards/freescale-mx6-sabresd/lowlevel.c
index bf1845912e..73eed1d068 100644
--- a/arch/arm/boards/freescale-mx6-sabresd/lowlevel.c
+++ b/arch/arm/boards/freescale-mx6-sabresd/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/freescale-mx6sx-sabresdb/board.c b/arch/arm/boards/freescale-mx6sx-sabresdb/board.c
index c21b43dc56..353b460a16 100644
--- a/arch/arm/boards/freescale-mx6sx-sabresdb/board.c
+++ b/arch/arm/boards/freescale-mx6sx-sabresdb/board.c
@@ -16,7 +16,7 @@
#include <environment.h>
#include <partition.h>
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <init.h>
#include <io.h>
diff --git a/arch/arm/boards/freescale-mx6sx-sabresdb/lowlevel.c b/arch/arm/boards/freescale-mx6sx-sabresdb/lowlevel.c
index 33f3700288..4c5a74ea63 100644
--- a/arch/arm/boards/freescale-mx6sx-sabresdb/lowlevel.c
+++ b/arch/arm/boards/freescale-mx6sx-sabresdb/lowlevel.c
@@ -14,7 +14,7 @@
#include <debug_ll.h>
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/friendlyarm-mini2440/lowlevel_init.S b/arch/arm/boards/friendlyarm-mini2440/lowlevel_init.S
index 858351b13d..43bf49c12c 100644
--- a/arch/arm/boards/friendlyarm-mini2440/lowlevel_init.S
+++ b/arch/arm/boards/friendlyarm-mini2440/lowlevel_init.S
@@ -3,7 +3,7 @@
*/
#include <config.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/s3c-iomap.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/boards/friendlyarm-mini6410/lowlevel.c b/arch/arm/boards/friendlyarm-mini6410/lowlevel.c
index a21a3f8301..665c31b324 100644
--- a/arch/arm/boards/friendlyarm-mini6410/lowlevel.c
+++ b/arch/arm/boards/friendlyarm-mini6410/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/s3c-iomap.h>
diff --git a/arch/arm/boards/friendlyarm-tiny210/lowlevel.c b/arch/arm/boards/friendlyarm-tiny210/lowlevel.c
index 7e70851043..3ab8d66060 100644
--- a/arch/arm/boards/friendlyarm-tiny210/lowlevel.c
+++ b/arch/arm/boards/friendlyarm-tiny210/lowlevel.c
@@ -19,7 +19,7 @@
#include <common.h>
#include <init.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <asm/sections.h>
diff --git a/arch/arm/boards/friendlyarm-tiny210/tiny210.c b/arch/arm/boards/friendlyarm-tiny210/tiny210.c
index a33af99aab..d84b3128ad 100644
--- a/arch/arm/boards/friendlyarm-tiny210/tiny210.c
+++ b/arch/arm/boards/friendlyarm-tiny210/tiny210.c
@@ -27,7 +27,7 @@
#include <common.h>
#include <driver.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <generated/mach-types.h>
#include <dm9000.h>
#include <gpio.h>
diff --git a/arch/arm/boards/friendlyarm-tiny6410/lowlevel.c b/arch/arm/boards/friendlyarm-tiny6410/lowlevel.c
index a21a3f8301..665c31b324 100644
--- a/arch/arm/boards/friendlyarm-tiny6410/lowlevel.c
+++ b/arch/arm/boards/friendlyarm-tiny6410/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/s3c-iomap.h>
diff --git a/arch/arm/boards/gateworks-ventana/lowlevel.c b/arch/arm/boards/gateworks-ventana/lowlevel.c
index 10b2c4c780..746beb87e5 100644
--- a/arch/arm/boards/gateworks-ventana/lowlevel.c
+++ b/arch/arm/boards/gateworks-ventana/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/gk802/board.c b/arch/arm/boards/gk802/board.c
index 9dd22533fc..0d1b07b0e0 100644
--- a/arch/arm/boards/gk802/board.c
+++ b/arch/arm/boards/gk802/board.c
@@ -24,7 +24,7 @@
#include <mach/imx6-regs.h>
#include <mach/imx6.h>
#include <mfd/imx6q-iomuxc-gpr.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <of.h>
#define GK802_GPIO_RECOVERY_BTN IMX_GPIO_NR(3, 16) /* recovery button */
diff --git a/arch/arm/boards/gk802/lowlevel.c b/arch/arm/boards/gk802/lowlevel.c
index de744a2052..b571969884 100644
--- a/arch/arm/boards/gk802/lowlevel.c
+++ b/arch/arm/boards/gk802/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/globalscale-guruplug/lowlevel.c b/arch/arm/boards/globalscale-guruplug/lowlevel.c
index 508746a06f..91bc1cf565 100644
--- a/arch/arm/boards/globalscale-guruplug/lowlevel.c
+++ b/arch/arm/boards/globalscale-guruplug/lowlevel.c
@@ -15,7 +15,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/lowlevel.h>
diff --git a/arch/arm/boards/globalscale-mirabox/lowlevel.c b/arch/arm/boards/globalscale-mirabox/lowlevel.c
index 92203b768a..4f55d1acb9 100644
--- a/arch/arm/boards/globalscale-mirabox/lowlevel.c
+++ b/arch/arm/boards/globalscale-mirabox/lowlevel.c
@@ -15,7 +15,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/lowlevel.h>
diff --git a/arch/arm/boards/guf-santaro/board.c b/arch/arm/boards/guf-santaro/board.c
index 8fbfe269b0..b9a52ee258 100644
--- a/arch/arm/boards/guf-santaro/board.c
+++ b/arch/arm/boards/guf-santaro/board.c
@@ -20,7 +20,7 @@
#include <asm/io.h>
#include <asm/mmu.h>
#include <mach/generic.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <bootsource.h>
#include <bbu.h>
#include <mach/bbu.h>
diff --git a/arch/arm/boards/guf-santaro/lowlevel.c b/arch/arm/boards/guf-santaro/lowlevel.c
index 02de84c7b9..7753cea4e2 100644
--- a/arch/arm/boards/guf-santaro/lowlevel.c
+++ b/arch/arm/boards/guf-santaro/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/guf-vincell/board.c b/arch/arm/boards/guf-vincell/board.c
index bacab0bd1f..0c46ade9fc 100644
--- a/arch/arm/boards/guf-vincell/board.c
+++ b/arch/arm/boards/guf-vincell/board.c
@@ -23,7 +23,7 @@
#include <nand.h>
#include <net.h>
#include <partition.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <bbu.h>
#include <gpio.h>
#include <io.h>
diff --git a/arch/arm/boards/highbank/init.c b/arch/arm/boards/highbank/init.c
index 7b4f9637df..a0d4b30b48 100644
--- a/arch/arm/boards/highbank/init.c
+++ b/arch/arm/boards/highbank/init.c
@@ -14,7 +14,7 @@
#include <mach/sysregs.h>
#include <environment.h>
#include <partition.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <of.h>
diff --git a/arch/arm/boards/highbank/lowlevel.c b/arch/arm/boards/highbank/lowlevel.c
index c0405ed3a4..83f4c7ad15 100644
--- a/arch/arm/boards/highbank/lowlevel.c
+++ b/arch/arm/boards/highbank/lowlevel.c
@@ -5,7 +5,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <asm/system_info.h>
diff --git a/arch/arm/boards/imx233-olinuxino/lowlevel.c b/arch/arm/boards/imx233-olinuxino/lowlevel.c
index a5567b74c3..6e4b830485 100644
--- a/arch/arm/boards/imx233-olinuxino/lowlevel.c
+++ b/arch/arm/boards/imx233-olinuxino/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <mach/imx23-regs.h>
diff --git a/arch/arm/boards/karo-tx25/board.c b/arch/arm/boards/karo-tx25/board.c
index 59c81b2faa..ebebd58d80 100644
--- a/arch/arm/boards/karo-tx25/board.c
+++ b/arch/arm/boards/karo-tx25/board.c
@@ -22,7 +22,7 @@
#include <common.h>
#include <init.h>
#include <driver.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <environment.h>
#include <mach/imx25-regs.h>
diff --git a/arch/arm/boards/karo-tx25/lowlevel.c b/arch/arm/boards/karo-tx25/lowlevel.c
index 861c27b8a6..b7ff2d44c6 100644
--- a/arch/arm/boards/karo-tx25/lowlevel.c
+++ b/arch/arm/boards/karo-tx25/lowlevel.c
@@ -21,7 +21,7 @@
#include <mach/imx25-regs.h>
#include <mach/esdctl.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/imx-nand.h>
#include <mach/esdctl.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/karo-tx28/lowlevel.c b/arch/arm/boards/karo-tx28/lowlevel.c
index f747f3fd6b..c5fdda1902 100644
--- a/arch/arm/boards/karo-tx28/lowlevel.c
+++ b/arch/arm/boards/karo-tx28/lowlevel.c
@@ -2,7 +2,7 @@
#define DEBUG
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <mach/imx28-regs.h>
diff --git a/arch/arm/boards/karo-tx28/tx28-stk5.c b/arch/arm/boards/karo-tx28/tx28-stk5.c
index 2aaceb442e..c4c51099b4 100644
--- a/arch/arm/boards/karo-tx28/tx28-stk5.c
+++ b/arch/arm/boards/karo-tx28/tx28-stk5.c
@@ -19,7 +19,7 @@
#include <errno.h>
#include <mci.h>
#include <fec.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <net.h>
#include <asm/sections.h>
diff --git a/arch/arm/boards/karo-tx53/board.c b/arch/arm/boards/karo-tx53/board.c
index e5c27aac93..b8164ca86e 100644
--- a/arch/arm/boards/karo-tx53/board.c
+++ b/arch/arm/boards/karo-tx53/board.c
@@ -22,7 +22,7 @@
#include <nand.h>
#include <net.h>
#include <partition.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <generated/mach-types.h>
diff --git a/arch/arm/boards/karo-tx6x/lowlevel.c b/arch/arm/boards/karo-tx6x/lowlevel.c
index 00008d403c..cd4be5e9e7 100644
--- a/arch/arm/boards/karo-tx6x/lowlevel.c
+++ b/arch/arm/boards/karo-tx6x/lowlevel.c
@@ -18,7 +18,7 @@
#include <asm/barebox-arm.h>
#include <image-metadata.h>
#include <mach/generic.h>
-#include <sizes.h>
+#include <linux/sizes.h>
static inline void setup_uart(void)
{
diff --git a/arch/arm/boards/marvell-armada-xp-gp/lowlevel.c b/arch/arm/boards/marvell-armada-xp-gp/lowlevel.c
index 046057f56a..59eaa29a50 100644
--- a/arch/arm/boards/marvell-armada-xp-gp/lowlevel.c
+++ b/arch/arm/boards/marvell-armada-xp-gp/lowlevel.c
@@ -15,7 +15,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/lowlevel.h>
diff --git a/arch/arm/boards/mioa701/lowlevel.c b/arch/arm/boards/mioa701/lowlevel.c
index aa4a82e598..bfb8bad1cc 100644
--- a/arch/arm/boards/mioa701/lowlevel.c
+++ b/arch/arm/boards/mioa701/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/module-mb7707/lowlevel.c b/arch/arm/boards/module-mb7707/lowlevel.c
index 5f5e1d7af1..0258be6e4b 100644
--- a/arch/arm/boards/module-mb7707/lowlevel.c
+++ b/arch/arm/boards/module-mb7707/lowlevel.c
@@ -21,7 +21,7 @@
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#define MB7707_SRAM_BASE 0x40000000
#define MB7707_SRAM_SIZE SZ_128M
diff --git a/arch/arm/boards/netx/platform.S b/arch/arm/boards/netx/platform.S
index 6c66228197..95ae46cc6d 100644
--- a/arch/arm/boards/netx/platform.S
+++ b/arch/arm/boards/netx/platform.S
@@ -16,7 +16,7 @@
* GNU General Public License for more details.
*
*/
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
.globl barebox_arm_reset_vector
diff --git a/arch/arm/boards/nhk8815/lowlevel.c b/arch/arm/boards/nhk8815/lowlevel.c
index ce06f45c91..33a785fee0 100644
--- a/arch/arm/boards/nhk8815/lowlevel.c
+++ b/arch/arm/boards/nhk8815/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/nvidia-beaver/entry.c b/arch/arm/boards/nvidia-beaver/entry.c
index 576fcb7a5b..9b7e253b4f 100644
--- a/arch/arm/boards/nvidia-beaver/entry.c
+++ b/arch/arm/boards/nvidia-beaver/entry.c
@@ -15,7 +15,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/lowlevel.h>
diff --git a/arch/arm/boards/nvidia-jetson-tk1/entry.c b/arch/arm/boards/nvidia-jetson-tk1/entry.c
index 76c95a8776..8f112a3a91 100644
--- a/arch/arm/boards/nvidia-jetson-tk1/entry.c
+++ b/arch/arm/boards/nvidia-jetson-tk1/entry.c
@@ -15,7 +15,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/lowlevel.h>
diff --git a/arch/arm/boards/omap343xdsp/lowlevel.c b/arch/arm/boards/omap343xdsp/lowlevel.c
index 18ddff3625..318bb9aeb1 100644
--- a/arch/arm/boards/omap343xdsp/lowlevel.c
+++ b/arch/arm/boards/omap343xdsp/lowlevel.c
@@ -1,7 +1,7 @@
#include <common.h>
#include <init.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <mach/generic.h>
diff --git a/arch/arm/boards/omap3evm/board.c b/arch/arm/boards/omap3evm/board.c
index 2813d3d653..0fe69b61a7 100644
--- a/arch/arm/boards/omap3evm/board.c
+++ b/arch/arm/boards/omap3evm/board.c
@@ -43,7 +43,7 @@
#include <init.h>
#include <driver.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <ns16550.h>
#include <asm/armlinux.h>
#include <mach/omap3-silicon.h>
diff --git a/arch/arm/boards/omap3evm/lowlevel.c b/arch/arm/boards/omap3evm/lowlevel.c
index 5c3e8902a0..d8a1b9f61d 100644
--- a/arch/arm/boards/omap3evm/lowlevel.c
+++ b/arch/arm/boards/omap3evm/lowlevel.c
@@ -1,6 +1,6 @@
#include <io.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <mach/generic.h>
diff --git a/arch/arm/boards/panda/board.c b/arch/arm/boards/panda/board.c
index c63602b4c2..f7a3a0fa28 100644
--- a/arch/arm/boards/panda/board.c
+++ b/arch/arm/boards/panda/board.c
@@ -15,7 +15,7 @@
#include <mach/control.h>
#include <usb/ehci.h>
#include <linux/err.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/mmu.h>
#include <envfs.h>
#include <i2c/i2c.h>
diff --git a/arch/arm/boards/panda/lowlevel.c b/arch/arm/boards/panda/lowlevel.c
index 2679ae4690..005485ba45 100644
--- a/arch/arm/boards/panda/lowlevel.c
+++ b/arch/arm/boards/panda/lowlevel.c
@@ -19,7 +19,7 @@
#include <common.h>
#include <init.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <mach/omap4-mux.h>
#include <mach/omap4-silicon.h>
diff --git a/arch/arm/boards/phytec-phycard-imx27/pca100.c b/arch/arm/boards/phytec-phycard-imx27/pca100.c
index 9475bfafca..0481113c65 100644
--- a/arch/arm/boards/phytec-phycard-imx27/pca100.c
+++ b/arch/arm/boards/phytec-phycard-imx27/pca100.c
@@ -21,7 +21,7 @@
#include <mach/imx27-regs.h>
#include <fec.h>
#include <gpio.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/armlinux.h>
#include <asm/sections.h>
#include <generated/mach-types.h>
diff --git a/arch/arm/boards/phytec-phycard-imx6/lowlevel.c b/arch/arm/boards/phytec-phycard-imx6/lowlevel.c
index b31638cbb9..dc106490e7 100644
--- a/arch/arm/boards/phytec-phycard-imx6/lowlevel.c
+++ b/arch/arm/boards/phytec-phycard-imx6/lowlevel.c
@@ -14,7 +14,7 @@
*/
#include <debug_ll.h>
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/phytec-phycard-omap3/lowlevel.c b/arch/arm/boards/phytec-phycard-omap3/lowlevel.c
index 57f6389664..27b56b1e0c 100644
--- a/arch/arm/boards/phytec-phycard-omap3/lowlevel.c
+++ b/arch/arm/boards/phytec-phycard-omap3/lowlevel.c
@@ -1,7 +1,7 @@
#include <common.h>
#include <io.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <mach/omap3-mux.h>
diff --git a/arch/arm/boards/phytec-phycard-omap3/pca-a-l1.c b/arch/arm/boards/phytec-phycard-omap3/pca-a-l1.c
index 68a17bf0c3..1c2e7f7429 100644
--- a/arch/arm/boards/phytec-phycard-omap3/pca-a-l1.c
+++ b/arch/arm/boards/phytec-phycard-omap3/pca-a-l1.c
@@ -46,7 +46,7 @@
#include <nand.h>
#include <ns16550.h>
#include <partition.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/armlinux.h>
#include <asm/io.h>
#include <generated/mach-types.h>
diff --git a/arch/arm/boards/phytec-phycard-omap4/lowlevel.c b/arch/arm/boards/phytec-phycard-omap4/lowlevel.c
index 841ac4b206..170ca6896b 100644
--- a/arch/arm/boards/phytec-phycard-omap4/lowlevel.c
+++ b/arch/arm/boards/phytec-phycard-omap4/lowlevel.c
@@ -19,7 +19,7 @@
#include <common.h>
#include <init.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <mach/omap4-mux.h>
#include <mach/omap4-silicon.h>
diff --git a/arch/arm/boards/phytec-phycard-omap4/pca-a-xl2.c b/arch/arm/boards/phytec-phycard-omap4/pca-a-xl2.c
index 64297224c0..78890ba5a9 100644
--- a/arch/arm/boards/phytec-phycard-omap4/pca-a-xl2.c
+++ b/arch/arm/boards/phytec-phycard-omap4/pca-a-xl2.c
@@ -29,7 +29,7 @@
#include <mach/syslib.h>
#include <mach/control.h>
#include <linux/err.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <partition.h>
#include <nand.h>
#include <asm/mmu.h>
diff --git a/arch/arm/boards/phytec-phycore-am335x/board.c b/arch/arm/boards/phytec-phycore-am335x/board.c
index a72cebda3f..61a11cfaa3 100644
--- a/arch/arm/boards/phytec-phycore-am335x/board.c
+++ b/arch/arm/boards/phytec-phycore-am335x/board.c
@@ -22,7 +22,7 @@
#include <nand.h>
#include <init.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <envfs.h>
#include <asm/armlinux.h>
#include <generated/mach-types.h>
diff --git a/arch/arm/boards/phytec-phycore-am335x/lowlevel.c b/arch/arm/boards/phytec-phycore-am335x/lowlevel.c
index 5ab8b5b446..843929e945 100644
--- a/arch/arm/boards/phytec-phycore-am335x/lowlevel.c
+++ b/arch/arm/boards/phytec-phycore-am335x/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <init.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/boards/phytec-phycore-imx27/pcm038.c b/arch/arm/boards/phytec-phycore-imx27/pcm038.c
index a4305f6e45..01f6a55ad0 100644
--- a/arch/arm/boards/phytec-phycore-imx27/pcm038.c
+++ b/arch/arm/boards/phytec-phycore-imx27/pcm038.c
@@ -20,7 +20,7 @@
#include <init.h>
#include <io.h>
#include <notifier.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <envfs.h>
#include <mach/devices-imx27.h>
#include <mach/imx-pll.h>
diff --git a/arch/arm/boards/phytec-phycore-imx27/pcm970.c b/arch/arm/boards/phytec-phycore-imx27/pcm970.c
index b0c177ebbf..73df2ad2a8 100644
--- a/arch/arm/boards/phytec-phycore-imx27/pcm970.c
+++ b/arch/arm/boards/phytec-phycore-imx27/pcm970.c
@@ -16,7 +16,7 @@
#include <init.h>
#include <io.h>
#include <platform_ide.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/imx27-regs.h>
#include <mach/iomux-mx27.h>
diff --git a/arch/arm/boards/phytec-phycore-imx35/pcm043.c b/arch/arm/boards/phytec-phycore-imx35/pcm043.c
index d1dd28fc65..e31c79d15f 100644
--- a/arch/arm/boards/phytec-phycore-imx35/pcm043.c
+++ b/arch/arm/boards/phytec-phycore-imx35/pcm043.c
@@ -26,7 +26,7 @@
#include <environment.h>
#include <fs.h>
#include <gpio.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/imx35-regs.h>
#include <asm/armlinux.h>
#include <io.h>
diff --git a/arch/arm/boards/phytec-phycore-omap4460/board.c b/arch/arm/boards/phytec-phycore-omap4460/board.c
index baf88a380c..6495a6f6ab 100644
--- a/arch/arm/boards/phytec-phycore-omap4460/board.c
+++ b/arch/arm/boards/phytec-phycore-omap4460/board.c
@@ -32,7 +32,7 @@
#include <mach/syslib.h>
#include <mach/control.h>
#include <linux/err.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <partition.h>
#include <nand.h>
#include <asm/mmu.h>
diff --git a/arch/arm/boards/phytec-phycore-omap4460/lowlevel.c b/arch/arm/boards/phytec-phycore-omap4460/lowlevel.c
index 8ea62c7f56..c0825949a8 100644
--- a/arch/arm/boards/phytec-phycore-omap4460/lowlevel.c
+++ b/arch/arm/boards/phytec-phycore-omap4460/lowlevel.c
@@ -19,7 +19,7 @@
#include <common.h>
#include <init.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <mach/omap4-mux.h>
#include <mach/omap4-silicon.h>
diff --git a/arch/arm/boards/phytec-phycore-pxa270/board.c b/arch/arm/boards/phytec-phycore-pxa270/board.c
index 509569e81e..833c4c81e4 100644
--- a/arch/arm/boards/phytec-phycore-pxa270/board.c
+++ b/arch/arm/boards/phytec-phycore-pxa270/board.c
@@ -24,7 +24,7 @@
#include <fs.h>
#include <init.h>
#include <partition.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <plat/gpio.h>
#include <mach/mfp-pxa27x.h>
diff --git a/arch/arm/boards/phytec-phycore-pxa270/lowlevel_init.S b/arch/arm/boards/phytec-phycore-pxa270/lowlevel_init.S
index c7dacce30c..39af00b54b 100644
--- a/arch/arm/boards/phytec-phycore-pxa270/lowlevel_init.S
+++ b/arch/arm/boards/phytec-phycore-pxa270/lowlevel_init.S
@@ -24,7 +24,7 @@
*/
#include <config.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/pxa-regs.h>
#include <mach/regs-ost.h>
#include <mach/regs-intc.h>
diff --git a/arch/arm/boards/phytec-phyflex-am335x/board.c b/arch/arm/boards/phytec-phyflex-am335x/board.c
index f265e52f3a..e635532d29 100644
--- a/arch/arm/boards/phytec-phyflex-am335x/board.c
+++ b/arch/arm/boards/phytec-phyflex-am335x/board.c
@@ -22,7 +22,7 @@
#include <nand.h>
#include <init.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <envfs.h>
#include <asm/armlinux.h>
#include <generated/mach-types.h>
diff --git a/arch/arm/boards/phytec-phyflex-am335x/lowlevel.c b/arch/arm/boards/phytec-phyflex-am335x/lowlevel.c
index 4d34968a0b..a240401555 100644
--- a/arch/arm/boards/phytec-phyflex-am335x/lowlevel.c
+++ b/arch/arm/boards/phytec-phyflex-am335x/lowlevel.c
@@ -18,7 +18,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <init.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/boards/phytec-phyflex-imx6/lowlevel.c b/arch/arm/boards/phytec-phyflex-imx6/lowlevel.c
index ce168b2cca..dbd264aed2 100644
--- a/arch/arm/boards/phytec-phyflex-imx6/lowlevel.c
+++ b/arch/arm/boards/phytec-phyflex-imx6/lowlevel.c
@@ -14,7 +14,7 @@
*/
#include <debug_ll.h>
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <image-metadata.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/boards/plathome-openblocks-a6/lowlevel.c b/arch/arm/boards/plathome-openblocks-a6/lowlevel.c
index b37a3d6002..71bf7aa2ee 100644
--- a/arch/arm/boards/plathome-openblocks-a6/lowlevel.c
+++ b/arch/arm/boards/plathome-openblocks-a6/lowlevel.c
@@ -12,7 +12,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/lowlevel.h>
diff --git a/arch/arm/boards/plathome-openblocks-ax3/lowlevel.c b/arch/arm/boards/plathome-openblocks-ax3/lowlevel.c
index 721d2de978..9030a5d0c8 100644
--- a/arch/arm/boards/plathome-openblocks-ax3/lowlevel.c
+++ b/arch/arm/boards/plathome-openblocks-ax3/lowlevel.c
@@ -15,7 +15,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/lowlevel.h>
diff --git a/arch/arm/boards/pm9261/init.c b/arch/arm/boards/pm9261/init.c
index 09d7f80ea8..63f4f19b3f 100644
--- a/arch/arm/boards/pm9261/init.c
+++ b/arch/arm/boards/pm9261/init.c
@@ -50,6 +50,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PA16,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
#if defined(CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16)
.bus_width_16 = 1,
#else
diff --git a/arch/arm/boards/pm9263/init.c b/arch/arm/boards/pm9263/init.c
index 3dca9e4fda..2b6b0891f5 100644
--- a/arch/arm/boards/pm9263/init.c
+++ b/arch/arm/boards/pm9263/init.c
@@ -50,6 +50,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PB30,
.enable_pin = AT91_PIN_PD15,
+ .ecc_mode = NAND_ECC_SOFT,
#if defined(CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16)
.bus_width_16 = 1,
#else
diff --git a/arch/arm/boards/pm9g45/init.c b/arch/arm/boards/pm9g45/init.c
index 1e43be5a7f..524fe5395a 100644
--- a/arch/arm/boards/pm9g45/init.c
+++ b/arch/arm/boards/pm9g45/init.c
@@ -49,6 +49,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PD3,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
.bus_width_16 = 0,
.on_flash_bbt = 1,
};
diff --git a/arch/arm/boards/qil-a926x/init.c b/arch/arm/boards/qil-a926x/init.c
index 99a960470b..872743775f 100644
--- a/arch/arm/boards/qil-a926x/init.c
+++ b/arch/arm/boards/qil-a926x/init.c
@@ -17,7 +17,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <linux/clk.h>
#include <mach/board.h>
@@ -43,6 +43,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PC13,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
.on_flash_bbt = 1,
};
diff --git a/arch/arm/boards/radxa-rock/lowlevel.c b/arch/arm/boards/radxa-rock/lowlevel.c
index 65014e6bb5..1c07bc3377 100644
--- a/arch/arm/boards/radxa-rock/lowlevel.c
+++ b/arch/arm/boards/radxa-rock/lowlevel.c
@@ -12,7 +12,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/raspberry-pi/lowlevel.c b/arch/arm/boards/raspberry-pi/lowlevel.c
index 022b11d29f..485171a116 100644
--- a/arch/arm/boards/raspberry-pi/lowlevel.c
+++ b/arch/arm/boards/raspberry-pi/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/platform.h>
diff --git a/arch/arm/boards/sama5d3_xplained/init.c b/arch/arm/boards/sama5d3_xplained/init.c
index 7dfebe8e89..373ab814d1 100644
--- a/arch/arm/boards/sama5d3_xplained/init.c
+++ b/arch/arm/boards/sama5d3_xplained/init.c
@@ -24,7 +24,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <mach/board.h>
#include <mach/at91sam9_smc.h>
diff --git a/arch/arm/boards/sama5d3xek/init.c b/arch/arm/boards/sama5d3xek/init.c
index 49d2b371f5..57dc7b0667 100644
--- a/arch/arm/boards/sama5d3xek/init.c
+++ b/arch/arm/boards/sama5d3xek/init.c
@@ -26,7 +26,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <mach/board.h>
#include <mach/at91sam9_smc.h>
diff --git a/arch/arm/boards/sama5d4_xplained/sama5d4_xplained.c b/arch/arm/boards/sama5d4_xplained/sama5d4_xplained.c
index 01262201d9..fe6876a9eb 100644
--- a/arch/arm/boards/sama5d4_xplained/sama5d4_xplained.c
+++ b/arch/arm/boards/sama5d4_xplained/sama5d4_xplained.c
@@ -18,7 +18,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <mach/board.h>
#include <mach/at91sam9_smc.h>
diff --git a/arch/arm/boards/sama5d4ek/sama5d4ek.c b/arch/arm/boards/sama5d4ek/sama5d4ek.c
index 91cffa3b48..bbc53c6758 100644
--- a/arch/arm/boards/sama5d4ek/sama5d4ek.c
+++ b/arch/arm/boards/sama5d4ek/sama5d4ek.c
@@ -18,7 +18,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <mach/board.h>
#include <mach/at91sam9_smc.h>
diff --git a/arch/arm/boards/solidrun-cubox/lowlevel.c b/arch/arm/boards/solidrun-cubox/lowlevel.c
index a28c2b18c5..08e31e8350 100644
--- a/arch/arm/boards/solidrun-cubox/lowlevel.c
+++ b/arch/arm/boards/solidrun-cubox/lowlevel.c
@@ -16,7 +16,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/lowlevel.h>
diff --git a/arch/arm/boards/solidrun-microsom/board.c b/arch/arm/boards/solidrun-microsom/board.c
index 4b0ea32040..783ec53c1d 100644
--- a/arch/arm/boards/solidrun-microsom/board.c
+++ b/arch/arm/boards/solidrun-microsom/board.c
@@ -25,7 +25,7 @@
#include <mach/imx6-regs.h>
#include <mach/imx6.h>
#include <mfd/imx6q-iomuxc-gpr.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/phy.h>
static int ar8035_phy_fixup(struct phy_device *dev)
diff --git a/arch/arm/boards/solidrun-microsom/lowlevel.c b/arch/arm/boards/solidrun-microsom/lowlevel.c
index eb52838963..30f4a3f591 100644
--- a/arch/arm/boards/solidrun-microsom/lowlevel.c
+++ b/arch/arm/boards/solidrun-microsom/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/telit-evk-pro3/init.c b/arch/arm/boards/telit-evk-pro3/init.c
index e094ea7c25..ea63b1a094 100644
--- a/arch/arm/boards/telit-evk-pro3/init.c
+++ b/arch/arm/boards/telit-evk-pro3/init.c
@@ -18,6 +18,7 @@
#include <gpio.h>
#include <init.h>
#include <linux/clk.h>
+#include <linux/mtd/nand.h>
#include <mach/at91_rstc.h>
#include <mach/at91sam9_smc.h>
#include <mach/board.h>
@@ -33,6 +34,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PC13,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
.on_flash_bbt = 1,
};
diff --git a/arch/arm/boards/terasic-sockit/board.c b/arch/arm/boards/terasic-sockit/board.c
index fdff76ff84..53cd36834f 100644
--- a/arch/arm/boards/terasic-sockit/board.c
+++ b/arch/arm/boards/terasic-sockit/board.c
@@ -5,7 +5,7 @@
#include <asm/armlinux.h>
#include <linux/micrel_phy.h>
#include <linux/phy.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <fcntl.h>
#include <fs.h>
#include <mach/socfpga-regs.h>
diff --git a/arch/arm/boards/terasic-sockit/lowlevel.c b/arch/arm/boards/terasic-sockit/lowlevel.c
index 0683435a7b..78d5d41b04 100644
--- a/arch/arm/boards/terasic-sockit/lowlevel.c
+++ b/arch/arm/boards/terasic-sockit/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/tny-a926x/init.c b/arch/arm/boards/tny-a926x/init.c
index ac86457872..3ebd8aae02 100644
--- a/arch/arm/boards/tny-a926x/init.c
+++ b/arch/arm/boards/tny-a926x/init.c
@@ -26,7 +26,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <linux/clk.h>
#include <mach/board.h>
@@ -55,6 +55,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PC13,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
.on_flash_bbt = 1,
};
diff --git a/arch/arm/boards/toradex-colibri-t20/entry.c b/arch/arm/boards/toradex-colibri-t20/entry.c
index 695862cfd3..a25958fb41 100644
--- a/arch/arm/boards/toradex-colibri-t20/entry.c
+++ b/arch/arm/boards/toradex-colibri-t20/entry.c
@@ -15,7 +15,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/lowlevel.h>
diff --git a/arch/arm/boards/toshiba-ac100/board.c b/arch/arm/boards/toshiba-ac100/board.c
index 51232ef427..0cb955c15c 100644
--- a/arch/arm/boards/toshiba-ac100/board.c
+++ b/arch/arm/boards/toshiba-ac100/board.c
@@ -19,7 +19,7 @@
#include <driver.h>
#include <init.h>
#include <asm/armlinux.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <usb/ehci.h>
#include <mach/iomap.h>
diff --git a/arch/arm/boards/toshiba-ac100/entry.c b/arch/arm/boards/toshiba-ac100/entry.c
index 45fa56aa75..fb695c32d6 100644
--- a/arch/arm/boards/toshiba-ac100/entry.c
+++ b/arch/arm/boards/toshiba-ac100/entry.c
@@ -15,7 +15,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/lowlevel.h>
diff --git a/arch/arm/boards/tqma6x/board.c b/arch/arm/boards/tqma6x/board.c
index 2118fb2721..97cce60c70 100644
--- a/arch/arm/boards/tqma6x/board.c
+++ b/arch/arm/boards/tqma6x/board.c
@@ -23,7 +23,7 @@
#include <partition.h>
#include <common.h>
#include <envfs.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <init.h>
#include <gpio.h>
#include <fec.h>
diff --git a/arch/arm/boards/tqma6x/lowlevel.c b/arch/arm/boards/tqma6x/lowlevel.c
index d2eea16c23..23f3407c05 100644
--- a/arch/arm/boards/tqma6x/lowlevel.c
+++ b/arch/arm/boards/tqma6x/lowlevel.c
@@ -14,7 +14,7 @@
*/
#include <debug_ll.h>
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/udoo/board.c b/arch/arm/boards/udoo/board.c
index d2f558e7f4..f3668fef0b 100644
--- a/arch/arm/boards/udoo/board.c
+++ b/arch/arm/boards/udoo/board.c
@@ -29,7 +29,7 @@
#include <asm/io.h>
#include <asm/mmu.h>
#include <mach/generic.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <net.h>
#include <linux/micrel_phy.h>
#include <mach/imx6.h>
diff --git a/arch/arm/boards/udoo/lowlevel.c b/arch/arm/boards/udoo/lowlevel.c
index 3d9fc68cab..785ab16678 100644
--- a/arch/arm/boards/udoo/lowlevel.c
+++ b/arch/arm/boards/udoo/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/generic.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/usb-a926x/init.c b/arch/arm/boards/usb-a926x/init.c
index 4a28af07e1..958c3c3662 100644
--- a/arch/arm/boards/usb-a926x/init.c
+++ b/arch/arm/boards/usb-a926x/init.c
@@ -26,7 +26,7 @@
#include <io.h>
#include <mach/hardware.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#include <linux/clk.h>
#include <mach/board.h>
@@ -59,6 +59,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PC13,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
.on_flash_bbt = 1,
};
diff --git a/arch/arm/boards/usi-topkick/lowlevel.c b/arch/arm/boards/usi-topkick/lowlevel.c
index df661564da..ed94ee6736 100644
--- a/arch/arm/boards/usi-topkick/lowlevel.c
+++ b/arch/arm/boards/usi-topkick/lowlevel.c
@@ -15,7 +15,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/lowlevel.h>
diff --git a/arch/arm/boards/variscite-mx6/board.c b/arch/arm/boards/variscite-mx6/board.c
index de74abc838..3585debb51 100644
--- a/arch/arm/boards/variscite-mx6/board.c
+++ b/arch/arm/boards/variscite-mx6/board.c
@@ -34,7 +34,7 @@
#include <asm/io.h>
#include <asm/mmu.h>
#include <mach/generic.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/imx6.h>
#include <mach/devices-imx6.h>
#include <mach/iomux-mx6.h>
diff --git a/arch/arm/boards/variscite-mx6/lowlevel.c b/arch/arm/boards/variscite-mx6/lowlevel.c
index 74f3a779e8..22e7eae32b 100644
--- a/arch/arm/boards/variscite-mx6/lowlevel.c
+++ b/arch/arm/boards/variscite-mx6/lowlevel.c
@@ -16,7 +16,7 @@
*/
#include <debug_ll.h>
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/versatile/env/boot.d/001-nor b/arch/arm/boards/versatile/env/boot.d/001-nor
new file mode 120000
index 0000000000..3db66aef68
--- /dev/null
+++ b/arch/arm/boards/versatile/env/boot.d/001-nor
@@ -0,0 +1 @@
+../boot/nor \ No newline at end of file
diff --git a/arch/arm/boards/versatile/env/boot.d/101-nor-update b/arch/arm/boards/versatile/env/boot.d/101-nor-update
new file mode 120000
index 0000000000..e4f1952a39
--- /dev/null
+++ b/arch/arm/boards/versatile/env/boot.d/101-nor-update
@@ -0,0 +1 @@
+../boot/nor-update \ No newline at end of file
diff --git a/arch/arm/boards/versatile/env/boot/nor b/arch/arm/boards/versatile/env/boot/nor
new file mode 100644
index 0000000000..3f31605c4f
--- /dev/null
+++ b/arch/arm/boards/versatile/env/boot/nor
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+if [ "$1" = menu ]; then
+ boot-menu-add-entry "$0" "nor"
+ exit
+fi
+
+global.bootm.image="/dev/nor0.kernel"
+global.linux.bootargs.dyn.root="root=ubi0:root ubi.mtd=5 rootfstype=ubifs"
+
+dtb=/dev/nor0.dtb
+filetype -s t ${dtb}
+if [ "$t" = dtb ]; then
+ global.bootm.oftree="${dtb}"
+fi
diff --git a/arch/arm/boards/versatile/env/boot/nor-update b/arch/arm/boards/versatile/env/boot/nor-update
new file mode 100644
index 0000000000..728889d20f
--- /dev/null
+++ b/arch/arm/boards/versatile/env/boot/nor-update
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ "$1" = menu ]; then
+ boot-menu-add-entry "$0" "nor update"
+ exit
+fi
+
+global.bootm.image="/dev/nor0.update"
+
+dtb=/dev/nor0.dtb
+filetype -s t ${dtb}
+if [ "$t" = dtb ]; then
+ global.bootm.oftree="${dtb}"
+fi
diff --git a/arch/arm/boards/versatile/env/config b/arch/arm/boards/versatile/env/config
deleted file mode 100644
index 667dce3747..0000000000
--- a/arch/arm/boards/versatile/env/config
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh
-
-# use 'dhcp' to do dhcp in barebox and in kernel
-# use 'none' if you want to skip kernel ip autoconfiguration
-ip=dhcp
-
-# or set your networking parameters here
-#eth0.ipaddr=a.b.c.d
-#eth0.netmask=a.b.c.d
-#eth0.gateway=a.b.c.d
-#eth0.serverip=a.b.c.d
-
-# can be either 'nfs', 'tftp' or 'nor'
-kernel_loc=tftp
-# can be either 'net', 'nor' or 'initrd'
-rootfs_loc=initrd
-
-# can be either 'jffs2' or 'ubifs'
-rootfs_type=ubifs
-rootfsimage=root.$rootfs_type
-
-#kernelimage=zImage
-kernelimage=uImage
-#kernelimage=Image
-#kernelimage=Image.lzo
-
-nfsroot="$eth0.serverip:/opt/work/busybox/arm9/rootfs_arm"
-
-nor_parts="256k(barebox)ro,64k(bareboxenv),1536k(kernel),-(root)"
-rootfs_mtdblock_nor=3
-
-autoboot_timeout=3
-
-bootargs="console=ttyAMA0,115200n8 CONSOLE=/dev/ttyAMA0"
-
-# set a fancy prompt (if support is compiled in)
-PS1="\e[1;31m[barebox@\h]:\w\e[0m\n# "
-
diff --git a/arch/arm/boards/versatile/env/init/automount b/arch/arm/boards/versatile/env/init/automount
new file mode 100644
index 0000000000..53f9196a15
--- /dev/null
+++ b/arch/arm/boards/versatile/env/init/automount
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if [ "$1" = menu ]; then
+ init-menu-add-entry "$0" "Automountpoints"
+ exit
+fi
+
+# automount tftp server based on $eth0.serverip
+
+mkdir -p /mnt/tftp
+automount /mnt/tftp 'ifup eth0 && mount -t tftp $eth0.serverip /mnt/tftp'
diff --git a/arch/arm/boards/versatile/env/init/mtdparts-nor b/arch/arm/boards/versatile/env/init/mtdparts-nor
new file mode 100644
index 0000000000..9079d482da
--- /dev/null
+++ b/arch/arm/boards/versatile/env/init/mtdparts-nor
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if [ "$1" = menu ]; then
+ init-menu-add-entry "$0" "NOR partitions"
+ exit
+fi
+
+mtdparts="512k(nor0.barebox)ro,512k(nor0.bareboxenv),4864k(nor0.kernel),256k(nor0.dtb),3M(nor0.update),-(nor0.root)"
+kernelname="physmap-flash.0"
+
+mtdparts-add -d nor0 -k ${kernelname} -p ${mtdparts}
diff --git a/arch/arm/boards/versatile/env/init/ps1 b/arch/arm/boards/versatile/env/init/ps1
new file mode 100644
index 0000000000..a1d075499f
--- /dev/null
+++ b/arch/arm/boards/versatile/env/init/ps1
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if [ ${global.allow_color} = "true" ]; then
+ export PS1="\e[1;32mbarebox@\e[1;36m\h:\w\e[0m\n# "
+else
+ export PS1="barebox@\h:\w\n# "
+fi
diff --git a/arch/arm/boards/versatile/env/nv/boot.default b/arch/arm/boards/versatile/env/nv/boot.default
new file mode 100644
index 0000000000..c47e1b2bca
--- /dev/null
+++ b/arch/arm/boards/versatile/env/nv/boot.default
@@ -0,0 +1 @@
+/env/boot.d
diff --git a/arch/arm/boards/versatile/env/nv/linux.bootargs.base b/arch/arm/boards/versatile/env/nv/linux.bootargs.base
new file mode 100644
index 0000000000..826debe7c2
--- /dev/null
+++ b/arch/arm/boards/versatile/env/nv/linux.bootargs.base
@@ -0,0 +1 @@
+console=ttyAMA0,115200n8 CONSOLE=/dev/ttyAMA0
diff --git a/arch/arm/boards/versatile/lowlevel.c b/arch/arm/boards/versatile/lowlevel.c
index ce06f45c91..33a785fee0 100644
--- a/arch/arm/boards/versatile/lowlevel.c
+++ b/arch/arm/boards/versatile/lowlevel.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/boards/versatile/versatilepb.c b/arch/arm/boards/versatile/versatilepb.c
index fdd0820fd4..3166cd4fed 100644
--- a/arch/arm/boards/versatile/versatilepb.c
+++ b/arch/arm/boards/versatile/versatilepb.c
@@ -22,17 +22,30 @@
#include <common.h>
#include <init.h>
#include <asm/armlinux.h>
+#include <asm/system_info.h>
#include <generated/mach-types.h>
#include <mach/init.h>
#include <mach/platform.h>
#include <environment.h>
#include <partition.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <net/smc91111.h>
static int vpb_console_init(void)
{
- barebox_set_hostname("versatilepb");
+ char *hostname = "versatilepb-unknown";
+ char *model = "ARM Versatile PB";
+
+ if (cpu_is_arm926()) {
+ hostname = "versatilepb-arm926";
+ model = "ARM Versatile PB (arm926)";
+ } else if (cpu_is_arm1176()) {
+ hostname = "versatilepb-arm1176";
+ model = "ARM Versatile PB (arm1176)";
+ }
+
+ barebox_set_hostname(hostname);
+ barebox_set_model(model);
versatile_register_uart(0);
return 0;
@@ -46,8 +59,8 @@ static struct smc91c111_pdata net_pdata = {
static int vpb_devices_init(void)
{
add_cfi_flash_device(DEVICE_ID_DYNAMIC, VERSATILE_FLASH_BASE, VERSATILE_FLASH_SIZE, 0);
- devfs_add_partition("nor0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self");
- devfs_add_partition("nor0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0");
+ devfs_add_partition("nor0", 0x00000, SZ_512K, DEVFS_PARTITION_FIXED, "self");
+ devfs_add_partition("nor0", SZ_512K, SZ_512K, DEVFS_PARTITION_FIXED, "env0");
add_generic_device("smc91c111", DEVICE_ID_DYNAMIC, NULL, VERSATILE_ETH_BASE,
64 * 1024, IORESOURCE_MEM, &net_pdata);
diff --git a/arch/arm/boards/vexpress/init.c b/arch/arm/boards/vexpress/init.c
index 6cda494872..5b2035bd36 100644
--- a/arch/arm/boards/vexpress/init.c
+++ b/arch/arm/boards/vexpress/init.c
@@ -12,7 +12,7 @@
#include <mach/devices.h>
#include <environment.h>
#include <partition.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <globalvar.h>
#include <linux/amba/sp804.h>
diff --git a/arch/arm/boards/vexpress/lowlevel.c b/arch/arm/boards/vexpress/lowlevel.c
index 2ef94c59d6..204d29d8f0 100644
--- a/arch/arm/boards/vexpress/lowlevel.c
+++ b/arch/arm/boards/vexpress/lowlevel.c
@@ -5,7 +5,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <asm/system_info.h>
diff --git a/arch/arm/boards/virt2real/lowlevel.c b/arch/arm/boards/virt2real/lowlevel.c
index 731e2cae64..8ec3d04fef 100644
--- a/arch/arm/boards/virt2real/lowlevel.c
+++ b/arch/arm/boards/virt2real/lowlevel.c
@@ -21,7 +21,7 @@
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#define VIRT2REAL_SRAM_BASE 0x82000000
#define VIRT2REAL_SRAM_SIZE SZ_16M
diff --git a/arch/arm/configs/rpi_defconfig b/arch/arm/configs/rpi_defconfig
index 05c013601d..c6b2c50c7b 100644
--- a/arch/arm/configs/rpi_defconfig
+++ b/arch/arm/configs/rpi_defconfig
@@ -31,6 +31,7 @@ CONFIG_CMD_LN=y
CONFIG_CMD_FILETYPE=y
CONFIG_CMD_ECHO_E=y
CONFIG_CMD_LOADB=y
+CONFIG_CMD_LOADY=y
CONFIG_CMD_MEMINFO=y
CONFIG_CMD_IOMEM=y
CONFIG_CMD_MM=y
diff --git a/arch/arm/configs/versatilepb_arm1176_defconfig b/arch/arm/configs/versatilepb_arm1176_defconfig
new file mode 100644
index 0000000000..ca0ab3603f
--- /dev/null
+++ b/arch/arm/configs/versatilepb_arm1176_defconfig
@@ -0,0 +1,99 @@
+CONFIG_BUILTIN_DTB=y
+CONFIG_BUILTIN_DTB_NAME="versatile-pb"
+CONFIG_ARCH_VERSATILE=y
+CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x80000
+CONFIG_MACH_VERSATILEPB_ARM1176=y
+CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
+CONFIG_PBL_IMAGE=y
+CONFIG_PBL_RELOCATABLE=y
+CONFIG_MALLOC_SIZE=0xa00000
+CONFIG_PROMPT="versatilepb> "
+CONFIG_HUSH_FANCY_PROMPT=y
+CONFIG_CMDLINE_EDITING=y
+CONFIG_AUTO_COMPLETE=y
+CONFIG_MENU=y
+CONFIG_CONSOLE_ACTIVATE_ALL=y
+CONFIG_DEFAULT_COMPRESSION_GZIP=y
+CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y
+CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/versatile/env"
+CONFIG_CMD_DMESG=y
+CONFIG_LONGHELP=y
+CONFIG_CMD_IOMEM=y
+CONFIG_CMD_MEMINFO=y
+CONFIG_CMD_BOOTM_SHOW_TYPE=y
+CONFIG_CMD_BOOTM_VERBOSE=y
+CONFIG_CMD_BOOTM_INITRD=y
+CONFIG_CMD_BOOTM_OFTREE=y
+CONFIG_CMD_BOOTM_OFTREE_UIMAGE=y
+CONFIG_CMD_GO=y
+CONFIG_CMD_LOADB=y
+CONFIG_CMD_RESET=y
+CONFIG_CMD_PARTITION=y
+CONFIG_CMD_UBIFORMAT=y
+CONFIG_CMD_EXPORT=y
+CONFIG_CMD_LOADENV=y
+CONFIG_CMD_PRINTENV=y
+CONFIG_CMD_MAGICVAR=y
+CONFIG_CMD_MAGICVAR_HELP=y
+CONFIG_CMD_SAVEENV=y
+CONFIG_CMD_FILETYPE=y
+CONFIG_CMD_UNCOMPRESS=y
+CONFIG_CMD_SLEEP=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_TFTP=y
+CONFIG_CMD_ECHO_E=y
+CONFIG_CMD_EDIT=y
+CONFIG_CMD_LOGIN=y
+CONFIG_CMD_MENU=y
+CONFIG_CMD_MENU_MANAGEMENT=y
+CONFIG_CMD_PASSWD=y
+CONFIG_CMD_SPLASH=y
+CONFIG_CMD_READLINE=y
+CONFIG_CMD_TIMEOUT=y
+CONFIG_CMD_CRC=y
+CONFIG_CMD_CRC_CMP=y
+CONFIG_CMD_FLASH=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_OF_NODE=y
+CONFIG_CMD_OF_PROPERTY=y
+CONFIG_CMD_OFTREE=y
+CONFIG_NET=y
+CONFIG_NET_NFS=y
+CONFIG_NET_NETCONSOLE=y
+CONFIG_NET_RESOLV=y
+CONFIG_OFDEVICE=y
+CONFIG_OF_BAREBOX_DRIVERS=y
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_USB=y
+CONFIG_SERIAL_USB_FTDI=y
+CONFIG_DRIVER_NET_SMC91111=y
+CONFIG_I2C=y
+CONFIG_I2C_VERSATILE=y
+CONFIG_MTD=y
+CONFIG_DRIVER_CFI=y
+# CONFIG_DRIVER_CFI_AMD is not set
+# CONFIG_DRIVER_CFI_BANK_WIDTH_1 is not set
+# CONFIG_DRIVER_CFI_BANK_WIDTH_2 is not set
+CONFIG_MTD_UBI=y
+CONFIG_USB_HOST=y
+CONFIG_USB_EHCI=y
+CONFIG_USB_STORAGE=y
+CONFIG_VIDEO=y
+CONFIG_DRIVER_VIDEO_ARMCLCD=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_SELF_REGISTER=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_ACORN_8x8=y
+CONFIG_GPIO_PL061=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_FS_CRAMFS=y
+CONFIG_FS_EXT4=y
+CONFIG_FS_TFTP=y
+CONFIG_FS_NFS=y
+CONFIG_PNG=y
+CONFIG_SHA1=y
+CONFIG_SHA256=y
diff --git a/arch/arm/configs/versatilepb_defconfig b/arch/arm/configs/versatilepb_defconfig
index 9f7e0e56ea..54a6fec919 100644
--- a/arch/arm/configs/versatilepb_defconfig
+++ b/arch/arm/configs/versatilepb_defconfig
@@ -1,28 +1,41 @@
CONFIG_BUILTIN_DTB=y
CONFIG_BUILTIN_DTB_NAME="versatile-pb"
CONFIG_ARCH_VERSATILE=y
+CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x80000
CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
+CONFIG_PBL_IMAGE=y
+CONFIG_PBL_RELOCATABLE=y
CONFIG_PROMPT="versatilepb> "
-CONFIG_GLOB=y
CONFIG_HUSH_FANCY_PROMPT=y
CONFIG_CMDLINE_EDITING=y
CONFIG_AUTO_COMPLETE=y
CONFIG_MENU=y
+CONFIG_CONSOLE_ACTIVATE_ALL=y
CONFIG_PARTITION=y
-CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y
+CONFIG_DEFAULT_COMPRESSION_GZIP=y
+CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y
CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/versatile/env"
+CONFIG_CMD_DMESG=y
CONFIG_LONGHELP=y
CONFIG_CMD_IOMEM=y
CONFIG_CMD_MEMINFO=y
CONFIG_CMD_BOOTM_SHOW_TYPE=y
+CONFIG_CMD_BOOTM_VERBOSE=y
+CONFIG_CMD_BOOTM_INITRD=y
+CONFIG_CMD_BOOTM_OFTREE=y
+CONFIG_CMD_BOOTM_OFTREE_UIMAGE=y
CONFIG_CMD_GO=y
CONFIG_CMD_LOADB=y
CONFIG_CMD_RESET=y
CONFIG_CMD_PARTITION=y
+CONFIG_CMD_UBIFORMAT=y
CONFIG_CMD_EXPORT=y
CONFIG_CMD_LOADENV=y
CONFIG_CMD_PRINTENV=y
+CONFIG_CMD_MAGICVAR=y
+CONFIG_CMD_MAGICVAR_HELP=y
CONFIG_CMD_SAVEENV=y
+CONFIG_CMD_FILETYPE=y
CONFIG_CMD_UNCOMPRESS=y
CONFIG_CMD_SLEEP=y
CONFIG_CMD_DHCP=y
@@ -30,12 +43,16 @@ CONFIG_CMD_PING=y
CONFIG_CMD_TFTP=y
CONFIG_CMD_ECHO_E=y
CONFIG_CMD_EDIT=y
+CONFIG_CMD_LOGIN=y
CONFIG_CMD_MENU=y
CONFIG_CMD_MENU_MANAGEMENT=y
-CONFIG_CMD_LOGIN=y
CONFIG_CMD_PASSWD=y
+CONFIG_CMD_SPLASH=y
CONFIG_CMD_READLINE=y
CONFIG_CMD_TIMEOUT=y
+CONFIG_CMD_CRC=y
+CONFIG_CMD_CRC_CMP=y
+CONFIG_CMD_FLASH=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_I2C=y
CONFIG_CMD_OF_NODE=y
@@ -51,10 +68,18 @@ CONFIG_SERIAL_AMBA_PL011=y
CONFIG_DRIVER_NET_SMC91111=y
CONFIG_I2C=y
CONFIG_I2C_VERSATILE=y
+CONFIG_MTD=y
+CONFIG_DRIVER_CFI=y
+# CONFIG_DRIVER_CFI_AMD is not set
+# CONFIG_DRIVER_CFI_BANK_WIDTH_1 is not set
+# CONFIG_DRIVER_CFI_BANK_WIDTH_2 is not set
+CONFIG_MTD_UBI=y
CONFIG_GPIO_PL061=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_DS1307=y
CONFIG_FS_CRAMFS=y
+CONFIG_FS_EXT4=y
CONFIG_FS_TFTP=y
+CONFIG_FS_NFS=y
CONFIG_SHA1=y
CONFIG_SHA256=y
diff --git a/arch/arm/cpu/common.c b/arch/arm/cpu/common.c
index d5f892910f..46ce942187 100644
--- a/arch/arm/cpu/common.c
+++ b/arch/arm/cpu/common.c
@@ -17,7 +17,7 @@
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/system_info.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/cpu/lowlevel.S b/arch/arm/cpu/lowlevel.S
index c615d5b581..b76222d8f3 100644
--- a/arch/arm/cpu/lowlevel.S
+++ b/arch/arm/cpu/lowlevel.S
@@ -4,23 +4,41 @@
.section ".text_bare_init_","ax"
ENTRY(arm_cpu_lowlevel_init)
- mov r2, lr
- /* set the cpu to SVC32 mode */
+ /* set the cpu to SVC32 mode, mask irq and fiq */
mrs r12, cpsr
bic r12, r12, #0x1f
orr r12, r12, #0xd3
msr cpsr, r12
-#if __LINUX_ARM_ARCH__ >= 7
- isb
-#elif __LINUX_ARM_ARCH__ == 6
+#if __LINUX_ARM_ARCH__ >= 6
+ /*
+ * ICIALLU: Invalidate all instruction caches to PoU,
+ * includes flushing of branch predictors.
+ * Even if the i-cache is off it might contain stale entries
+ * that are better discarded before enabling the cache.
+ * Architectually this is even possible after a cold reset.
+ */
+ mcr p15, 0, r12, c7, c5, 0
+ /* DSB, ensure completion of the invalidation */
+ mcr p15, 0, r12, c7, c10, 4
+ /*
+ * ISB, ensure instruction fetch path is in sync.
+ * Note that the ARM Architecture Reference Manual, ARMv7-A and ARMv7-R
+ * edition (ARM DDI 0406C.c) doesn't define this instruction in the
+ * ARMv6 part (D12.7.10). It only has: "Support of additional
+ * operations is IMPLEMENTATION DEFINED".
+ * But an earlier version of the ARMARM (ARM DDI 0100I) does define it
+ * as "Flush prefetch buffer (PrefetchFlush)".
+ */
mcr p15, 0, r12, c7, c5, 4
#endif
- /* disable MMU stuff and caches */
- mrc p15, 0, r12, c1, c0, 0
- bic r12, r12 , #(CR_M | CR_C | CR_B)
+ /* disable MMU stuff and data/unified caches */
+ mrc p15, 0, r12, c1, c0, 0 /* SCTLR */
+ bic r12, r12, #(CR_M | CR_C | CR_B)
bic r12, r12, #(CR_S | CR_R | CR_V)
+
+ /* enable instruction cache */
orr r12, r12, #CR_I
#if __LINUX_ARM_ARCH__ >= 6
@@ -34,7 +52,7 @@ ENTRY(arm_cpu_lowlevel_init)
orr r12, r12, #CR_B
#endif
- mcr p15, 0, r12, c1, c0, 0
+ mcr p15, 0, r12, c1, c0, 0 /* SCTLR */
- mov pc, r2
+ mov pc, lr
ENDPROC(arm_cpu_lowlevel_init)
diff --git a/arch/arm/cpu/mmu-early.c b/arch/arm/cpu/mmu-early.c
index b8b30df84e..2e4d316924 100644
--- a/arch/arm/cpu/mmu-early.c
+++ b/arch/arm/cpu/mmu-early.c
@@ -1,7 +1,7 @@
#include <common.h>
#include <asm/mmu.h>
#include <errno.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/memory.h>
#include <asm/system.h>
#include <asm/cache.h>
diff --git a/arch/arm/cpu/mmu.c b/arch/arm/cpu/mmu.c
index e4afcc8411..09fe8d592a 100644
--- a/arch/arm/cpu/mmu.c
+++ b/arch/arm/cpu/mmu.c
@@ -23,7 +23,7 @@
#include <init.h>
#include <asm/mmu.h>
#include <errno.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/memory.h>
#include <asm/barebox-arm.h>
#include <asm/system.h>
diff --git a/arch/arm/cpu/start-pbl.c b/arch/arm/cpu/start-pbl.c
index 741060ab6c..f2490fd9ef 100644
--- a/arch/arm/cpu/start-pbl.c
+++ b/arch/arm/cpu/start-pbl.c
@@ -20,7 +20,7 @@
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <pbl.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c
index e2a6b8e90f..418870fb69 100644
--- a/arch/arm/cpu/start.c
+++ b/arch/arm/cpu/start.c
@@ -20,7 +20,7 @@
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <of.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/cpu/uncompress.c b/arch/arm/cpu/uncompress.c
index 03c73d56a3..b0b7c6d097 100644
--- a/arch/arm/cpu/uncompress.c
+++ b/arch/arm/cpu/uncompress.c
@@ -21,7 +21,7 @@
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <pbl.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/dts/am335x-bone-common.dts b/arch/arm/dts/am335x-bone-common.dts
index bbc55617c8..5d3d2ed5aa 100644
--- a/arch/arm/dts/am335x-bone-common.dts
+++ b/arch/arm/dts/am335x-bone-common.dts
@@ -1,5 +1,12 @@
/dts-v1/;
+/*
+ * DTS for the beaglebone white/black MLO
+ *
+ * Only contains the common parts of both boards which is
+ * all we need for the MLO
+ */
+
#include "am33xx.dtsi"
#include "am335x-bone-common.dtsi"
@@ -7,3 +14,12 @@
model = "TI AM335x BeagleBone";
compatible = "ti,am335x-bone", "ti,am33xx";
};
+
+&mmc2 {
+ vmmc-supply = <&vmmcsd_fixed>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&emmc_pins>;
+ bus-width = <8>;
+ status = "disabled"; /* only present on beaglebone black, enabled during runtime */
+ ti,vcc-aux-disable-is-sleep;
+};
diff --git a/arch/arm/dts/am335x-phytec-phycore-som.dtsi b/arch/arm/dts/am335x-phytec-phycore-som.dtsi
index 246b5aa62d..c34ae38271 100644
--- a/arch/arm/dts/am335x-phytec-phycore-som.dtsi
+++ b/arch/arm/dts/am335x-phytec-phycore-som.dtsi
@@ -161,7 +161,7 @@
partition@4 {
label = "kernel";
- reg = <0xe0000 0x400000>;
+ reg = <0xe0000 0x0>;
};
};
};
diff --git a/arch/arm/dts/am335x-phytec-phyflex.dts b/arch/arm/dts/am335x-phytec-phyflex.dts
index 6679cf56db..6c49567107 100644
--- a/arch/arm/dts/am335x-phytec-phyflex.dts
+++ b/arch/arm/dts/am335x-phytec-phyflex.dts
@@ -187,7 +187,7 @@
partition@4 {
label = "kernel";
- reg = <0xe0000 0x400000>;
+ reg = <0xe0000 0x0>;
};
};
};
diff --git a/arch/arm/include/asm/barebox-arm.h b/arch/arm/include/asm/barebox-arm.h
index 66f6fe5ef6..9ad07cb77a 100644
--- a/arch/arm/include/asm/barebox-arm.h
+++ b/arch/arm/include/asm/barebox-arm.h
@@ -25,8 +25,10 @@
#ifndef _BAREBOX_ARM_H_
#define _BAREBOX_ARM_H_
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm-generic/memory_layout.h>
+#include <linux/kernel.h>
+#include <linux/types.h>
/* cpu/.../cpu.c */
int cleanup_before_linux(void);
diff --git a/arch/arm/include/asm/debug_ll_pl011.h b/arch/arm/include/asm/debug_ll_pl011.h
new file mode 100644
index 0000000000..db015a373b
--- /dev/null
+++ b/arch/arm/include/asm/debug_ll_pl011.h
@@ -0,0 +1,25 @@
+#ifndef __INCLUDE_ARM_ASM_DEBUG_LL_PL011_H__
+#define __INCLUDE_ARM_ASM_DEBUG_LL_PL011_H__
+
+#ifndef DEBUG_LL_UART_ADDR
+#error DEBUG_LL_UART_ADDR is undefined!
+#endif
+
+#include <io.h>
+#include <linux/amba/serial.h>
+
+static inline void PUTC_LL(char c)
+{
+ /* Wait until there is space in the FIFO */
+ while (readl(DEBUG_LL_UART_ADDR + UART01x_FR) & UART01x_FR_TXFF)
+ ;
+
+ /* Send the character */
+ writel(c, DEBUG_LL_UART_ADDR + UART01x_DR);
+
+ /* Wait to make sure it hits the line, in case we die too soon. */
+ while (readl(DEBUG_LL_UART_ADDR + UART01x_FR) & UART01x_FR_TXFF)
+ ;
+}
+
+#endif /* __INCLUDE_ARM_ASM_DEBUG_LL_PL011_H__ */
diff --git a/arch/arm/include/asm/system_info.h b/arch/arm/include/asm/system_info.h
index 61828602ef..0761848a1a 100644
--- a/arch/arm/include/asm/system_info.h
+++ b/arch/arm/include/asm/system_info.h
@@ -23,7 +23,7 @@
#define CPU_IS_ARM926 0x41069260
#define CPU_IS_ARM926_MASK 0xff0ffff0
-#define CPU_IS_ARM1176 0x410fb767
+#define CPU_IS_ARM1176 0x410fb760
#define CPU_IS_ARM1176_MASK 0xff0ffff0
#define CPU_IS_CORTEX_A8 0x410fc080
diff --git a/arch/arm/lib/asm-offsets.c b/arch/arm/lib/asm-offsets.c
new file mode 100644
index 0000000000..7bf6d129cf
--- /dev/null
+++ b/arch/arm/lib/asm-offsets.c
@@ -0,0 +1,16 @@
+/*
+ * Generate definitions needed by assembly language modules.
+ * This code generates raw asm output which is post-processed to extract
+ * and format the required data.
+ *
+ * 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.
+ */
+
+#include <linux/kbuild.h>
+
+int main(void)
+{
+ return 0;
+}
diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c
index baf0946a47..8327c3f560 100644
--- a/arch/arm/lib/bootm.c
+++ b/arch/arm/lib/bootm.c
@@ -12,7 +12,7 @@
#include <malloc.h>
#include <fcntl.h>
#include <errno.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <libbb.h>
#include <magicvar.h>
#include <binfmt.h>
diff --git a/arch/arm/lib/bootz.c b/arch/arm/lib/bootz.c
index 377f18a3ac..5167c9d20d 100644
--- a/arch/arm/lib/bootz.c
+++ b/arch/arm/lib/bootz.c
@@ -5,7 +5,7 @@
#include <fcntl.h>
#include <errno.h>
#include <malloc.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/byteorder.h>
#include <asm/armlinux.h>
#include <asm/system.h>
diff --git a/arch/arm/lib/pbl.lds.S b/arch/arm/lib/pbl.lds.S
index 9afee2964a..73baff0ca5 100644
--- a/arch/arm/lib/pbl.lds.S
+++ b/arch/arm/lib/pbl.lds.S
@@ -15,7 +15,7 @@
* GNU General Public License for more details.
*
*/
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm-generic/barebox.lds.h>
#include <asm-generic/memory_layout.h>
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c
index ce0e4160b1..7b68cdac29 100644
--- a/arch/arm/mach-at91/at91rm9200_devices.c
+++ b/arch/arm/mach-at91/at91rm9200_devices.c
@@ -20,7 +20,7 @@
#include <mach/io.h>
#include <mach/at91rm9200_mc.h>
#include <i2c/i2c-gpio.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include "generic.h"
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c
index ed6f9c4b96..67c4ea8601 100644
--- a/arch/arm/mach-at91/at91sam9260_devices.c
+++ b/arch/arm/mach-at91/at91sam9260_devices.c
@@ -11,7 +11,7 @@
*/
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <asm/armlinux.h>
#include <mach/hardware.h>
diff --git a/arch/arm/mach-at91/at91sam9260_lowlevel_init.c b/arch/arm/mach-at91/at91sam9260_lowlevel_init.c
index f745b8de4f..7f84185ef9 100644
--- a/arch/arm/mach-at91/at91sam9260_lowlevel_init.c
+++ b/arch/arm/mach-at91/at91sam9260_lowlevel_init.c
@@ -21,7 +21,7 @@
#include <mach/at91_lowlevel_init.h>
#include <mach/io.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
void __bare_init at91sam9260_lowlevel_init(void)
{
diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c
index ce539e97cb..620ed652dc 100644
--- a/arch/arm/mach-at91/at91sam9261_devices.c
+++ b/arch/arm/mach-at91/at91sam9261_devices.c
@@ -11,7 +11,7 @@
*/
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <asm/armlinux.h>
#include <mach/hardware.h>
diff --git a/arch/arm/mach-at91/at91sam9261_lowlevel_init.c b/arch/arm/mach-at91/at91sam9261_lowlevel_init.c
index b9b4dfbb0e..0ad7f0a0c5 100644
--- a/arch/arm/mach-at91/at91sam9261_lowlevel_init.c
+++ b/arch/arm/mach-at91/at91sam9261_lowlevel_init.c
@@ -21,7 +21,7 @@
#include <mach/at91_lowlevel_init.h>
#include <mach/io.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
void __bare_init at91sam9261_lowlevel_init(void)
{
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c
index 1c9366a28f..a3683e53bf 100644
--- a/arch/arm/mach-at91/at91sam9263_devices.c
+++ b/arch/arm/mach-at91/at91sam9263_devices.c
@@ -11,7 +11,7 @@
*/
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <asm/armlinux.h>
#include <mach/hardware.h>
diff --git a/arch/arm/mach-at91/at91sam9263_lowlevel_init.c b/arch/arm/mach-at91/at91sam9263_lowlevel_init.c
index 00d78f2375..0be84551f8 100644
--- a/arch/arm/mach-at91/at91sam9263_lowlevel_init.c
+++ b/arch/arm/mach-at91/at91sam9263_lowlevel_init.c
@@ -21,7 +21,7 @@
#include <mach/at91_lowlevel_init.h>
#include <mach/io.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
void __bare_init at91sam9263_lowlevel_init(void)
{
diff --git a/arch/arm/mach-at91/at91sam926x_lowlevel_init.c b/arch/arm/mach-at91/at91sam926x_lowlevel_init.c
index 6452bdd794..5dd8bc4e60 100644
--- a/arch/arm/mach-at91/at91sam926x_lowlevel_init.c
+++ b/arch/arm/mach-at91/at91sam926x_lowlevel_init.c
@@ -23,7 +23,7 @@
#include <mach/gpio.h>
#include <mach/io.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include "gpio.h"
diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c
index 789e1ec77e..cc7ad2f39a 100644
--- a/arch/arm/mach-at91/at91sam926x_time.c
+++ b/arch/arm/mach-at91/at91sam926x_time.c
@@ -89,9 +89,9 @@ static int at91_pit_probe(struct device_d *dev)
return ret;
}
- pit_base = dev_request_mem_region(dev, 0);
- if (IS_ERR(pit_base))
- return PTR_ERR(pit_base);
+ pit_base = dev_request_mem_region_err_null(dev, 0);
+ if (!pit_base)
+ return -ENOENT;
pit_rate = clk_get_rate(clk) / 16;
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
index 5af8761532..bad7f9c5ba 100644
--- a/arch/arm/mach-at91/at91sam9g45_devices.c
+++ b/arch/arm/mach-at91/at91sam9g45_devices.c
@@ -11,7 +11,7 @@
*/
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <asm/armlinux.h>
#include <mach/hardware.h>
diff --git a/arch/arm/mach-at91/at91sam9g45_lowlevel_init.c b/arch/arm/mach-at91/at91sam9g45_lowlevel_init.c
index b58f101ee2..2cdb7a6a5f 100644
--- a/arch/arm/mach-at91/at91sam9g45_lowlevel_init.c
+++ b/arch/arm/mach-at91/at91sam9g45_lowlevel_init.c
@@ -14,7 +14,7 @@
#include <mach/io.h>
#include <mach/at91sam9_ddrsdr.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
void __naked __bare_init barebox_arm_reset_vector(void)
{
diff --git a/arch/arm/mach-at91/at91sam9n12_devices.c b/arch/arm/mach-at91/at91sam9n12_devices.c
index 2d9ea4caed..bac023f555 100644
--- a/arch/arm/mach-at91/at91sam9n12_devices.c
+++ b/arch/arm/mach-at91/at91sam9n12_devices.c
@@ -11,7 +11,7 @@
*/
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <asm/armlinux.h>
#include <mach/hardware.h>
diff --git a/arch/arm/mach-at91/at91sam9n12_lowlevel_init.c b/arch/arm/mach-at91/at91sam9n12_lowlevel_init.c
index 72a092899f..2b5cb158b0 100644
--- a/arch/arm/mach-at91/at91sam9n12_lowlevel_init.c
+++ b/arch/arm/mach-at91/at91sam9n12_lowlevel_init.c
@@ -14,7 +14,7 @@
#include <mach/io.h>
#include <mach/at91sam9_ddrsdr.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
void __naked __bare_init barebox_arm_reset_vector(void)
{
diff --git a/arch/arm/mach-at91/at91sam9x5_devices.c b/arch/arm/mach-at91/at91sam9x5_devices.c
index 2d05e94058..34537d8cf9 100644
--- a/arch/arm/mach-at91/at91sam9x5_devices.c
+++ b/arch/arm/mach-at91/at91sam9x5_devices.c
@@ -10,7 +10,7 @@
*
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <asm/armlinux.h>
#include <mach/hardware.h>
diff --git a/arch/arm/mach-at91/at91sam9x5_lowlevel_init.c b/arch/arm/mach-at91/at91sam9x5_lowlevel_init.c
index 7781036e3d..48e69f947d 100644
--- a/arch/arm/mach-at91/at91sam9x5_lowlevel_init.c
+++ b/arch/arm/mach-at91/at91sam9x5_lowlevel_init.c
@@ -14,7 +14,7 @@
#include <mach/io.h>
#include <mach/at91sam9_ddrsdr.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
void __naked __bare_init barebox_arm_reset_vector(void)
{
diff --git a/arch/arm/mach-at91/bootstrap.c b/arch/arm/mach-at91/bootstrap.c
index 4149304c92..2d18dd6b32 100644
--- a/arch/arm/mach-at91/bootstrap.c
+++ b/arch/arm/mach-at91/bootstrap.c
@@ -7,7 +7,7 @@
#include <common.h>
#include <bootstrap.h>
#include <mach/bootstrap.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <malloc.h>
#include <init.h>
#include <menu.h>
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index e2307ed8e6..491b220cad 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -19,7 +19,7 @@
#define __ASM_ARCH_BOARD_H
#include <mach/hardware.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <net.h>
#include <i2c/i2c.h>
#include <spi/spi.h>
diff --git a/arch/arm/mach-at91/sama5d3_devices.c b/arch/arm/mach-at91/sama5d3_devices.c
index 1938c053f9..3fdfca8c68 100644
--- a/arch/arm/mach-at91/sama5d3_devices.c
+++ b/arch/arm/mach-at91/sama5d3_devices.c
@@ -11,7 +11,7 @@
*/
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <asm/armlinux.h>
#include <mach/hardware.h>
diff --git a/arch/arm/mach-at91/sama5d3_lowlevel_init.c b/arch/arm/mach-at91/sama5d3_lowlevel_init.c
index d3fcbc2625..01d28514d1 100644
--- a/arch/arm/mach-at91/sama5d3_lowlevel_init.c
+++ b/arch/arm/mach-at91/sama5d3_lowlevel_init.c
@@ -7,7 +7,7 @@
#define __LOWLEVEL_INIT__
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <init.h>
#include <asm/system.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/mach-at91/sama5d4_devices.c b/arch/arm/mach-at91/sama5d4_devices.c
index 3806971688..e1b0a64d9f 100644
--- a/arch/arm/mach-at91/sama5d4_devices.c
+++ b/arch/arm/mach-at91/sama5d4_devices.c
@@ -12,7 +12,7 @@
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <gpio.h>
#include <asm/armlinux.h>
#include <mach/hardware.h>
diff --git a/arch/arm/mach-bcm2835/core.c b/arch/arm/mach-bcm2835/core.c
index 04bc89751d..7f3d7e7629 100644
--- a/arch/arm/mach-bcm2835/core.c
+++ b/arch/arm/mach-bcm2835/core.c
@@ -25,7 +25,7 @@
#include <io.h>
#include <asm/armlinux.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/platform.h>
#include <mach/wd.h>
diff --git a/arch/arm/mach-bcm2835/include/mach/debug_ll.h b/arch/arm/mach-bcm2835/include/mach/debug_ll.h
new file mode 100644
index 0000000000..be93cd95ad
--- /dev/null
+++ b/arch/arm/mach-bcm2835/include/mach/debug_ll.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2014 Antony Pavlov <antonynpavlov@gmail.com>
+ *
+ * This file is part of barebox.
+ * See file CREDITS for list of people who contributed to this project.
+ *
+ * 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.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __MACH_BCM2835_DEBUG_LL_H__
+#define __MACH_BCM2835_DEBUG_LL_H__
+
+#include <mach/platform.h>
+
+#define DEBUG_LL_UART_ADDR BCM2835_UART0_BASE
+
+#include <asm/debug_ll_pl011.h>
+
+#endif /* __MACH_BCM2835_DEBUG_LL_H__ */
diff --git a/arch/arm/mach-clps711x/clock.c b/arch/arm/mach-clps711x/clock.c
index 548b333b11..f3b4d85e55 100644
--- a/arch/arm/mach-clps711x/clock.c
+++ b/arch/arm/mach-clps711x/clock.c
@@ -9,7 +9,7 @@
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/io.h>
#include <linux/clk.h>
#include <linux/clkdev.h>
diff --git a/arch/arm/mach-clps711x/devices.c b/arch/arm/mach-clps711x/devices.c
index e27476d90e..b6647dec26 100644
--- a/arch/arm/mach-clps711x/devices.c
+++ b/arch/arm/mach-clps711x/devices.c
@@ -9,7 +9,7 @@
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/io.h>
#include <asm/memory.h>
diff --git a/arch/arm/mach-clps711x/lowlevel.c b/arch/arm/mach-clps711x/lowlevel.c
index ff23b05cce..35b8b35e87 100644
--- a/arch/arm/mach-clps711x/lowlevel.c
+++ b/arch/arm/mach-clps711x/lowlevel.c
@@ -9,7 +9,7 @@
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/io.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/mach-ep93xx/lowlevel_init.S b/arch/arm/mach-ep93xx/lowlevel_init.S
index 56057a8bbd..707924606b 100644
--- a/arch/arm/mach-ep93xx/lowlevel_init.S
+++ b/arch/arm/mach-ep93xx/lowlevel_init.S
@@ -20,7 +20,7 @@
*
*/
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/ep93xx-regs.h>
#include <asm/barebox-arm-head.h>
diff --git a/arch/arm/mach-highbank/devices.c b/arch/arm/mach-highbank/devices.c
index 6d75864306..8f9b8e0f45 100644
--- a/arch/arm/mach-highbank/devices.c
+++ b/arch/arm/mach-highbank/devices.c
@@ -5,7 +5,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/amba/bus.h>
diff --git a/arch/arm/mach-highbank/include/mach/debug_ll.h b/arch/arm/mach-highbank/include/mach/debug_ll.h
index 4cdbb3ce51..1820eb1d13 100644
--- a/arch/arm/mach-highbank/include/mach/debug_ll.h
+++ b/arch/arm/mach-highbank/include/mach/debug_ll.h
@@ -7,20 +7,8 @@
#ifndef __MACH_DEBUG_LL_H__
#define __MACH_DEBUG_LL_H__
-#include <linux/amba/serial.h>
-#include <io.h>
+#define DEBUG_LL_UART_ADDR 0xfff36000
-#define UART_BASE 0xfff36000
+#include <asm/debug_ll_pl011.h>
-static inline void PUTC_LL(char c)
-{
- /* Wait until there is space in the FIFO */
- while (readl(UART_BASE + UART01x_FR) & UART01x_FR_TXFF);
-
- /* Send the character */
- writel(c, UART_BASE + UART01x_DR);
-
- /* Wait to make sure it hits the line, in case we die too soon. */
- while (readl(UART_BASE + UART01x_FR) & UART01x_FR_TXFF);
-}
#endif
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index a931de921e..9ac36e1453 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -102,13 +102,11 @@ endchoice
config ARCH_IMX_EXTERNAL_BOOT_NAND
bool
- depends on MTD
depends on ARCH_IMX25 || ARCH_IMX27 || ARCH_IMX31 || ARCH_IMX35
prompt "Support Starting barebox from NAND in external bootmode"
config BAREBOX_UPDATE_IMX_EXTERNAL_NAND
bool
- depends on MTD
depends on ARCH_IMX_EXTERNAL_BOOT_NAND
depends on BAREBOX_UPDATE
depends on MTD
@@ -117,7 +115,6 @@ config BAREBOX_UPDATE_IMX_EXTERNAL_NAND
config BAREBOX_UPDATE_IMX6_NAND
bool
- depends on MTD
depends on ARCH_IMX6
depends on BAREBOX_UPDATE
depends on MTD
diff --git a/arch/arm/mach-imx/esdctl.c b/arch/arm/mach-imx/esdctl.c
index 433cfac1d5..c6479a0e54 100644
--- a/arch/arm/mach-imx/esdctl.c
+++ b/arch/arm/mach-imx/esdctl.c
@@ -19,7 +19,7 @@
#include <common.h>
#include <io.h>
#include <errno.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <init.h>
#include <of.h>
#include <linux/err.h>
diff --git a/arch/arm/mach-imx/imx-bbu-external-nand.c b/arch/arm/mach-imx/imx-bbu-external-nand.c
index 401b3248a8..0f1a028f98 100644
--- a/arch/arm/mach-imx/imx-bbu-external-nand.c
+++ b/arch/arm/mach-imx/imx-bbu-external-nand.c
@@ -24,7 +24,7 @@
#include <errno.h>
#include <fs.h>
#include <fcntl.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/mtd-abi.h>
#include <linux/stat.h>
#include <ioctl.h>
diff --git a/arch/arm/mach-imx/imx-bbu-internal.c b/arch/arm/mach-imx/imx-bbu-internal.c
index 56369a0f94..ac90c53bb7 100644
--- a/arch/arm/mach-imx/imx-bbu-internal.c
+++ b/arch/arm/mach-imx/imx-bbu-internal.c
@@ -25,7 +25,7 @@
#include <errno.h>
#include <fs.h>
#include <fcntl.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/mtd-abi.h>
#include <linux/stat.h>
#include <ioctl.h>
diff --git a/arch/arm/mach-imx/imx25.c b/arch/arm/mach-imx/imx25.c
index 1f87787772..e87d934024 100644
--- a/arch/arm/mach-imx/imx25.c
+++ b/arch/arm/mach-imx/imx25.c
@@ -18,7 +18,7 @@
#include <io.h>
#include <mach/weim.h>
#include <mach/generic.h>
-#include <sizes.h>
+#include <linux/sizes.h>
void imx25_setup_weimcs(size_t cs, unsigned upper, unsigned lower,
unsigned additional)
diff --git a/arch/arm/mach-imx/imx27.c b/arch/arm/mach-imx/imx27.c
index d3eaa87ef6..b99a4eae3f 100644
--- a/arch/arm/mach-imx/imx27.c
+++ b/arch/arm/mach-imx/imx27.c
@@ -15,7 +15,7 @@
#include <mach/imx27-regs.h>
#include <mach/weim.h>
#include <mach/iomux-v1.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/revision.h>
#include <mach/generic.h>
#include <init.h>
diff --git a/arch/arm/mach-imx/imx31.c b/arch/arm/mach-imx/imx31.c
index 3013f0208f..137c77a923 100644
--- a/arch/arm/mach-imx/imx31.c
+++ b/arch/arm/mach-imx/imx31.c
@@ -13,7 +13,7 @@
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <mach/imx31-regs.h>
#include <mach/weim.h>
diff --git a/arch/arm/mach-imx/imx35.c b/arch/arm/mach-imx/imx35.c
index 40f5770c8f..69d45eba66 100644
--- a/arch/arm/mach-imx/imx35.c
+++ b/arch/arm/mach-imx/imx35.c
@@ -12,7 +12,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <init.h>
#include <io.h>
#include <mach/weim.h>
diff --git a/arch/arm/mach-imx/imx5.c b/arch/arm/mach-imx/imx5.c
index 9ec78b2afd..96288f99e0 100644
--- a/arch/arm/mach-imx/imx5.c
+++ b/arch/arm/mach-imx/imx5.c
@@ -1,6 +1,6 @@
#include <common.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/imx5.h>
#include <mach/clock-imx51_53.h>
diff --git a/arch/arm/mach-imx/imx51.c b/arch/arm/mach-imx/imx51.c
index cef302b350..70e8971965 100644
--- a/arch/arm/mach-imx/imx51.c
+++ b/arch/arm/mach-imx/imx51.c
@@ -13,7 +13,7 @@
#include <init.h>
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <environment.h>
#include <io.h>
#include <mach/imx5.h>
diff --git a/arch/arm/mach-imx/imx53.c b/arch/arm/mach-imx/imx53.c
index 62e65e01d4..872d293640 100644
--- a/arch/arm/mach-imx/imx53.c
+++ b/arch/arm/mach-imx/imx53.c
@@ -15,7 +15,7 @@
#include <common.h>
#include <io.h>
#include <notifier.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/imx5.h>
#include <mach/imx53-regs.h>
#include <mach/revision.h>
diff --git a/arch/arm/mach-imx/imx6-bbu-nand.c b/arch/arm/mach-imx/imx6-bbu-nand.c
index 2d0705956c..1b46e514e9 100644
--- a/arch/arm/mach-imx/imx6-bbu-nand.c
+++ b/arch/arm/mach-imx/imx6-bbu-nand.c
@@ -25,7 +25,7 @@
#include <errno.h>
#include <fcntl.h>
#include <ioctl.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <bbu.h>
#include <fs.h>
#include <mach/bbu.h>
diff --git a/arch/arm/mach-imx/imx6.c b/arch/arm/mach-imx/imx6.c
index c5cae6e238..73630e7092 100644
--- a/arch/arm/mach-imx/imx6.c
+++ b/arch/arm/mach-imx/imx6.c
@@ -14,7 +14,7 @@
#include <init.h>
#include <common.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mfd/imx6q-iomuxc-gpr.h>
#include <mach/imx6.h>
#include <mach/generic.h>
diff --git a/arch/arm/mach-imx/include/mach/devices-imx51.h b/arch/arm/mach-imx/include/mach/devices-imx51.h
index 68953293b4..cccd8f4610 100644
--- a/arch/arm/mach-imx/include/mach/devices-imx51.h
+++ b/arch/arm/mach-imx/include/mach/devices-imx51.h
@@ -1,5 +1,5 @@
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/devices.h>
#include <mach/imx51-regs.h>
diff --git a/arch/arm/mach-imx/include/mach/imx31-regs.h b/arch/arm/mach-imx/include/mach/imx31-regs.h
index 599f8008b5..e491328694 100644
--- a/arch/arm/mach-imx/include/mach/imx31-regs.h
+++ b/arch/arm/mach-imx/include/mach/imx31-regs.h
@@ -19,7 +19,7 @@
#ifndef __ASM_ARCH_MX31_REGS_H
#define __ASM_ARCH_MX31_REGS_H
-#include <sizes.h>
+#include <linux/sizes.h>
#define MX31_IRAM_BASE_ADDR 0x1fffc000
#define MX31_IRAM_SIZE 0x00004000
diff --git a/arch/arm/mach-imx/include/mach/imx35-regs.h b/arch/arm/mach-imx/include/mach/imx35-regs.h
index b30037cf83..52e209b4de 100644
--- a/arch/arm/mach-imx/include/mach/imx35-regs.h
+++ b/arch/arm/mach-imx/include/mach/imx35-regs.h
@@ -19,7 +19,7 @@
#ifndef __ASM_ARCH_MX35_REGS_H
#define __ASM_ARCH_MX35_REGS_H
-#include <sizes.h>
+#include <linux/sizes.h>
#define MX35_IRAM_BASE_ADDR 0x10000000 /* internal ram */
#define MX35_IRAM_SIZE SZ_128K
diff --git a/arch/arm/mach-mvebu/lowlevel.c b/arch/arm/mach-mvebu/lowlevel.c
index 7c4facfa1c..8d0ac8453e 100644
--- a/arch/arm/mach-mvebu/lowlevel.c
+++ b/arch/arm/mach-mvebu/lowlevel.c
@@ -17,7 +17,7 @@
#include <common.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm.h>
#include <asm/barebox-arm-head.h>
#include <mach/common.h>
diff --git a/arch/arm/mach-mxs/bcb.c b/arch/arm/mach-mxs/bcb.c
index c945726f53..fce607f634 100644
--- a/arch/arm/mach-mxs/bcb.c
+++ b/arch/arm/mach-mxs/bcb.c
@@ -15,7 +15,7 @@
#include <environment.h>
#include <malloc.h>
#include <nand.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <errno.h>
#include <io.h>
diff --git a/arch/arm/mach-mxs/include/mach/devices.h b/arch/arm/mach-mxs/include/mach/devices.h
index 012bfc4349..5680d61c9e 100644
--- a/arch/arm/mach-mxs/include/mach/devices.h
+++ b/arch/arm/mach-mxs/include/mach/devices.h
@@ -2,7 +2,7 @@
#define __MACH_MXS_DEVICES_H
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <xfuncs.h>
#include <driver.h>
#include <mach/imx-regs.h>
diff --git a/arch/arm/mach-omap/am33xx_scrm.c b/arch/arm/mach-omap/am33xx_scrm.c
index 67529f8226..bb0babeceb 100644
--- a/arch/arm/mach-omap/am33xx_scrm.c
+++ b/arch/arm/mach-omap/am33xx_scrm.c
@@ -15,7 +15,7 @@
#include <common.h>
#include <io.h>
#include <errno.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <init.h>
#include <of.h>
#include <asm/barebox-arm.h>
diff --git a/arch/arm/mach-omap/include/mach/am33xx-devices.h b/arch/arm/mach-omap/include/mach/am33xx-devices.h
index d2411a4fec..4790071c98 100644
--- a/arch/arm/mach-omap/include/mach/am33xx-devices.h
+++ b/arch/arm/mach-omap/include/mach/am33xx-devices.h
@@ -2,7 +2,7 @@
#define __MACH_OMAP3_DEVICES_H
#include <driver.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/am33xx-silicon.h>
#include <mach/devices.h>
#include <mach/omap_hsmmc.h>
diff --git a/arch/arm/mach-omap/include/mach/am33xx-silicon.h b/arch/arm/mach-omap/include/mach/am33xx-silicon.h
index a44973e979..4e63b437ea 100644
--- a/arch/arm/mach-omap/include/mach/am33xx-silicon.h
+++ b/arch/arm/mach-omap/include/mach/am33xx-silicon.h
@@ -17,7 +17,7 @@
#ifndef __ASM_ARCH_AM33XX_H
#define __ASM_ARCH_AM33XX_H
-#include <sizes.h>
+#include <linux/sizes.h>
/** AM335x Internal Bus Base addresses */
#define AM33XX_L4_WKUP_BASE 0x44C00000
diff --git a/arch/arm/mach-omap/include/mach/omap3-devices.h b/arch/arm/mach-omap/include/mach/omap3-devices.h
index 0809e95b11..8c62c99005 100644
--- a/arch/arm/mach-omap/include/mach/omap3-devices.h
+++ b/arch/arm/mach-omap/include/mach/omap3-devices.h
@@ -2,7 +2,7 @@
#define __MACH_OMAP3_DEVICES_H
#include <driver.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/omap3-silicon.h>
#include <mach/devices.h>
#include <mach/mcspi.h>
diff --git a/arch/arm/mach-omap/include/mach/omap3-generic.h b/arch/arm/mach-omap/include/mach/omap3-generic.h
index 92bf7cabbd..7db0838a5f 100644
--- a/arch/arm/mach-omap/include/mach/omap3-generic.h
+++ b/arch/arm/mach-omap/include/mach/omap3-generic.h
@@ -1,7 +1,7 @@
#ifndef __MACH_OMAP3_GENERIC_H
#define __MACH_OMAP3_GENERIC_H
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/string.h>
#include <mach/generic.h>
#include <mach/omap3-silicon.h>
diff --git a/arch/arm/mach-omap/include/mach/omap4-devices.h b/arch/arm/mach-omap/include/mach/omap4-devices.h
index 76c9789729..7ac940b2d7 100644
--- a/arch/arm/mach-omap/include/mach/omap4-devices.h
+++ b/arch/arm/mach-omap/include/mach/omap4-devices.h
@@ -2,7 +2,7 @@
#define __MACH_OMAP4_DEVICES_H
#include <driver.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/devices.h>
#include <mach/omap4-silicon.h>
#include <mach/mcspi.h>
diff --git a/arch/arm/mach-omap/xload.c b/arch/arm/mach-omap/xload.c
index 8d9d84c85c..7c8c350114 100644
--- a/arch/arm/mach-omap/xload.c
+++ b/arch/arm/mach-omap/xload.c
@@ -8,7 +8,7 @@
#include <libfile.h>
#include <fs.h>
#include <fcntl.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <malloc.h>
#include <filetype.h>
#include <xymodem.h>
diff --git a/arch/arm/mach-samsung/lowlevel-s3c24x0.S b/arch/arm/mach-samsung/lowlevel-s3c24x0.S
index 52079ffc7b..626ad04187 100644
--- a/arch/arm/mach-samsung/lowlevel-s3c24x0.S
+++ b/arch/arm/mach-samsung/lowlevel-s3c24x0.S
@@ -15,7 +15,7 @@
*/
#include <config.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/s3c-iomap.h>
.section ".text_bare_init.s3c24x0_disable_wd","ax"
diff --git a/arch/arm/mach-samsung/mem-s3c24x0.c b/arch/arm/mach-samsung/mem-s3c24x0.c
index db61c63b64..bf65150cab 100644
--- a/arch/arm/mach-samsung/mem-s3c24x0.c
+++ b/arch/arm/mach-samsung/mem-s3c24x0.c
@@ -23,7 +23,7 @@
#include <init.h>
#include <clock.h>
#include <io.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/s3c-iomap.h>
#include <mach/s3c-generic.h>
#include <mach/s3c-busctl.h>
diff --git a/arch/arm/mach-socfpga/xload.c b/arch/arm/mach-socfpga/xload.c
index 6586ada349..3380092168 100644
--- a/arch/arm/mach-socfpga/xload.c
+++ b/arch/arm/mach-socfpga/xload.c
@@ -6,7 +6,7 @@
#include <malloc.h>
#include <init.h>
#include <envfs.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <fs.h>
#include <io.h>
diff --git a/arch/arm/mach-tegra/include/mach/iomap.h b/arch/arm/mach-tegra/include/mach/iomap.h
index cdaab6ab8b..bbe6ae6be6 100644
--- a/arch/arm/mach-tegra/include/mach/iomap.h
+++ b/arch/arm/mach-tegra/include/mach/iomap.h
@@ -21,7 +21,7 @@
#ifndef __MACH_TEGRA_IOMAP_H
#define __MACH_TEGRA_IOMAP_H
-#include <sizes.h>
+#include <linux/sizes.h>
#define TEGRA_IRAM_BASE 0x40000000
#define TEGRA_IRAM_SIZE SZ_256K
diff --git a/arch/arm/mach-tegra/include/mach/lowlevel.h b/arch/arm/mach-tegra/include/mach/lowlevel.h
index 3e7e41b990..f1fea86cf6 100644
--- a/arch/arm/mach-tegra/include/mach/lowlevel.h
+++ b/arch/arm/mach-tegra/include/mach/lowlevel.h
@@ -25,7 +25,7 @@
#define __TEGRA_LOWLEVEL_H
#include <linux/compiler.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <mach/iomap.h>
diff --git a/arch/arm/mach-tegra/tegra_maincomplex_init.c b/arch/arm/mach-tegra/tegra_maincomplex_init.c
index 4a362ddba3..6c6bdf6c15 100644
--- a/arch/arm/mach-tegra/tegra_maincomplex_init.c
+++ b/arch/arm/mach-tegra/tegra_maincomplex_init.c
@@ -15,7 +15,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
#include <asm/errata.h>
diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig
index 9a1bf953b0..755fdc168a 100644
--- a/arch/arm/mach-versatile/Kconfig
+++ b/arch/arm/mach-versatile/Kconfig
@@ -1,13 +1,26 @@
if ARCH_VERSATILE
-choice
- prompt "ARM Board type"
+config ARCH_TEXT_BASE
+ default 0x02000000
config MACH_VERSATILEPB
- bool "ARM Versatile/PB (ARM926EJ-S)"
+ bool
+ default y
select ARM_AMBA
select CLKDEV_LOOKUP
+ select HAVE_DEFAULT_ENVIRONMENT_NEW
+
+choice
+ prompt "ARM Board type"
+
+config MACH_VERSATILEPB_926T
+ bool "ARM Versatile/PB (ARM926EJ-S)"
+ select CPU_ARM926T
+
+config MACH_VERSATILEPB_ARM1176
+ bool "ARM Versatile/PB (ARM1176)"
+ select CPU_ARM1176
endchoice
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index 84a85a4ec9..253e408db9 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -26,7 +26,7 @@
#include <init.h>
#include <clock.h>
#include <debug_ll.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/clkdev.h>
#include <linux/clk.h>
diff --git a/arch/arm/mach-versatile/include/mach/debug_ll.h b/arch/arm/mach-versatile/include/mach/debug_ll.h
index f91812b12d..e6ee877a54 100644
--- a/arch/arm/mach-versatile/include/mach/debug_ll.h
+++ b/arch/arm/mach-versatile/include/mach/debug_ll.h
@@ -16,19 +16,8 @@
#ifndef __MACH_DEBUG_LL_H__
#define __MACH_DEBUG_LL_H__
-#include <linux/amba/serial.h>
-#include <io.h>
+#define DEBUG_LL_UART_ADDR 0x101F1000
-static inline void PUTC_LL(char c)
-{
- /* Wait until there is space in the FIFO */
- while (readl(0x101F1000 + UART01x_FR) & UART01x_FR_TXFF);
-
- /* Send the character */
- writel(c, 0x101F1000 + UART01x_DR);
-
- /* Wait to make sure it hits the line, in case we die too soon. */
- while (readl(0x101F1000 + UART01x_FR) & UART01x_FR_TXFF);
-}
+#include <asm/debug_ll_pl011.h>
#endif
diff --git a/arch/arm/mach-vexpress/include/mach/debug_ll.h b/arch/arm/mach-vexpress/include/mach/debug_ll.h
index 15d6e85239..89b06923ad 100644
--- a/arch/arm/mach-vexpress/include/mach/debug_ll.h
+++ b/arch/arm/mach-vexpress/include/mach/debug_ll.h
@@ -14,20 +14,11 @@
#define DEBUG_LL_PHYS_BASE_RS1 0x1c000000
#ifdef MP
-#define UART_BASE DEBUG_LL_PHYS_BASE
+#define DEBUG_LL_UART_ADDR DEBUG_LL_PHYS_BASE
#else
-#define UART_BASE DEBUG_LL_PHYS_BASE_RS1
+#define DEBUG_LL_UART_ADDR DEBUG_LL_PHYS_BASE_RS1
#endif
-static inline void PUTC_LL(char c)
-{
- /* Wait until there is space in the FIFO */
- while (readl(UART_BASE + UART01x_FR) & UART01x_FR_TXFF);
+#include <asm/debug_ll_pl011.h>
- /* Send the character */
- writel(c, UART_BASE + UART01x_DR);
-
- /* Wait to make sure it hits the line, in case we die too soon. */
- while (readl(UART_BASE + UART01x_FR) & UART01x_FR_TXFF);
-}
#endif
diff --git a/arch/blackfin/lib/asm-offsets.c b/arch/blackfin/lib/asm-offsets.c
new file mode 100644
index 0000000000..9003c736ff
--- /dev/null
+++ b/arch/blackfin/lib/asm-offsets.c
@@ -0,0 +1,12 @@
+/*
+ * generate definitions needed by assembly language modules
+ *
+ * Licensed under the GPL-2 or later
+ */
+
+#include <linux/kbuild.h>
+
+int main(void)
+{
+ return 0;
+}
diff --git a/arch/efi/efi/efi-device.c b/arch/efi/efi/efi-device.c
index 1c9553d906..788bb71533 100644
--- a/arch/efi/efi/efi-device.c
+++ b/arch/efi/efi/efi-device.c
@@ -23,7 +23,7 @@
#include <malloc.h>
#include <memory.h>
#include <string.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <wchar.h>
#include <init.h>
#include <efi.h>
diff --git a/arch/efi/efi/efi-image.c b/arch/efi/efi/efi-image.c
index d9edd91e4d..f7bda8dfcb 100644
--- a/arch/efi/efi/efi-image.c
+++ b/arch/efi/efi/efi-image.c
@@ -18,7 +18,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <memory.h>
#include <command.h>
#include <magicvar.h>
diff --git a/arch/efi/efi/efi.c b/arch/efi/efi/efi.c
index 7de8ec82e8..d351775a28 100644
--- a/arch/efi/efi/efi.c
+++ b/arch/efi/efi/efi.c
@@ -18,7 +18,7 @@
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <memory.h>
#include <clock.h>
#include <command.h>
@@ -248,7 +248,7 @@ console_initcall(efi_console_init);
void reset_cpu(unsigned long addr)
{
- BS->exit(efi_parent_image, EFI_SUCCESS, 0, NULL);
+ RT->reset_system(EFI_RESET_WARM, EFI_SUCCESS, 0, NULL);
while(1);
}
@@ -341,3 +341,19 @@ efi_status_t efi_main(efi_handle_t image, efi_system_table_t *sys_table)
return EFI_SUCCESS;
}
+
+static int do_efiexit(int argc, char *argv[])
+{
+ return BS->exit(efi_parent_image, EFI_SUCCESS, 0, NULL);
+}
+
+BAREBOX_CMD_HELP_START(efiexit)
+BAREBOX_CMD_HELP_TEXT("Leave barebox and return to the calling EFI process\n")
+BAREBOX_CMD_HELP_END
+
+BAREBOX_CMD_START(efiexit)
+ .cmd = do_efiexit,
+ BAREBOX_CMD_DESC("Usage: efiexit")
+ BAREBOX_CMD_GROUP(CMD_GRP_MISC)
+ BAREBOX_CMD_HELP(cmd_efiexit_help)
+BAREBOX_CMD_END
diff --git a/arch/efi/lib/asm-offsets.c b/arch/efi/lib/asm-offsets.c
new file mode 100644
index 0000000000..22f382b71e
--- /dev/null
+++ b/arch/efi/lib/asm-offsets.c
@@ -0,0 +1,12 @@
+/*
+ * Generate definitions needed by assembly language modules.
+ * This code generates raw asm output which is post-processed to extract
+ * and format the required data.
+ */
+
+#include <linux/kbuild.h>
+
+int main(void)
+{
+ return 0;
+}
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index f3f4f67d86..6ef2bf75c3 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -148,46 +148,3 @@ dts := arch/mips/dts
$(Q)$(MAKE) $(build)=$(dts) $(dts)/$@
KBUILD_IMAGE ?= $(KBUILD_BINARY)
-
-#####
-# Generate asm-offsets.h
-#
-
-offsets-file := include/generated/asm-offsets.h
-
-always += $(offsets-file)
-targets += $(offsets-file)
-targets += arch/$(SRCARCH)/lib/asm-offsets.s
-
-# Default sed regexp - multiline due to syntax constraints
-define sed-y
- "/^->/{s:->#\(.*\):/* \1 */:; \
- s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
- s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
- s:->::; p;}"
-endef
-
-quiet_cmd_offsets = GEN $@
-define cmd_offsets
- (set -e; \
- echo "#ifndef __ASM_OFFSETS_H__"; \
- echo "#define __ASM_OFFSETS_H__"; \
- echo "/*"; \
- echo " * DO NOT MODIFY."; \
- echo " *"; \
- echo " * This file was generated by Kbuild"; \
- echo " *"; \
- echo " */"; \
- echo ""; \
- sed -ne $(sed-y) $<; \
- echo ""; \
- echo "#endif" ) > $@
-endef
-
-# We use internal kbuild rules to avoid the "is up to date" message from make
-arch/$(SRCARCH)/lib/asm-offsets.s: arch/$(SRCARCH)/lib/asm-offsets.c FORCE
- $(Q)mkdir -p $(dir $@)
- $(call if_changed_dep,cc_s_c)
-
-$(obj)/$(offsets-file): arch/$(SRCARCH)/lib/asm-offsets.s Makefile
- $(call cmd,offsets)
diff --git a/arch/mips/boards/netgear-wg102/ram.c b/arch/mips/boards/netgear-wg102/ram.c
index e26dc7cbd3..4cde573982 100644
--- a/arch/mips/boards/netgear-wg102/ram.c
+++ b/arch/mips/boards/netgear-wg102/ram.c
@@ -1,6 +1,6 @@
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/memory.h>
static int mem_init(void)
diff --git a/arch/mips/boards/qemu-malta/init.c b/arch/mips/boards/qemu-malta/init.c
index 9d90f28651..24bfdc03ee 100644
--- a/arch/mips/boards/qemu-malta/init.c
+++ b/arch/mips/boards/qemu-malta/init.c
@@ -18,7 +18,7 @@
#include <common.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
static int malta_core_init(void)
{
diff --git a/arch/mips/boot/main_entry-pbl.c b/arch/mips/boot/main_entry-pbl.c
index 3a244a0c50..e408d29445 100644
--- a/arch/mips/boot/main_entry-pbl.c
+++ b/arch/mips/boot/main_entry-pbl.c
@@ -19,7 +19,7 @@
#include <common.h>
#include <pbl.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <string.h>
#include <asm/sections.h>
#include <asm-generic/memory_layout.h>
diff --git a/arch/nios2/lib/asm-offsets.c b/arch/nios2/lib/asm-offsets.c
new file mode 100644
index 0000000000..21e4771e54
--- /dev/null
+++ b/arch/nios2/lib/asm-offsets.c
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <linux/kbuild.h>
+
+int main(void)
+{
+ return 0;
+}
diff --git a/arch/openrisc/lib/asm-offsets.c b/arch/openrisc/lib/asm-offsets.c
new file mode 100644
index 0000000000..8cee8e00c6
--- /dev/null
+++ b/arch/openrisc/lib/asm-offsets.c
@@ -0,0 +1,18 @@
+/*
+ * OpenRISC asm-offsets.c
+ *
+ * This program is used to generate definitions needed by
+ * assembly language modules.
+ *
+ * We use the technique used in the OSF Mach kernel code:
+ * generate asm statements containing #defines,
+ * compile this file to assembler, and then extract the
+ * #defines from the assembly-language output.
+ */
+
+#include <linux/kbuild.h>
+
+int main(void)
+{
+ return 0;
+}
diff --git a/arch/ppc/boards/pcm030/pcm030.c b/arch/ppc/boards/pcm030/pcm030.c
index 0762bd4f26..a7fa21d173 100644
--- a/arch/ppc/boards/pcm030/pcm030.c
+++ b/arch/ppc/boards/pcm030/pcm030.c
@@ -30,7 +30,7 @@
#include <types.h>
#include <partition.h>
#include <memory.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/stat.h>
#include <fs.h>
diff --git a/arch/ppc/lib/asm-offsets.c b/arch/ppc/lib/asm-offsets.c
new file mode 100644
index 0000000000..bef280edd7
--- /dev/null
+++ b/arch/ppc/lib/asm-offsets.c
@@ -0,0 +1,21 @@
+/*
+ * This program is used to generate definitions needed by
+ * assembly language modules.
+ *
+ * We use the technique used in the OSF Mach kernel code:
+ * generate asm statements containing #defines,
+ * compile this file to assembler, and then extract the
+ * #defines from the assembly-language output.
+ *
+ * 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.
+ */
+
+#include <linux/kbuild.h>
+
+int main(void)
+{
+ return 0;
+}
diff --git a/arch/sandbox/lib/asm-offsets.c b/arch/sandbox/lib/asm-offsets.c
new file mode 100644
index 0000000000..22f382b71e
--- /dev/null
+++ b/arch/sandbox/lib/asm-offsets.c
@@ -0,0 +1,12 @@
+/*
+ * Generate definitions needed by assembly language modules.
+ * This code generates raw asm output which is post-processed to extract
+ * and format the required data.
+ */
+
+#include <linux/kbuild.h>
+
+int main(void)
+{
+ return 0;
+}
diff --git a/arch/x86/lib/asm-offsets.c b/arch/x86/lib/asm-offsets.c
new file mode 100644
index 0000000000..b1be3e5390
--- /dev/null
+++ b/arch/x86/lib/asm-offsets.c
@@ -0,0 +1,11 @@
+/*
+ * Generate definitions needed by assembly language modules.
+ * This code generates raw asm output which is post-processed to extract
+ * and format the required data.
+ */
+
+#include <linux/kbuild.h>
+
+void common(void)
+{
+}
diff --git a/commands/loadxy.c b/commands/loadxy.c
index df14043d69..1e65cb6221 100644
--- a/commands/loadxy.c
+++ b/commands/loadxy.c
@@ -43,10 +43,10 @@
static int console_change_speed(struct console_device *cdev, int baudrate)
{
int current_baudrate;
+ const char *bstr;
- current_baudrate =
- (int)simple_strtoul(dev_get_param(&cdev->class_dev,
- "baudrate"), NULL, 10);
+ bstr = dev_get_param(&cdev->class_dev, "baudrate");
+ current_baudrate = bstr ? (int)simple_strtoul(bstr, NULL, 10) : 0;
if (baudrate && baudrate != current_baudrate) {
printf("## Switch baudrate from %d to %d bps and press ENTER ...\n",
current_baudrate, baudrate);
diff --git a/common/clock.c b/common/clock.c
index 2ee81da8e7..35c9e6cbb8 100644
--- a/common/clock.c
+++ b/common/clock.c
@@ -22,6 +22,7 @@
*/
#include <common.h>
+#include <init.h>
#include <asm-generic/div64.h>
#include <clock.h>
#include <poller.h>
@@ -35,6 +36,16 @@ static uint64_t time_ns;
*/
uint64_t time_beginning;
+static int dummy_csrc_warn(void)
+{
+ if (!current_clock) {
+ pr_warn("Warning: Using dummy clocksource\n");
+ }
+
+ return 0;
+}
+late_initcall(dummy_csrc_warn);
+
/**
* get_time_ns - get current timestamp in nanoseconds
*/
@@ -44,8 +55,13 @@ uint64_t get_time_ns(void)
uint64_t cycle_now, cycle_delta;
uint64_t ns_offset;
- if (!cs)
- return 0;
+ if (!cs) {
+ static uint64_t dummy_counter;
+
+ dummy_counter += CONFIG_CLOCKSOURCE_DUMMY_RATE;
+
+ return dummy_counter;
+ }
/* read clocksource: */
cycle_now = cs->read() & cs->mask;
diff --git a/common/efi-devicepath.c b/common/efi-devicepath.c
index 2b1d916768..a53c6d2e8b 100644
--- a/common/efi-devicepath.c
+++ b/common/efi-devicepath.c
@@ -1368,3 +1368,18 @@ char *device_path_to_str(struct efi_device_path *dev_path)
return str.str;
}
+
+u8 device_path_to_type(struct efi_device_path *dev_path)
+{
+ struct efi_device_path *dev_path_next;
+
+ dev_path = unpack_device_path(dev_path);
+ dev_path_next = next_device_path_node(dev_path);
+
+ while (!is_device_path_end(dev_path_next)) {
+ dev_path = dev_path_next;
+ dev_path_next = next_device_path_node(dev_path);
+ }
+
+ return device_path_type(dev_path);
+}
diff --git a/common/memtest.c b/common/memtest.c
index 541d008221..25a97d845c 100644
--- a/common/memtest.c
+++ b/common/memtest.c
@@ -24,7 +24,7 @@
#include <common.h>
#include <memory.h>
#include <types.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <errno.h>
#include <memtest.h>
diff --git a/common/startup.c b/common/startup.c
index 2b92efcb95..e59b06d533 100644
--- a/common/startup.c
+++ b/common/startup.c
@@ -51,6 +51,12 @@ static int mount_root(void)
mount("none", "ramfs", "/", NULL);
mkdir("/dev", 0);
mount("none", "devfs", "/dev", NULL);
+
+ if (IS_ENABLED(CONFIG_FS_EFIVARFS)) {
+ mkdir("/efivars", 0);
+ mount("none", "efivarfs", "/efivars", NULL);
+ }
+
return 0;
}
fs_initcall(mount_root);
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 645e9b5b7e..346ab98134 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -32,7 +32,7 @@
#include <disks.h>
#include <asm/mmu.h>
#include <ata_drive.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <clock.h>
#include "ahci.h"
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index e0125a1b92..81b35031a1 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -318,6 +318,22 @@ void __iomem *dev_request_mem_region_by_name(struct device_d *dev, const char *n
}
EXPORT_SYMBOL(dev_request_mem_region_by_name);
+void __iomem *dev_request_mem_region_err_null(struct device_d *dev, int num)
+{
+ struct resource *res;
+
+ res = dev_get_resource(dev, IORESOURCE_MEM, num);
+ if (IS_ERR(res))
+ return NULL;
+
+ res = request_iomem_region(dev_name(dev), res->start, res->end);
+ if (IS_ERR(res))
+ return NULL;
+
+ return (void __force __iomem *)res->start;
+}
+EXPORT_SYMBOL(dev_request_mem_region_err_null);
+
void __iomem *dev_request_mem_region(struct device_d *dev, int num)
{
struct resource *res;
@@ -330,7 +346,7 @@ void __iomem *dev_request_mem_region(struct device_d *dev, int num)
if (IS_ERR(res))
return ERR_CAST(res);
- return (void __force __iomem *)res->start;
+ return IOMEM(res->start);
}
EXPORT_SYMBOL(dev_request_mem_region);
diff --git a/drivers/bus/omap-gpmc.c b/drivers/bus/omap-gpmc.c
index 6cc3269993..6752c42a35 100644
--- a/drivers/bus/omap-gpmc.c
+++ b/drivers/bus/omap-gpmc.c
@@ -11,7 +11,7 @@
#include <driver.h>
#include <malloc.h>
#include <init.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <io.h>
#include <of.h>
#include <of_address.h>
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index fc5a389b95..598edc9a81 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -18,28 +18,21 @@ config CLOCKSOURCE_DIGIC
bool
depends on ARCH_DIGIC
-config CLOCKSOURCE_DUMMY
- bool "Enable dummy software-only clocksource"
+config CLOCKSOURCE_DUMMY_RATE
+ int
+ prompt "dummy clocksource rate"
+ default 1000
help
When porting barebox to a new SoC there might be a case
of broken or absent clocksource. This causes barebox serial
console to be non functional.
- To solve the problem this software-only clocksource driver is used.
- WARNING!!! This clocksource doesn't provide correct timing.
- To adjust this clocksource please use CONFIG_CLOCKSOURCE_DUMMY_RATE.
+ To solve the problem barebox has built-in software-only clocksource.
+ The software-only clocksource is used only if no hardware clocksource
+ is registered. This can help if initialization order is wrong so that
+ the time functions are used before the real clocksource was initialized.
+ WARNING!!! Built-in software-only clocksource doesn't provide correct timing.
+ The option CONFIG_CLOCKSOURCE_DUMMY_RATE is used to adjust this clocksource.
The bigger rate valuest makes clocksource "faster".
- It's possible to add this clocksource unconditionally.
- This clocksource starts very early (pure_initcall) so
- real clocksource will take over.
- This can help if initialization order is wrong so that
- the time functions are used before the real clocksource
- was initialized.
-
-config CLOCKSOURCE_DUMMY_RATE
- int
- prompt "dummy clocksource rate"
- depends on CLOCKSOURCE_DUMMY
- default 1000
config CLOCKSOURCE_MVEBU
bool
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile
index b80df6b2c9..f5f5141a3d 100644
--- a/drivers/clocksource/Makefile
+++ b/drivers/clocksource/Makefile
@@ -3,7 +3,6 @@ obj-$(CONFIG_ARM_SMP_TWD) += arm_smp_twd.o
obj-$(CONFIG_CLOCKSOURCE_BCM2835) += bcm2835.o
obj-$(CONFIG_CLOCKSOURCE_CLPS711X) += clps711x.o
obj-$(CONFIG_CLOCKSOURCE_DIGIC) += digic.o
-obj-$(CONFIG_CLOCKSOURCE_DUMMY) += dummy.o
obj-$(CONFIG_CLOCKSOURCE_MVEBU) += mvebu.o
obj-$(CONFIG_CLOCKSOURCE_NOMADIK) += nomadik.o
obj-$(CONFIG_CLOCKSOURCE_ORION) += orion.o
diff --git a/drivers/clocksource/dummy.c b/drivers/clocksource/dummy.c
deleted file mode 100644
index 96f9b6efca..0000000000
--- a/drivers/clocksource/dummy.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2013 Antony Pavlov <antonynpavlov@gmail.com>
- *
- * This file is part of barebox.
- * See file CREDITS for list of people who contributed to this project.
- *
- * 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.
- *
- * 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.
- *
- */
-
-#include <common.h>
-#include <init.h>
-#include <clock.h>
-
-static uint64_t dummy_counter;
-
-static uint64_t dummy_cs_read(void)
-{
- static int first;
-
- if (!first) {
- pr_warn("Warning: Using dummy clocksource\n");
- first = 1;
- }
-
- dummy_counter += CONFIG_CLOCKSOURCE_DUMMY_RATE;
-
- return dummy_counter;
-}
-
-static struct clocksource dummy_cs = {
- .read = dummy_cs_read,
- .mask = CLOCKSOURCE_MASK(32),
-};
-
-static int clocksource_init(void)
-{
- dummy_counter = 0;
-
- clocks_calc_mult_shift(&dummy_cs.mult, &dummy_cs.shift,
- 100000000, NSEC_PER_SEC, 10);
-
- pr_debug("clocksource_init: mult=%08x, shift=%08x\n",
- dummy_cs.mult, dummy_cs.shift);
-
- return init_clock(&dummy_cs);
-}
-pure_initcall(clocksource_init);
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index 094f5916cf..96c3c2bc87 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -271,11 +271,6 @@ static struct omap_i2c_driver_data am33xx_data = {
.fclk_rate = 48000,
};
-static struct omap_i2c_driver_data omap4_of_data = {
- .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE,
- .fclk_rate = 0,
-};
-
static inline void omap_i2c_write_reg(struct omap_i2c_struct *i2c_omap,
int reg, u16 val)
{
@@ -1011,6 +1006,11 @@ i2c_omap_probe(struct device_d *pdev)
if (r)
return r;
+ if (of_machine_is_compatible("ti,am33xx"))
+ i2c_data = &am33xx_data;
+ if (of_machine_is_compatible("ti,omap4"))
+ i2c_data = &omap4_data;
+
i2c_omap->data = i2c_data;
i2c_omap->reg_shift = (i2c_data->flags >>
OMAP_I2C_FLAG_BUS_SHIFT__SHIFT) & 3;
@@ -1140,7 +1140,6 @@ static __maybe_unused struct of_device_id omap_i2c_dt_ids[] = {
.data = (unsigned long)&omap3_data,
}, {
.compatible = "ti,omap4-i2c",
- .data = (unsigned long)&omap4_of_data,
}, {
/* sentinel */
}
diff --git a/drivers/mtd/nand/nand_ids.c b/drivers/mtd/nand/nand_ids.c
index 52b0da5927..dc0f8c6aa3 100644
--- a/drivers/mtd/nand/nand_ids.c
+++ b/drivers/mtd/nand/nand_ids.c
@@ -9,7 +9,7 @@
*
*/
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/mtd/nand.h>
#ifdef CONFIG_NAND_INFO
diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
index b6618ad675..799fac89a2 100644
--- a/drivers/net/cpsw.c
+++ b/drivers/net/cpsw.c
@@ -910,6 +910,16 @@ static int cpsw_slave_setup(struct cpsw_slave *slave, int slave_num,
struct eth_device *edev = &slave->edev;
struct device_d *dev = &slave->dev;
int ret;
+ struct phy_device *phy;
+
+ phy = mdiobus_scan(&priv->miibus, priv->slaves[slave_num].phy_id);
+ if (IS_ERR(phy))
+ return PTR_ERR(phy);
+
+ phy->dev.device_node = priv->slaves[slave_num].dev.device_node;
+ ret = phy_register_device(phy);
+ if (ret)
+ return ret;
sprintf(dev->name, "cpsw-slave");
dev->id = slave->slave_num;
@@ -1199,22 +1209,11 @@ int cpsw_probe(struct device_d *dev)
mdiobus_register(&priv->miibus);
for (i = 0; i < priv->num_slaves; i++) {
- struct phy_device *phy;
-
- phy = mdiobus_scan(&priv->miibus, priv->slaves[i].phy_id);
- if (IS_ERR(phy)) {
- ret = PTR_ERR(phy);
- goto out;
- }
-
- phy->dev.device_node = priv->slaves[i].dev.device_node;
- ret = phy_register_device(phy);
- if (ret)
- goto out;
-
ret = cpsw_slave_setup(&priv->slaves[i], i, priv);
- if (ret)
- goto out;
+ if (ret) {
+ dev_err(dev, "Failed to setup slave %d: %s\n", i, strerror(-ret));
+ continue;
+ }
}
return 0;
diff --git a/drivers/net/mvneta.c b/drivers/net/mvneta.c
index 7734cf8a44..8042e90951 100644
--- a/drivers/net/mvneta.c
+++ b/drivers/net/mvneta.c
@@ -28,7 +28,7 @@
#include <io.h>
#include <net.h>
#include <of_net.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/mmu.h>
#include <linux/clk.h>
#include <linux/err.h>
diff --git a/drivers/net/orion-gbe.c b/drivers/net/orion-gbe.c
index ab761ad2e0..3fbc1df893 100644
--- a/drivers/net/orion-gbe.c
+++ b/drivers/net/orion-gbe.c
@@ -31,7 +31,7 @@
#include <io.h>
#include <net.h>
#include <of_net.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <asm/mmu.h>
#include <linux/clk.h>
#include <linux/err.h>
diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c
index 5702900e49..19f5763c87 100644
--- a/drivers/net/rtl8169.c
+++ b/drivers/net/rtl8169.c
@@ -50,11 +50,11 @@ struct rtl8169_priv {
struct pci_dev *pci_dev;
int chipset;
- struct bufdesc *tx_desc;
+ volatile struct bufdesc *tx_desc;
void *tx_buf;
unsigned int cur_tx;
- struct bufdesc *rx_desc;
+ volatile struct bufdesc *rx_desc;
void *rx_buf;
unsigned int cur_rx;
@@ -250,10 +250,6 @@ static void rtl8169_init_ring(struct rtl8169_priv *priv)
priv->rx_desc[i].buf_addr =
virt_to_phys(priv->rx_buf + i * PKT_BUF_SIZE);
}
-
- dma_flush_range((unsigned long)priv->rx_desc,
- (unsigned long)priv->rx_desc +
- NUM_RX_DESC * sizeof(struct bufdesc));
}
static void rtl8169_hw_start(struct rtl8169_priv *priv)
@@ -386,14 +382,10 @@ static int rtl8169_eth_send(struct eth_device *edev, void *packet,
((packet_length > ETH_ZLEN) ? packet_length : ETH_ZLEN);
}
- dma_flush_range((unsigned long)&priv->tx_desc[entry],
- (unsigned long)&priv->tx_desc[entry + 1]);
-
RTL_W8(priv, TxPoll, 0x40);
- do {
- dma_inv_range((unsigned long)&priv->tx_desc[entry],
- (unsigned long)&priv->tx_desc[entry + 1]);
- } while (priv->tx_desc[entry].status & BD_STAT_OWN);
+
+ while (priv->tx_desc[entry].status & BD_STAT_OWN)
+ ;
priv->cur_tx++;
@@ -408,9 +400,6 @@ static int rtl8169_eth_rx(struct eth_device *edev)
entry = priv->cur_rx % NUM_RX_DESC;
- dma_inv_range((unsigned long)&priv->rx_desc[entry],
- (unsigned long)&priv->rx_desc[entry + 1]);
-
if ((priv->rx_desc[entry].status & BD_STAT_OWN) == 0) {
if (!(priv->rx_desc[entry].status & BD_STAT_RX_RES)) {
pkt_size = (priv->rx_desc[entry].status & 0x1fff) - 4;
@@ -441,9 +430,6 @@ static int rtl8169_eth_rx(struct eth_device *edev)
priv->rx_desc[entry].buf_addr =
virt_to_phys(priv->rx_buf +
entry * PKT_BUF_SIZE);
-
- dma_flush_range((unsigned long)&priv->rx_desc[entry],
- (unsigned long)&priv->rx_desc[entry + 1]);
} else {
dev_err(&edev->dev, "rx error\n");
}
diff --git a/drivers/net/smc91111.c b/drivers/net/smc91111.c
index 55d93676b2..100688ccf8 100644
--- a/drivers/net/smc91111.c
+++ b/drivers/net/smc91111.c
@@ -152,6 +152,7 @@
/* Memory Information Register */
/* BANK 0 */
#define MIR_REG 0x0008
+#define MIR_FREE_MASK 0xff00
/* Receive/Phy Control Register */
/* BANK 0 */
@@ -582,6 +583,43 @@ static inline void SMC_SELECT_BANK(struct smc91c111_priv *p, int bank)
SMC_outw(p, bank, BANK_SELECT);
}
+#if SMC_DEBUG > 2
+static void print_packet( unsigned char * buf, int length )
+{
+ int i;
+ int remainder;
+ int lines;
+
+ printf("Packet of length %d \n", length );
+
+#if SMC_DEBUG > 3
+ lines = length / 16;
+ remainder = length % 16;
+
+ for ( i = 0; i < lines ; i ++ ) {
+ int cur;
+
+ for ( cur = 0; cur < 8; cur ++ ) {
+ unsigned char a, b;
+
+ a = *(buf ++ );
+ b = *(buf ++ );
+ printf("%02x%02x ", a, b );
+ }
+ printf("\n");
+ }
+ for ( i = 0; i < remainder/2 ; i++ ) {
+ unsigned char a, b;
+
+ a = *(buf ++ );
+ b = *(buf ++ );
+ printf("%02x%02x ", a, b );
+ }
+ printf("\n");
+#endif
+}
+#endif
+
/* note: timeout in seconds */
static int poll4int(struct smc91c111_priv *priv, unsigned char mask,
int timeout)
@@ -916,6 +954,30 @@ static int smc91c111_eth_open(struct eth_device *edev)
return 0;
}
+static void smc91c111_ensure_freemem(struct eth_device *edev)
+{
+ struct smc91c111_priv *priv = (struct smc91c111_priv *)edev->priv;
+ u16 mir, rxfifo;
+
+ SMC_SELECT_BANK(priv, 0);
+ mir = SMC_inw(priv, MIR_REG);
+ SMC_SELECT_BANK(priv, 2);
+
+ if ((mir & MIR_FREE_MASK) == 0) {
+ do {
+ SMC_outw(priv, MC_RELEASE, MMU_CMD_REG);
+ smc_wait_mmu_release_complete(priv);
+
+ SMC_SELECT_BANK(priv, 0);
+ mir = SMC_inw(priv, MIR_REG);
+ SMC_SELECT_BANK(priv, 2);
+ rxfifo = SMC_inw(priv, RXFIFO_REG);
+ dev_dbg(&edev->dev, "%s: card memory saturated, tidying up (rx_tx_fifo=0x%04x mir=0x%04x)\n",
+ SMC_DEV_NAME, rxfifo, mir);
+ } while (!(rxfifo & RXFIFO_REMPTY));
+ }
+}
+
static int smc91c111_eth_send(struct eth_device *edev, void *packet,
int packet_length)
{
@@ -957,6 +1019,7 @@ static int smc91c111_eth_send(struct eth_device *edev, void *packet,
return -EOVERFLOW;
}
+ smc91c111_ensure_freemem(edev);
/* now, try to allocate the memory */
SMC_SELECT_BANK(priv, 2);
SMC_outw(priv, MC_ALLOC | numPages, MMU_CMD_REG);
@@ -1255,44 +1318,6 @@ static void smc_dump_mii_stream (unsigned char * bits, int size)
}
#endif
-
-#if SMC_DEBUG > 2
-static void print_packet( unsigned char * buf, int length )
-{
- int i;
- int remainder;
- int lines;
-
- printf("Packet of length %d \n", length );
-
-#if SMC_DEBUG > 3
- lines = length / 16;
- remainder = length % 16;
-
- for ( i = 0; i < lines ; i ++ ) {
- int cur;
-
- for ( cur = 0; cur < 8; cur ++ ) {
- unsigned char a, b;
-
- a = *(buf ++ );
- b = *(buf ++ );
- printf("%02x%02x ", a, b );
- }
- printf("\n");
- }
- for ( i = 0; i < remainder/2 ; i++ ) {
- unsigned char a, b;
-
- a = *(buf ++ );
- b = *(buf ++ );
- printf("%02x%02x ", a, b );
- }
- printf("\n");
-#endif
-}
-#endif
-
static int smc91c111_init_dev(struct eth_device *edev)
{
return 0;
diff --git a/drivers/of/base.c b/drivers/of/base.c
index e9f0883f47..af10fd1da3 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -24,7 +24,7 @@
#include <malloc.h>
#include <init.h>
#include <memory.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/ctype.h>
#include <linux/amba/bus.h>
#include <linux/err.h>
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index d84b2037cb..dfa95c38c8 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -23,7 +23,7 @@
#include <malloc.h>
#include <init.h>
#include <memory.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/ctype.h>
#include <linux/err.h>
diff --git a/drivers/pci/pci-mvebu.c b/drivers/pci/pci-mvebu.c
index a314a689c0..5e2b87a9e1 100644
--- a/drivers/pci/pci-mvebu.c
+++ b/drivers/pci/pci-mvebu.c
@@ -20,7 +20,7 @@
#include <of_address.h>
#include <of_gpio.h>
#include <of_pci.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include "pci-mvebu.h"
diff --git a/drivers/pci/pci-tegra.c b/drivers/pci/pci-tegra.c
index 1ff3c0d150..1e7907e5b1 100644
--- a/drivers/pci/pci-tegra.c
+++ b/drivers/pci/pci-tegra.c
@@ -32,7 +32,7 @@
#include <linux/pci.h>
#include <linux/phy/phy.h>
#include <linux/reset.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <mach/tegra-powergate.h>
#include <regulator.h>
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 7f8ebcfe43..5b848eeb2a 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1,5 +1,5 @@
#include <common.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <linux/pci.h>
#ifdef DEBUG
diff --git a/drivers/pinctrl/mvebu/armada-370.c b/drivers/pinctrl/mvebu/armada-370.c
index 4778358fad..bcfe40e6c8 100644
--- a/drivers/pinctrl/mvebu/armada-370.c
+++ b/drivers/pinctrl/mvebu/armada-370.c
@@ -17,7 +17,7 @@
#include <malloc.h>
#include <of.h>
#include <of_address.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include "common.h"
diff --git a/drivers/pinctrl/mvebu/armada-xp.c b/drivers/pinctrl/mvebu/armada-xp.c
index 8c71867a7d..1745776a4d 100644
--- a/drivers/pinctrl/mvebu/armada-xp.c
+++ b/drivers/pinctrl/mvebu/armada-xp.c
@@ -26,7 +26,7 @@
#include <malloc.h>
#include <of.h>
#include <of_address.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include "common.h"
diff --git a/drivers/pinctrl/mvebu/dove.c b/drivers/pinctrl/mvebu/dove.c
index bd0a632f1f..a2133a093b 100644
--- a/drivers/pinctrl/mvebu/dove.c
+++ b/drivers/pinctrl/mvebu/dove.c
@@ -15,7 +15,7 @@
#include <malloc.h>
#include <of.h>
#include <of_address.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include "common.h"
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
index 0d6d2e7e53..b803f891eb 100644
--- a/drivers/pinctrl/pinctrl-at91.c
+++ b/drivers/pinctrl/pinctrl-at91.c
@@ -652,9 +652,9 @@ static int at91_gpio_probe(struct device_d *dev)
}
gpio_banks = max(gpio_banks, alias_idx + 1);
- at91_gpio->regbase = dev_request_mem_region(dev, 0);
- if (IS_ERR(at91_gpio->regbase))
- return PTR_ERR(at91_gpio->regbase);
+ at91_gpio->regbase = dev_request_mem_region_err_null(dev, 0);
+ if (!at91_gpio->regbase)
+ return -ENOENT;
at91_gpio->chip.ops = &at91_gpio_ops;
at91_gpio->chip.ngpio = MAX_NB_GPIO_PER_BANK;
diff --git a/drivers/serial/atmel.c b/drivers/serial/atmel.c
index 1f406925a3..4e4624e235 100644
--- a/drivers/serial/atmel.c
+++ b/drivers/serial/atmel.c
@@ -398,9 +398,9 @@ static int atmel_serial_init_port(struct console_device *cdev)
struct device_d *dev = cdev->dev;
struct atmel_uart_port *uart = to_atmel_uart_port(cdev);
- uart->base = dev_request_mem_region(dev, 0);
- if (IS_ERR(uart->base))
- return PTR_ERR(uart->base);
+ uart->base = dev_request_mem_region_err_null(dev, 0);
+ if (!uart->base)
+ return -ENOENT;
uart->clk = clk_get(dev, "usart");
clk_enable(uart->clk);
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index 92a1a218c6..76879db1f1 100644
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -653,7 +653,8 @@ static void do_bootm_on_complete(struct usb_ep *ep, struct usb_request *req)
pr_err("Booting failed\n");
}
-static void cb_boot(struct usb_ep *ep, struct usb_request *req, const char *opt)
+static void __maybe_unused cb_boot(struct usb_ep *ep, struct usb_request *req,
+ const char *opt)
{
struct f_fastboot *f_fb = req->context;
@@ -857,9 +858,11 @@ static const struct cmd_dispatch_info cmd_dispatch_info[] = {
}, {
.cmd = "download:",
.cb = cb_download,
+#if defined(CONFIG_BOOTM)
}, {
.cmd = "boot",
.cb = cb_boot,
+#endif
}, {
.cmd = "flash:",
.cb = cb_flash,
diff --git a/drivers/video/imx-ipu-v3/imx-hdmi.c b/drivers/video/imx-ipu-v3/imx-hdmi.c
index 4f462889a8..2da76a4b7a 100644
--- a/drivers/video/imx-ipu-v3/imx-hdmi.c
+++ b/drivers/video/imx-ipu-v3/imx-hdmi.c
@@ -1190,16 +1190,18 @@ static int imx_hdmi_probe(struct device_d *dev)
if (ret)
return ret;
- ddc_node = of_parse_phandle(np, "ddc-i2c-bus", 0);
- if (ddc_node) {
- hdmi->ddc = of_find_i2c_adapter_by_node(ddc_node);
- if (!hdmi->ddc)
- dev_dbg(hdmi->dev, "failed to read ddc node\n");
- } else {
- dev_dbg(hdmi->dev, "no ddc property found\n");
- }
+ if (IS_ENABLED(CONFIG_DRIVER_VIDEO_EDID)) {
+ ddc_node = of_parse_phandle(np, "ddc-i2c-bus", 0);
+ if (ddc_node) {
+ hdmi->ddc = of_find_i2c_adapter_by_node(ddc_node);
+ if (!hdmi->ddc)
+ dev_dbg(hdmi->dev, "failed to read ddc node\n");
+ } else {
+ dev_dbg(hdmi->dev, "no ddc property found\n");
+ }
- ddc_node = NULL;
+ ddc_node = NULL;
+ }
hdmi->regs = dev_request_mem_region(dev, 0);
if (!hdmi->regs)
diff --git a/fs/efivarfs.c b/fs/efivarfs.c
index 58c637ef19..9a1503bd13 100644
--- a/fs/efivarfs.c
+++ b/fs/efivarfs.c
@@ -1,7 +1,7 @@
/*
- * ramfs.c - a malloc based filesystem
+ * efivars.c - EFI variable filesystem
*
- * Copyright (c) 2007 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix
+ * Copyright (c) 2014 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix
*
* See file CREDITS for list of people who contributed to this
* project.
@@ -34,9 +34,20 @@
#include <mach/efi.h>
#include <mach/efi-device.h>
+struct efivarfs_inode {
+ s16 *name;
+ efi_guid_t vendor;
+ char *full_name; /* name including vendor namespacing */
+ struct list_head node;
+};
+
+struct efivarfs_dir {
+ struct list_head *current;
+ DIR dir;
+};
+
struct efivarfs_priv {
- struct efi_file_handle *root_dir;
- struct efi_file_io_interface *protocol;
+ struct list_head inodes;
};
static int char_to_nibble(char c)
@@ -75,8 +86,8 @@ int efi_guid_parse(const char *str, efi_guid_t *guid)
if (*str != '-')
return -EINVAL;
str++;
- break;
- }
+ break;
+ }
}
return 0;
@@ -115,11 +126,81 @@ static int efivarfs_parse_filename(const char *filename, efi_guid_t *vendor, s16
return 0;
}
+static int efivars_create(struct device_d *dev, const char *pathname, mode_t mode)
+{
+ struct efivarfs_priv *priv = dev->priv;
+ struct efivarfs_inode *inode;
+ efi_guid_t vendor;
+ efi_status_t efiret;
+ u8 dummydata;
+ char *name8;
+ s16 *name;
+ int ret;
+
+ if (pathname[0] == '/')
+ pathname++;
+
+ /* deny creating files with other vendor GUID than our own */
+ ret = efivarfs_parse_filename(pathname, &vendor, &name);
+ if (ret)
+ return -ENOENT;
+
+ if (memcmp(&vendor, &EFI_BAREBOX_VENDOR_GUID, sizeof(efi_guid_t)))
+ return -EPERM;
+
+ inode = xzalloc(sizeof(*inode));
+ inode->name = name;
+ inode->vendor = vendor;
+
+
+ name8 = strdup_wchar_to_char(inode->name);
+ inode->full_name = asprintf("%s-%pUl", name8, &inode->vendor);
+ free(name8);
+
+ efiret = RT->set_variable(inode->name, &inode->vendor,
+ EFI_VARIABLE_NON_VOLATILE |
+ EFI_VARIABLE_BOOTSERVICE_ACCESS |
+ EFI_VARIABLE_RUNTIME_ACCESS,
+ 1, &dummydata);
+ if (EFI_ERROR(efiret)) {
+ free(inode);
+ return -efi_errno(efiret);
+ }
+
+ list_add_tail(&inode->node, &priv->inodes);
+
+ return 0;
+}
+
+static int efivars_unlink(struct device_d *dev, const char *pathname)
+{
+ struct efivarfs_priv *priv = dev->priv;
+ struct efivarfs_inode *inode, *tmp;
+ efi_status_t efiret;
+
+ if (pathname[0] == '/')
+ pathname++;
+
+ list_for_each_entry_safe(inode, tmp, &priv->inodes, node) {
+ if (!strcmp(inode->full_name, pathname)) {
+ efiret = RT->set_variable(inode->name, &inode->vendor,
+ 0, 0, NULL);
+ if (EFI_ERROR(efiret))
+ return -efi_errno(efiret);
+ list_del(&inode->node);
+ free(inode);
+ }
+ }
+
+ return 0;
+}
+
struct efivars_file {
void *buf;
unsigned long size;
efi_guid_t vendor;
s16 *name;
+ u32 attributes;
};
static int efivarfs_open(struct device_d *dev, FILE *f, const char *filename)
@@ -127,7 +208,6 @@ static int efivarfs_open(struct device_d *dev, FILE *f, const char *filename)
struct efivars_file *efile;
efi_status_t efiret;
int ret;
- uint32_t attributes;
efile = xzalloc(sizeof(*efile));
@@ -135,28 +215,27 @@ static int efivarfs_open(struct device_d *dev, FILE *f, const char *filename)
if (ret)
return -ENOENT;
- efiret = RT->get_variable(efile->name, &efile->vendor, &attributes, &efile->size, NULL);
+ efiret = RT->get_variable(efile->name, &efile->vendor,
+ &efile->attributes, &efile->size, NULL);
if (EFI_ERROR(efiret) && efiret != EFI_BUFFER_TOO_SMALL) {
ret = -efi_errno(efiret);
goto out;
}
- efile->buf = malloc(efile->size + sizeof(uint32_t));
+ efile->buf = malloc(efile->size);
if (!efile->buf) {
ret = -ENOMEM;
goto out;
}
efiret = RT->get_variable(efile->name, &efile->vendor, NULL, &efile->size,
- efile->buf + sizeof(uint32_t));
+ efile->buf);
if (EFI_ERROR(efiret)) {
ret = -efi_errno(efiret);
goto out;
}
- *(uint32_t *)efile->buf = attributes;
-
- f->size = efile->size + sizeof(uint32_t);
+ f->size = efile->size;
f->inode = efile;
return 0;
@@ -187,74 +266,68 @@ static int efivarfs_read(struct device_d *_dev, FILE *f, void *buf, size_t insiz
return insize;
}
-static loff_t efivarfs_lseek(struct device_d *dev, FILE *f, loff_t pos)
+static int efivarfs_write(struct device_d *_dev, FILE *f, const void *buf, size_t insize)
{
- f->pos = pos;
-
- return f->pos;
-}
-
-struct efivarfs_dir_entry {
- char *name;
- struct efivarfs_dir_entry *next;
-};
+ struct efivars_file *efile = f->inode;
-struct efivarfs_dir {
- struct efivarfs_dir_entry *first;
- struct efivarfs_dir_entry *current;
- DIR dir;
-};
+ if (efile->size < f->pos + insize) {
+ efile->buf = realloc(efile->buf, f->pos + insize);
+ efile->size = f->pos + insize;
+ }
-static DIR *efivarfs_opendir(struct device_d *dev, const char *pathname)
-{
- efi_status_t efiret;
- efi_guid_t vendor;
- s16 name[1024];
- struct efivarfs_dir *edir;
- unsigned long size;
- unsigned char *name8;
+ memcpy(efile->buf + f->pos, buf, insize);
- name[0] = 0;
+ RT->set_variable(efile->name, &efile->vendor, efile->attributes,
+ efile->size ? efile->size : 1, efile->buf);
- edir = xzalloc(sizeof(*edir));
+ return insize;
+}
- while (1) {
- struct efivarfs_dir_entry *entry;
+static int efivarfs_truncate(struct device_d *dev, FILE *f, ulong size)
+{
+ struct efivars_file *efile = f->inode;
- size = sizeof(name);
- efiret = RT->get_next_variable(&size, name, &vendor);
- if (EFI_ERROR(efiret))
- break;
+ efile->size = size;
+ efile->buf = realloc(efile->buf, efile->size + sizeof(uint32_t));
- entry = xzalloc(sizeof(*entry));
- name8 = strdup_wchar_to_char(name);
+ RT->set_variable(efile->name, &efile->vendor, efile->attributes,
+ efile->size ? efile->size : 1, efile->buf);
- entry->name = asprintf("%s-%pUl", name8, &vendor);
+ f->size = efile->size;
- free(name8);
+ return 0;
+}
- if (!edir->first)
- edir->first = entry;
+static loff_t efivarfs_lseek(struct device_d *dev, FILE *f, loff_t pos)
+{
+ f->pos = pos;
- if (edir->current)
- edir->current->next = entry;
+ return f->pos;
+}
- edir->current = entry;
- }
+static DIR *efivarfs_opendir(struct device_d *dev, const char *pathname)
+{
+ struct efivarfs_priv *priv = dev->priv;
+ struct efivarfs_dir *edir;
- edir->current = edir->first;
+ edir = xzalloc(sizeof(*edir));
+ edir->current = priv->inodes.next;
return &edir->dir;
}
static struct dirent *efivarfs_readdir(struct device_d *dev, DIR *dir)
{
+ struct efivarfs_priv *priv = dev->priv;
struct efivarfs_dir *edir = container_of(dir, struct efivarfs_dir, dir);
+ struct efivarfs_inode *inode;
- if (!edir->current)
+ if (edir->current == &priv->inodes)
return NULL;
- strcpy(dir->d.d_name, edir->current->name);
+ inode = list_entry(edir->current, struct efivarfs_inode, node);
+
+ strcpy(dir->d.d_name, inode->full_name);
edir->current = edir->current->next;
@@ -264,17 +337,6 @@ static struct dirent *efivarfs_readdir(struct device_d *dev, DIR *dir)
static int efivarfs_closedir(struct device_d *dev, DIR *dir)
{
struct efivarfs_dir *edir = container_of(dir, struct efivarfs_dir, dir);
- struct efivarfs_dir_entry *entry;
-
- entry = edir->first;
-
- while (entry) {
- struct efivarfs_dir_entry *tmp;
- free(entry->name);
- tmp = entry->next;
- free(entry);
- entry = tmp;
- }
free(edir);
@@ -308,18 +370,64 @@ static int efivarfs_stat(struct device_d *dev, const char *filename, struct stat
static int efivarfs_probe(struct device_d *dev)
{
+ efi_status_t efiret;
+ efi_guid_t vendor;
+ s16 name[1024];
+ char *name8;
+ unsigned long size;
+ struct efivarfs_priv *priv;
+
+ name[0] = 0;
+
+ priv = xzalloc(sizeof(*priv));
+ INIT_LIST_HEAD(&priv->inodes);
+
+ while (1) {
+ struct efivarfs_inode *inode;
+
+ size = sizeof(name);
+ efiret = RT->get_next_variable(&size, name, &vendor);
+ if (EFI_ERROR(efiret))
+ break;
+
+ inode = xzalloc(sizeof(*inode));
+ inode->name = strdup_wchar(name);
+
+ inode->vendor = vendor;
+
+ name8 = strdup_wchar_to_char(inode->name);
+ inode->full_name = asprintf("%s-%pUl", name8, &vendor);
+ free(name8);
+
+ list_add_tail(&inode->node, &priv->inodes);
+ }
+
+ dev->priv = priv;
+
return 0;
}
static void efivarfs_remove(struct device_d *dev)
{
- free(dev->priv);
+ struct efivarfs_priv *priv = dev->priv;
+ struct efivarfs_inode *inode, *tmp;
+
+ list_for_each_entry_safe(inode, tmp, &priv->inodes, node) {
+ free(inode->name);
+ free(inode);
+ }
+
+ free(priv);
}
static struct fs_driver_d efivarfs_driver = {
+ .create = efivars_create,
+ .unlink = efivars_unlink,
.open = efivarfs_open,
.close = efivarfs_close,
.read = efivarfs_read,
+ .write = efivarfs_write,
+ .truncate = efivarfs_truncate,
.lseek = efivarfs_lseek,
.opendir = efivarfs_opendir,
.readdir = efivarfs_readdir,
diff --git a/fs/nfs.c b/fs/nfs.c
index 046cd4d76c..f1abd0bc5a 100644
--- a/fs/nfs.c
+++ b/fs/nfs.c
@@ -33,7 +33,7 @@
#include <linux/stat.h>
#include <linux/err.h>
#include <kfifo.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <byteorder.h>
#include "parseopt.h"
diff --git a/fs/tftp.c b/fs/tftp.c
index b1a213ec1c..36436197a8 100644
--- a/fs/tftp.c
+++ b/fs/tftp.c
@@ -31,7 +31,7 @@
#include <linux/stat.h>
#include <linux/err.h>
#include <kfifo.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#define TFTP_PORT 69 /* Well known TFTP port number */
diff --git a/include/driver.h b/include/driver.h
index 53e1000067..46aae4f433 100644
--- a/include/driver.h
+++ b/include/driver.h
@@ -206,6 +206,14 @@ void *dev_get_mem_region(struct device_d *dev, int num);
*/
void __iomem *dev_request_mem_region(struct device_d *dev, int num);
+/*
+ * exlusively request register base 'num' for a device
+ * will return NULL on error
+ * only used on platform like at91 where the Ressource address collision with
+ * PTR errno
+ */
+void __iomem *dev_request_mem_region_err_null(struct device_d *dev, int num);
+
struct device_d *device_alloc(const char *devname, int id);
int device_add_resources(struct device_d *dev, const struct resource *res, int num);
diff --git a/include/efi.h b/include/efi.h
index 4ad9f69237..9b4f16bd9f 100644
--- a/include/efi.h
+++ b/include/efi.h
@@ -255,9 +255,11 @@ extern efi_boot_services_t *BS;
/*
* Types and defines for EFI ResetSystem
*/
-#define EFI_RESET_COLD 0
-#define EFI_RESET_WARM 1
-#define EFI_RESET_SHUTDOWN 2
+typedef enum {
+ EFI_RESET_COLD = 0,
+ EFI_RESET_WARM = 1,
+ EFI_RESET_SHUTDOWN = 2
+} efi_reset_type_t;
/*
* EFI Runtime Services table
@@ -277,9 +279,11 @@ typedef struct {
u32 *Attributes, unsigned long *data_size, void *data);
efi_status_t (EFIAPI *get_next_variable)(unsigned long *variable_name_size,
s16 *variable_name, efi_guid_t *vendor);
- void *set_variable;
+ efi_status_t (EFIAPI *set_variable)(s16 *variable_name, efi_guid_t *vendor,
+ u32 Attributes, unsigned long data_size, void *data);
void *get_next_high_mono_count;
- void *reset_system;
+ void (EFIAPI *reset_system)(efi_reset_type_t reset_type, efi_status_t reset_status,
+ unsigned long data_size, void *reset_data);
void *update_capsule;
void *query_capsule_caps;
void *query_variable_info;
@@ -465,6 +469,10 @@ extern efi_runtime_services_t *RT;
#define EFI_VLANCONFIGDXE_INF_GUID \
EFI_GUID(0xe4f61863, 0xfe2c, 0x4b56, 0xa8, 0xf4, 0x08, 0x51, 0x9b, 0xc4, 0x39, 0xdf)
+/* barebox specific GUIDs */
+#define EFI_BAREBOX_VENDOR_GUID \
+ EFI_GUID(0x5b91f69c, 0x8b88, 0x4a2b, 0x92, 0x69, 0x5f, 0x1d, 0x80, 0x2b, 0x51, 0x75)
+
extern efi_guid_t efi_file_info_id;
extern efi_guid_t efi_simple_file_system_protocol_guid;
extern efi_guid_t efi_device_path_protocol_guid;
@@ -615,6 +623,7 @@ static inline int efi_compare_guid(efi_guid_t *a, efi_guid_t *b)
}
char *device_path_to_str(struct efi_device_path *dev_path);
+u8 device_path_to_type(struct efi_device_path *dev_path);
const char *efi_guid_string(efi_guid_t *g);
diff --git a/include/linux/amba/sp804.h b/include/linux/amba/sp804.h
index aba550c374..8ec58f6c18 100644
--- a/include/linux/amba/sp804.h
+++ b/include/linux/amba/sp804.h
@@ -8,7 +8,7 @@
#define __AMBA_SP804_H__
#include <linux/amba/bus.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#define AMBA_ARM_SP804_ID 0x00141804
#define AMBA_ARM_SP804_ID_MASK 0x00ffffff
diff --git a/include/sizes.h b/include/linux/sizes.h
index 6f91e9b4bd..ce3e8150c1 100644
--- a/include/sizes.h
+++ b/include/linux/sizes.h
@@ -1,22 +1,13 @@
/*
- * 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.
+ * include/linux/sizes.h
*
- * 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.
- */
-/* Size defintions
- * Copyright (C) ARM Limited 1998. All rights reserved.
+ * 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.
*/
+#ifndef __LINUX_SIZES_H__
+#define __LINUX_SIZES_H__
-#ifndef __sizes_h
-#define __sizes_h 1
-
-/* handy sizes */
#define SZ_1 0x00000001
#define SZ_2 0x00000002
#define SZ_4 0x00000004
@@ -53,4 +44,4 @@
#define SZ_1G 0x40000000
#define SZ_2G 0x80000000
-#endif /* __sizes_h */
+#endif /* __LINUX_SIZES_H__ */
diff --git a/include/wchar.h b/include/wchar.h
index 80dcd81bf4..702d8e239a 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -5,6 +5,8 @@
typedef u16 wchar_t;
+wchar_t *strdup_wchar(const wchar_t *src);
+
char *strcpy_wchar_to_char(char *dst, const wchar_t *src);
wchar_t *strcpy_char_to_wchar(wchar_t *dst, const char *src);
diff --git a/lib/bootstrap/devfs.c b/lib/bootstrap/devfs.c
index 25d07c761c..704680a4c9 100644
--- a/lib/bootstrap/devfs.c
+++ b/lib/bootstrap/devfs.c
@@ -12,7 +12,7 @@
#include <linux/mtd/mtd.h>
#include <fcntl.h>
#include <filetype.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <errno.h>
#include <malloc.h>
#include <bootstrap.h>
diff --git a/lib/bootstrap/disk.c b/lib/bootstrap/disk.c
index 1e9fbd834b..ebf9ee5a98 100644
--- a/lib/bootstrap/disk.c
+++ b/lib/bootstrap/disk.c
@@ -8,7 +8,7 @@
#include <common.h>
#include <fs.h>
#include <fcntl.h>
-#include <sizes.h>
+#include <linux/sizes.h>
#include <errno.h>
#include <malloc.h>
#include <libfile.h>
diff --git a/lib/gui/graphic_utils.c b/lib/gui/graphic_utils.c
index 300c525b0e..6465f8e3e9 100644
--- a/lib/gui/graphic_utils.c
+++ b/lib/gui/graphic_utils.c
@@ -104,7 +104,7 @@ void set_pixel(struct fb_info *info, void *adr, u32 px)
case 8:
break;
case 16:
- *(u16 *)adr = px;
+ *(u16 *)adr = px & 0xffff;
break;
case 32:
*(u32 *)adr = px;
diff --git a/lib/wchar.c b/lib/wchar.c
index 6368a01994..b2e9e7545b 100644
--- a/lib/wchar.c
+++ b/lib/wchar.c
@@ -31,6 +31,22 @@ size_t wcslen(const wchar_t *s)
return len;
}
+wchar_t *strdup_wchar(const wchar_t *src)
+{
+ int len = wcslen(src);
+ wchar_t *tmp, *dst;
+
+ if (!(dst = malloc((len + 1) * sizeof(wchar_t))))
+ return NULL;
+
+ tmp = dst;
+
+ while ((*dst++ = *src++))
+ /* nothing */;
+
+ return tmp;
+}
+
char *strcpy_wchar_to_char(char *dst, const wchar_t *src)
{
char *ret = dst;