diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-12-06 08:23:24 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-12-06 08:23:24 +0100 |
commit | e9ea6eeaabb15258dbeefe06a421fca8c2fe9baa (patch) | |
tree | 075fbf70c17a50190c3fb290eb6b362177f0d1e5 | |
parent | 18aa86831ed72380b7c2edba3c27bbf7a999da76 (diff) | |
parent | 1e7f2bd25c28b36c7c40ed4797b2a21cc4e1502e (diff) | |
download | barebox-e9ea6eeaabb15258dbeefe06a421fca8c2fe9baa.tar.gz barebox-e9ea6eeaabb15258dbeefe06a421fca8c2fe9baa.tar.xz |
Merge branch 'for-next/misc'
Conflicts:
scripts/Makefile
124 files changed, 413 insertions, 190 deletions
diff --git a/arch/arm/boards/animeo_ip/init.c b/arch/arm/boards/animeo_ip/init.c index 2fee1ff616..13dd948670 100644 --- a/arch/arm/boards/animeo_ip/init.c +++ b/arch/arm/boards/animeo_ip/init.c @@ -15,7 +15,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <sizes.h> #include <linux/mtd/nand.h> diff --git a/arch/arm/boards/at91rm9200ek/init.c b/arch/arm/boards/at91rm9200ek/init.c index 2c8bf0e932..b63b1f7682 100644 --- a/arch/arm/boards/at91rm9200ek/init.c +++ b/arch/arm/boards/at91rm9200ek/init.c @@ -26,7 +26,7 @@ #include <fcntl.h> #include <io.h> #include <sizes.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/at91_pmc.h> #include <mach/board.h> #include <mach/iomux.h> diff --git a/arch/arm/boards/at91sam9261ek/init.c b/arch/arm/boards/at91sam9261ek/init.c index 00fc745c07..a0d81fc74c 100644 --- a/arch/arm/boards/at91sam9261ek/init.c +++ b/arch/arm/boards/at91sam9261ek/init.c @@ -24,7 +24,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <sizes.h> #include <linux/mtd/nand.h> diff --git a/arch/arm/boards/at91sam9263ek/init.c b/arch/arm/boards/at91sam9263ek/init.c index a889b5a4a3..ec59f7226f 100644 --- a/arch/arm/boards/at91sam9263ek/init.c +++ b/arch/arm/boards/at91sam9263ek/init.c @@ -26,7 +26,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <sizes.h> #include <linux/mtd/nand.h> diff --git a/arch/arm/boards/at91sam9m10g45ek/init.c b/arch/arm/boards/at91sam9m10g45ek/init.c index 0ffbec2951..d0a37a6810 100644 --- a/arch/arm/boards/at91sam9m10g45ek/init.c +++ b/arch/arm/boards/at91sam9m10g45ek/init.c @@ -28,7 +28,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <sizes.h> #include <linux/mtd/nand.h> diff --git a/arch/arm/boards/at91sam9m10ihd/init.c b/arch/arm/boards/at91sam9m10ihd/init.c index b75c51de31..92b88740d9 100644 --- a/arch/arm/boards/at91sam9m10ihd/init.c +++ b/arch/arm/boards/at91sam9m10ihd/init.c @@ -15,7 +15,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <sizes.h> #include <linux/mtd/nand.h> diff --git a/arch/arm/boards/at91sam9n12ek/init.c b/arch/arm/boards/at91sam9n12ek/init.c index 779e4f7ead..1912a1d1c1 100644 --- a/arch/arm/boards/at91sam9n12ek/init.c +++ b/arch/arm/boards/at91sam9n12ek/init.c @@ -25,7 +25,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <sizes.h> #include <linux/mtd/nand.h> diff --git a/arch/arm/boards/at91sam9x5ek/init.c b/arch/arm/boards/at91sam9x5ek/init.c index c677e4d401..87a401c316 100644 --- a/arch/arm/boards/at91sam9x5ek/init.c +++ b/arch/arm/boards/at91sam9x5ek/init.c @@ -25,7 +25,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <sizes.h> #include <linux/mtd/nand.h> diff --git a/arch/arm/boards/dmo-mx6-realq7/board.c b/arch/arm/boards/dmo-mx6-realq7/board.c index a456389503..1753bddd51 100644 --- a/arch/arm/boards/dmo-mx6-realq7/board.c +++ b/arch/arm/boards/dmo-mx6-realq7/board.c @@ -27,6 +27,7 @@ #include <init.h> #include <gpio.h> #include <fec.h> +#include <of.h> #include <linux/micrel_phy.h> #include <mfd/stmpe-i2c.h> diff --git a/arch/arm/boards/dss11/init.c b/arch/arm/boards/dss11/init.c index 8e992f446d..51b01c36a3 100644 --- a/arch/arm/boards/dss11/init.c +++ b/arch/arm/boards/dss11/init.c @@ -24,7 +24,7 @@ #include <fs.h> #include <fcntl.h> #include <asm/io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <linux/mtd/nand.h> #include <mach/board.h> diff --git a/arch/arm/boards/efika-mx-smartbook/board.c b/arch/arm/boards/efika-mx-smartbook/board.c index 4469f975fb..0293c3e474 100644 --- a/arch/arm/boards/efika-mx-smartbook/board.c +++ b/arch/arm/boards/efika-mx-smartbook/board.c @@ -23,6 +23,7 @@ #include <led.h> #include <fs.h> #include <io.h> +#include <of.h> #include <spi/spi.h> #include <mfd/mc13xxx.h> diff --git a/arch/arm/boards/freescale-mx51-pdk/board.c b/arch/arm/boards/freescale-mx51-pdk/board.c index ad09781ccd..379313edc6 100644 --- a/arch/arm/boards/freescale-mx51-pdk/board.c +++ b/arch/arm/boards/freescale-mx51-pdk/board.c @@ -24,6 +24,7 @@ #include <generated/mach-types.h> #include <partition.h> #include <fs.h> +#include <of.h> #include <fcntl.h> #include <mach/bbu.h> #include <nand.h> diff --git a/arch/arm/boards/freescale-mx53-loco/board.c b/arch/arm/boards/freescale-mx53-loco/board.c index 15dc591aae..1f00ec046a 100644 --- a/arch/arm/boards/freescale-mx53-loco/board.c +++ b/arch/arm/boards/freescale-mx53-loco/board.c @@ -22,6 +22,7 @@ #include <init.h> #include <fs.h> #include <io.h> +#include <of.h> #include <mfd/mc13xxx.h> #include <i2c/i2c.h> diff --git a/arch/arm/boards/gk802/board.c b/arch/arm/boards/gk802/board.c index fa5f320fdb..a4be03f149 100644 --- a/arch/arm/boards/gk802/board.c +++ b/arch/arm/boards/gk802/board.c @@ -25,6 +25,7 @@ #include <mach/imx6.h> #include <mfd/imx6q-iomuxc-gpr.h> #include <sizes.h> +#include <of.h> #define GK802_GPIO_RECOVERY_BTN IMX_GPIO_NR(3, 16) /* recovery button */ #define GK802_GPIO_RTL8192_PDN IMX_GPIO_NR(2, 0) /* RTL8192CU powerdown */ diff --git a/arch/arm/boards/mmccpu/init.c b/arch/arm/boards/mmccpu/init.c index a666b9d609..506f42001e 100644 --- a/arch/arm/boards/mmccpu/init.c +++ b/arch/arm/boards/mmccpu/init.c @@ -26,7 +26,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <linux/mtd/nand.h> #include <mach/at91_pmc.h> diff --git a/arch/arm/boards/pm9261/init.c b/arch/arm/boards/pm9261/init.c index 8c039b77c6..e5dc99512c 100644 --- a/arch/arm/boards/pm9261/init.c +++ b/arch/arm/boards/pm9261/init.c @@ -27,7 +27,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <linux/mtd/nand.h> #include <mach/at91_pmc.h> diff --git a/arch/arm/boards/pm9263/init.c b/arch/arm/boards/pm9263/init.c index 3bc22f3af2..9d4cf38d1f 100644 --- a/arch/arm/boards/pm9263/init.c +++ b/arch/arm/boards/pm9263/init.c @@ -28,7 +28,7 @@ #include <gpio.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <linux/mtd/nand.h> #include <mach/at91_pmc.h> diff --git a/arch/arm/boards/pm9g45/init.c b/arch/arm/boards/pm9g45/init.c index 75fd8a4be7..9df98ab20c 100644 --- a/arch/arm/boards/pm9g45/init.c +++ b/arch/arm/boards/pm9g45/init.c @@ -27,7 +27,7 @@ #include <fcntl.h> #include <gpio.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <linux/mtd/nand.h> #include <mach/at91_pmc.h> diff --git a/arch/arm/boards/qil-a926x/init.c b/arch/arm/boards/qil-a926x/init.c index 4192923e37..6eb9e12c92 100644 --- a/arch/arm/boards/qil-a926x/init.c +++ b/arch/arm/boards/qil-a926x/init.c @@ -15,7 +15,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <sizes.h> #include <linux/mtd/nand.h> diff --git a/arch/arm/boards/sama5d3xek/init.c b/arch/arm/boards/sama5d3xek/init.c index 482c74a41b..f56ec54dcd 100644 --- a/arch/arm/boards/sama5d3xek/init.c +++ b/arch/arm/boards/sama5d3xek/init.c @@ -24,7 +24,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <sizes.h> #include <linux/mtd/nand.h> diff --git a/arch/arm/boards/tny-a926x/init.c b/arch/arm/boards/tny-a926x/init.c index e3dd784c5a..82a1c4a47e 100644 --- a/arch/arm/boards/tny-a926x/init.c +++ b/arch/arm/boards/tny-a926x/init.c @@ -24,7 +24,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <sizes.h> #include <linux/mtd/nand.h> diff --git a/arch/arm/boards/tqma6x/board.c b/arch/arm/boards/tqma6x/board.c index 3e051a5535..a870bf290f 100644 --- a/arch/arm/boards/tqma6x/board.c +++ b/arch/arm/boards/tqma6x/board.c @@ -27,6 +27,7 @@ #include <init.h> #include <gpio.h> #include <fec.h> +#include <of.h> #include <linux/micrel_phy.h> #include <mfd/stmpe-i2c.h> diff --git a/arch/arm/boards/usb-a926x/init.c b/arch/arm/boards/usb-a926x/init.c index fd2603fc1c..b57e289a13 100644 --- a/arch/arm/boards/usb-a926x/init.c +++ b/arch/arm/boards/usb-a926x/init.c @@ -24,7 +24,7 @@ #include <fs.h> #include <fcntl.h> #include <io.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <nand.h> #include <sizes.h> #include <linux/mtd/nand.h> diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c index 21c63c0cc5..399e6b8330 100644 --- a/arch/arm/cpu/start.c +++ b/arch/arm/cpu/start.c @@ -20,6 +20,7 @@ #include <common.h> #include <init.h> #include <sizes.h> +#include <of.h> #include <asm/barebox-arm.h> #include <asm/barebox-arm-head.h> #include <asm-generic/memory_layout.h> diff --git a/arch/arm/dts/imx6q-phytec-pfla02.dtsi b/arch/arm/dts/imx6q-phytec-pfla02.dtsi index 9410065d3c..d113f7fa7d 100644 --- a/arch/arm/dts/imx6q-phytec-pfla02.dtsi +++ b/arch/arm/dts/imx6q-phytec-pfla02.dtsi @@ -34,6 +34,17 @@ }; }; +&i2c1 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c1_1>; + + eeprom: m24c32@50 { + compatible = "st,24c32", "at24"; + reg = <0x50>; + }; +}; + &iomuxc { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_hog>; diff --git a/arch/arm/include/asm/hardware.h b/arch/arm/include/asm/hardware.h deleted file mode 100644 index c71c2aeab2..0000000000 --- a/arch/arm/include/asm/hardware.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * linux/include/asm-arm/hardware.h - * - * Copyright (C) 1996 Russell King - * - * 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. - * - * Common hardware definitions - */ - -#ifndef __ASM_HARDWARE_H -#define __ASM_HARDWARE_H - -#include <mach/hardware.h> - -#endif diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig index 6ab374e59e..e3eeb2cd97 100644 --- a/arch/arm/mach-at91/Kconfig +++ b/arch/arm/mach-at91/Kconfig @@ -342,7 +342,6 @@ config MACH_QIL_A9G20 Select this if you are using a Calao Systems QIL-A9G20 Board. <http://www.calao-systems.com> - endchoice endif diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c index d740463745..d12e8d97bf 100644 --- a/arch/arm/mach-at91/at91rm9200.c +++ b/arch/arm/mach-at91/at91rm9200.c @@ -1,7 +1,7 @@ #include <common.h> #include <gpio.h> #include <init.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/at91_pmc.h> #include "soc.h" diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c index e3c2996f7d..fbd7884141 100644 --- a/arch/arm/mach-at91/at91sam9260.c +++ b/arch/arm/mach-at91/at91sam9260.c @@ -1,7 +1,7 @@ #include <common.h> #include <gpio.h> #include <init.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/at91_pmc.h> #include "soc.h" diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c index bf2b5b7402..ed6f9c4b96 100644 --- a/arch/arm/mach-at91/at91sam9260_devices.c +++ b/arch/arm/mach-at91/at91sam9260_devices.c @@ -14,7 +14,7 @@ #include <sizes.h> #include <gpio.h> #include <asm/armlinux.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/board.h> #include <mach/at91_pmc.h> #include <mach/at91sam9260_matrix.h> diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c index c992f71eda..37a65ecd3d 100644 --- a/arch/arm/mach-at91/at91sam9261.c +++ b/arch/arm/mach-at91/at91sam9261.c @@ -1,7 +1,7 @@ #include <common.h> #include <gpio.h> #include <init.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/at91_pmc.h> #include "soc.h" diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index 9ac9f20b84..ce539e97cb 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c @@ -14,7 +14,7 @@ #include <sizes.h> #include <gpio.h> #include <asm/armlinux.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/at91_pmc.h> #include <mach/at91sam9261_matrix.h> #include <mach/at91sam9_sdramc.h> diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c index db4a7052b8..35d187b4b5 100644 --- a/arch/arm/mach-at91/at91sam9263.c +++ b/arch/arm/mach-at91/at91sam9263.c @@ -1,7 +1,7 @@ #include <common.h> #include <gpio.h> #include <init.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/at91_pmc.h> #include "soc.h" diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index 6860ad09d3..1c9366a28f 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c @@ -14,7 +14,7 @@ #include <sizes.h> #include <gpio.h> #include <asm/armlinux.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/at91_pmc.h> #include <mach/at91sam9263_matrix.h> #include <mach/at91sam9_sdramc.h> diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c index e18458ac96..644dc34766 100644 --- a/arch/arm/mach-at91/at91sam926x_time.c +++ b/arch/arm/mach-at91/at91sam926x_time.c @@ -28,7 +28,7 @@ #include <common.h> #include <init.h> #include <clock.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/at91_pit.h> #include <mach/io.h> #include <io.h> diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c index bd7ab9333b..5af8761532 100644 --- a/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/arch/arm/mach-at91/at91sam9g45_devices.c @@ -14,7 +14,7 @@ #include <sizes.h> #include <gpio.h> #include <asm/armlinux.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/at91_pmc.h> #include <mach/at91sam9g45_matrix.h> #include <mach/at91sam9_ddrsdr.h> diff --git a/arch/arm/mach-at91/at91sam9n12.c b/arch/arm/mach-at91/at91sam9n12.c index 2a825b4369..c551f9a744 100644 --- a/arch/arm/mach-at91/at91sam9n12.c +++ b/arch/arm/mach-at91/at91sam9n12.c @@ -1,7 +1,7 @@ #include <common.h> #include <gpio.h> #include <init.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/at91_pmc.h> #include <mach/io.h> #include <mach/cpu.h> diff --git a/arch/arm/mach-at91/at91sam9n12_devices.c b/arch/arm/mach-at91/at91sam9n12_devices.c index 3616801349..2d9ea4caed 100644 --- a/arch/arm/mach-at91/at91sam9n12_devices.c +++ b/arch/arm/mach-at91/at91sam9n12_devices.c @@ -14,7 +14,7 @@ #include <sizes.h> #include <gpio.h> #include <asm/armlinux.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/board.h> #include <mach/at91_pmc.h> #include <mach/at91sam9n12_matrix.h> diff --git a/arch/arm/mach-at91/at91sam9x5.c b/arch/arm/mach-at91/at91sam9x5.c index 9ddd592b93..000b7483b2 100644 --- a/arch/arm/mach-at91/at91sam9x5.c +++ b/arch/arm/mach-at91/at91sam9x5.c @@ -1,7 +1,7 @@ #include <common.h> #include <gpio.h> #include <init.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/at91_pmc.h> #include <mach/io.h> #include <mach/cpu.h> diff --git a/arch/arm/mach-at91/at91sam9x5_devices.c b/arch/arm/mach-at91/at91sam9x5_devices.c index f80c1af021..2d05e94058 100644 --- a/arch/arm/mach-at91/at91sam9x5_devices.c +++ b/arch/arm/mach-at91/at91sam9x5_devices.c @@ -13,7 +13,7 @@ #include <sizes.h> #include <gpio.h> #include <asm/armlinux.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/board.h> #include <mach/at91_pmc.h> #include <mach/at91sam9x5_matrix.h> diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index b111373823..91de85d989 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c @@ -438,7 +438,7 @@ static void at91mux_dump_pio_config(unsigned bank, unsigned pin) void __iomem *pio = at91_gpio->regbase; u32 div; - printf("pio%c%d configuration\n\n", bank + 'A', pin); + printf("pio%c%u configuration\n\n", bank + 'A', pin); at91mux_printf_mode(bank, pin); printf("\n"); @@ -499,7 +499,7 @@ static int do_at91mux(int argc, char *argv[]) } if (pin >= 32) { - printf("pin %d >= supported %d pins\n", pin, 32); + printf("pin %u >= supported %d pins\n", pin, 32); return 1; } diff --git a/arch/arm/mach-at91/sama5d3.c b/arch/arm/mach-at91/sama5d3.c index aa681aa1d6..1bfae14f63 100644 --- a/arch/arm/mach-at91/sama5d3.c +++ b/arch/arm/mach-at91/sama5d3.c @@ -1,7 +1,7 @@ #include <common.h> #include <gpio.h> #include <init.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/at91_pmc.h> #include <mach/io.h> #include <mach/cpu.h> diff --git a/arch/arm/mach-at91/sama5d3_devices.c b/arch/arm/mach-at91/sama5d3_devices.c index 9cbc8c1804..1938c053f9 100644 --- a/arch/arm/mach-at91/sama5d3_devices.c +++ b/arch/arm/mach-at91/sama5d3_devices.c @@ -14,7 +14,7 @@ #include <sizes.h> #include <gpio.h> #include <asm/armlinux.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/board.h> #include <mach/at91_pmc.h> #include <mach/at91sam9x5_matrix.h> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index c405b2703d..3a1089f0ed 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -185,8 +185,6 @@ if IMX_MULTI_BOARDS config MACH_EFIKA_MX_SMARTBOOK bool "Efika MX smartbook" select ARCH_IMX51 - select HAVE_DEFAULT_ENVIRONMENT_NEW - select HAVE_PBL_MULTI_IMAGES help Choose this to compile barebox for the Efika MX Smartbook @@ -216,8 +214,6 @@ config MACH_DFI_FS700_M60 config MACH_REALQ7 bool "DataModul i.MX6Q Real Qseven Board" select ARCH_IMX6 - select HAVE_DEFAULT_ENVIRONMENT_NEW - select HAVE_PBL_MULTI_IMAGES config MACH_GK802 bool "Zealz GK802 Mini PC" @@ -266,7 +262,6 @@ config MACH_IMX21ADS Say Y here if you are using the Freescale i.MX21ads board equipped with a Freescale i.MX21 Processor - # ---------------------------------------------------------- comment "i.MX25 Boards" @@ -580,7 +575,7 @@ config ARCH_IMX_USBLOADER config IMX_IIM tristate "IIM fusebox device" - depends on !ARCH_IMX21 && !ARCH_IMX21 + depends on !ARCH_IMX21 help Device driver for the IC Identification Module (IIM) fusebox. Use the regular md/mw commands to program and read the fusebox. diff --git a/arch/arm/mach-imx/clk-imx5.c b/arch/arm/mach-imx/clk-imx5.c index 8c7ed1cbe5..f389653315 100644 --- a/arch/arm/mach-imx/clk-imx5.c +++ b/arch/arm/mach-imx/clk-imx5.c @@ -11,6 +11,7 @@ #include <driver.h> #include <linux/clk.h> #include <io.h> +#include <of.h> #include <linux/clkdev.h> #include <linux/err.h> #include <mach/imx51-regs.h> diff --git a/arch/arm/mach-imx/clk-imx6.c b/arch/arm/mach-imx/clk-imx6.c index 4639c0b71b..c32b6ccb56 100644 --- a/arch/arm/mach-imx/clk-imx6.c +++ b/arch/arm/mach-imx/clk-imx6.c @@ -15,6 +15,7 @@ #include <driver.h> #include <linux/clk.h> #include <io.h> +#include <of.h> #include <linux/clkdev.h> #include <linux/err.h> #include <mach/imx6-regs.h> diff --git a/arch/arm/mach-imx/clocksource.c b/arch/arm/mach-imx/clocksource.c index c04af630c3..dc29d200c0 100644 --- a/arch/arm/mach-imx/clocksource.c +++ b/arch/arm/mach-imx/clocksource.c @@ -29,6 +29,7 @@ #include <init.h> #include <clock.h> #include <errno.h> +#include <of.h> #include <linux/clk.h> #include <linux/err.h> #include <notifier.h> diff --git a/arch/arm/mach-imx/esdctl.c b/arch/arm/mach-imx/esdctl.c index e2025b3327..3ac4075a48 100644 --- a/arch/arm/mach-imx/esdctl.c +++ b/arch/arm/mach-imx/esdctl.c @@ -18,6 +18,7 @@ #include <common.h> #include <io.h> +#include <errno.h> #include <sizes.h> #include <init.h> #include <asm/barebox-arm.h> diff --git a/arch/arm/mach-imx/iim.c b/arch/arm/mach-imx/iim.c index 938c3f377d..dccaaa9e9a 100644 --- a/arch/arm/mach-imx/iim.c +++ b/arch/arm/mach-imx/iim.c @@ -24,7 +24,7 @@ #include <param.h> #include <fcntl.h> #include <malloc.h> - +#include <of.h> #include <io.h> #include <mach/iim.h> diff --git a/arch/arm/mach-imx/imx-bbu-internal.c b/arch/arm/mach-imx/imx-bbu-internal.c index a96b11044e..9861c0782b 100644 --- a/arch/arm/mach-imx/imx-bbu-internal.c +++ b/arch/arm/mach-imx/imx-bbu-internal.c @@ -360,7 +360,8 @@ static void imx_bbu_internal_v2_init_flash_header(struct bbu_handler *handler, s flash_header->self = imx_handler->app_dest + flash_header_offset; flash_header->boot_data.start = imx_handler->app_dest; - flash_header->boot_data.size = ALIGN(imx_pre_image_size + data->len, 4096);; + flash_header->boot_data.size = ALIGN(imx_pre_image_size + + data->len, 4096); if (imx_handler->dcdsize) { flash_header->dcd.header.tag = DCD_HEADER_TAG; diff --git a/arch/arm/mach-imx/imx.c b/arch/arm/mach-imx/imx.c index be44339f7d..07d7ba1be7 100644 --- a/arch/arm/mach-imx/imx.c +++ b/arch/arm/mach-imx/imx.c @@ -12,6 +12,7 @@ */ #include <common.h> +#include <of.h> #include <init.h> #include <mach/revision.h> #include <mach/generic.h> diff --git a/arch/arm/mach-imx/include/mach/bbu.h b/arch/arm/mach-imx/include/mach/bbu.h index 077133a352..3cd3b1e4cf 100644 --- a/arch/arm/mach-imx/include/mach/bbu.h +++ b/arch/arm/mach-imx/include/mach/bbu.h @@ -2,6 +2,7 @@ #define __MACH_BBU_H #include <bbu.h> +#include <errno.h> struct imx_dcd_entry; struct imx_dcd_v2_entry; diff --git a/arch/arm/mach-imx/ocotp.c b/arch/arm/mach-imx/ocotp.c index 04feb84731..e36b484e27 100644 --- a/arch/arm/mach-imx/ocotp.c +++ b/arch/arm/mach-imx/ocotp.c @@ -24,6 +24,7 @@ #include <init.h> #include <net.h> #include <io.h> +#include <of.h> /* * a single MAC address reference has the form diff --git a/arch/arm/mach-mxs/bcb.c b/arch/arm/mach-mxs/bcb.c index b5d793effc..a7f4ba9bdf 100644 --- a/arch/arm/mach-mxs/bcb.c +++ b/arch/arm/mach-mxs/bcb.c @@ -179,7 +179,7 @@ static int calc_bb_offset(struct mtd_info *mtd, struct mx28_fcb *fcb) bb_mark_chunk = bb_mark_offset / chunk_total_size; bb_mark_chunk_offs = bb_mark_offset - (bb_mark_chunk * chunk_total_size); if (bb_mark_chunk_offs > chunk_data_size) { - printf("Unsupported ECC layout; BB mark resides in ECC data: %u\n", + printf("Unsupported ECC layout; BB mark resides in ECC data: %i\n", bb_mark_chunk_offs); return -EINVAL; } @@ -267,12 +267,12 @@ static int find_fcb(struct mtd_info *mtd, void *ref, int page) chip->cmdfunc(mtd, NAND_CMD_READ0, 0x00, page); ret = chip->ecc.read_page_raw(mtd, chip, buf, 1, page); if (ret) { - printf("Failed to read FCB from page %u: %d\n", page, ret); + printf("Failed to read FCB from page %i: %d\n", page, ret); return ret; } chip->select_chip(mtd, -1); if (memcmp(buf, ref, mtd->writesize) == 0) { - printf("%s: Found FCB in page %u (%08x)\n", __func__, + printf("%s: Found FCB in page %i (%08x)\n", __func__, page, page * mtd->writesize); ret = 1; } @@ -376,7 +376,7 @@ int update_bcb(int argc, char *argv[]) ret = write_fcb(mtd, buf, block); if (ret) { - printf("Failed to write FCB to block %u\n", block); + printf("Failed to write FCB to block %i\n", block); return ret; } diff --git a/arch/arm/mach-mxs/include/mach/mci.h b/arch/arm/mach-mxs/include/mach/mci.h index 4faab37dab..c47c24cba8 100644 --- a/arch/arm/mach-mxs/include/mach/mci.h +++ b/arch/arm/mach-mxs/include/mach/mci.h @@ -15,6 +15,7 @@ #define __MACH_MMC_H struct mxs_mci_platform_data { + const char *devname; unsigned caps; /**< supported operating modes (MMC_MODE_*) */ unsigned voltages; /**< supported voltage range (MMC_VDD_*) */ unsigned f_min; /**< min operating frequency in Hz (0 -> no limit) */ diff --git a/arch/arm/mach-mxs/iomux-imx.c b/arch/arm/mach-mxs/iomux-imx.c index b8b69b31ee..24295c5d78 100644 --- a/arch/arm/mach-mxs/iomux-imx.c +++ b/arch/arm/mach-mxs/iomux-imx.c @@ -99,7 +99,7 @@ void imx_gpio_mode(uint32_t m) /* some pins are disabled when configured for GPIO */ if ((gpio_pin > MAX_GPIO_NO) && (GET_FUNC(m) == IS_GPIO)) { - printf("Cannot configure pad %d to GPIO\n", gpio_pin); + printf("Cannot configure pad %u to GPIO\n", gpio_pin); return; } diff --git a/arch/arm/mach-nomadik/8815.c b/arch/arm/mach-nomadik/8815.c index c5cac580d2..af32c9ccb4 100644 --- a/arch/arm/mach-nomadik/8815.c +++ b/arch/arm/mach-nomadik/8815.c @@ -17,7 +17,7 @@ #include <common.h> #include <init.h> #include <linux/clkdev.h> -#include <asm/hardware.h> +#include <mach/hardware.h> #include <mach/hardware.h> #include <asm/armlinux.h> #include <generated/mach-types.h> diff --git a/arch/arm/mach-omap/Kconfig b/arch/arm/mach-omap/Kconfig index b2eec30b9a..42ff384c09 100644 --- a/arch/arm/mach-omap/Kconfig +++ b/arch/arm/mach-omap/Kconfig @@ -95,8 +95,8 @@ config BAREBOX_UPDATE_AM33XX_SPI_NOR_MLO bool depends on BAREBOX_UPDATE help - Say Y for barebox update SPI NOR MLO handler. - AM35xx, AM33xx chips use big endian MLO for SPI NOR flash. + Say Y for barebox update SPI NOR MLO handler. + AM35xx, AM33xx chips use big endian MLO for SPI NOR flash. config ARCH_TEXT_BASE hex diff --git a/arch/ppc/mach-mpc85xx/Kconfig b/arch/ppc/mach-mpc85xx/Kconfig index 80cb0d9e08..dc5708cb56 100644 --- a/arch/ppc/mach-mpc85xx/Kconfig +++ b/arch/ppc/mach-mpc85xx/Kconfig @@ -48,10 +48,10 @@ config MPC8544 default y config DDR_SPD - bool - default y + bool + default y config FSL_DDR2 - bool - default y + bool + default y endif diff --git a/commands/crc.c b/commands/crc.c index ee8dacff0b..824dda4c7d 100644 --- a/commands/crc.c +++ b/commands/crc.c @@ -21,66 +21,8 @@ #include <command.h> #include <fs.h> #include <getopt.h> -#include <fcntl.h> -#include <errno.h> -#include <xfuncs.h> #include <malloc.h> -#include <linux/ctype.h> - -static int file_crc(char* filename, ulong start, ulong size, ulong *crc, - ulong *total) -{ - int fd, now; - int ret = 0; - char *buf; - - *total = 0; - *crc = 0; - - fd = open(filename, O_RDONLY); - if (fd < 0) { - printf("open %s: %s\n", filename, errno_str()); - return fd; - } - - if (start > 0) { - off_t lseek_ret; - errno = 0; - lseek_ret = lseek(fd, start, SEEK_SET); - if (lseek_ret == (off_t)-1 && errno) { - perror("lseek"); - ret = -1; - goto out; - } - } - - buf = xmalloc(4096); - - while (size) { - now = min((ulong)4096, size); - now = read(fd, buf, now); - if (now < 0) { - ret = now; - perror("read"); - goto out_free; - } - if (!now) - break; - *crc = crc32(*crc, buf, now); - size -= now; - *total += now; - } - - printf ("CRC32 for %s 0x%08lx ... 0x%08lx ==> 0x%08lx", - filename, start, start + *total - 1, *crc); - -out_free: - free(buf); -out: - close(fd); - - return ret; -} +#include <environment.h> static int crc_from_file(const char* file, ulong *crc) { @@ -143,6 +85,9 @@ static int do_crc(int argc, char *argv[]) if (file_crc(filename, start, size, &crc, &total) < 0) return 1; + printf("CRC32 for %s 0x%08lx ... 0x%08lx ==> 0x%08lx", + filename, (ulong)start, (ulong)start + total - 1, crc); + #ifdef CONFIG_CMD_CRC_CMP if (vfilename) { size = total; diff --git a/commands/detect.c b/commands/detect.c index 15055e78bc..499994ba78 100644 --- a/commands/detect.c +++ b/commands/detect.c @@ -21,6 +21,7 @@ #include <complete.h> #include <driver.h> #include <getopt.h> +#include <errno.h> static int do_detect(int argc, char *argv[]) { diff --git a/commands/filetype.c b/commands/filetype.c index 20d335bd6d..f82a4616b1 100644 --- a/commands/filetype.c +++ b/commands/filetype.c @@ -12,7 +12,7 @@ #include <magicvar.h> #include <getopt.h> #include <linux/stat.h> -#include <fs.h> +#include <errno.h> static int do_filetype(int argc, char *argv[]) { diff --git a/commands/loadenv.c b/commands/loadenv.c index 14b964340b..df0df27a9d 100644 --- a/commands/loadenv.c +++ b/commands/loadenv.c @@ -24,6 +24,7 @@ #include <getopt.h> #include <command.h> #include <envfs.h> +#include <errno.h> #include <fs.h> static int do_loadenv(int argc, char *argv[]) diff --git a/commands/nandtest.c b/commands/nandtest.c index f6e8f99892..0da5444c02 100644 --- a/commands/nandtest.c +++ b/commands/nandtest.c @@ -163,8 +163,8 @@ static void print_stats(int nr_passes, int length) for (i = 0; i < MAX_ECC_BITS; i++) printf("ECC %d bit error(s) : %d\n", i + 1, ecc_stats[i]); - printf("ECC >%d bit error(s) : %d\n", MAX_ECC_BITS, ecc_stats_over); - printf("ECC corrections failed : %d\n", ecc_failed_cnt); + printf("ECC >%d bit error(s) : %u\n", MAX_ECC_BITS, ecc_stats_over); + printf("ECC corrections failed : %u\n", ecc_failed_cnt); printf("-------------------------\n"); } diff --git a/common/Kconfig b/common/Kconfig index 06edbc2ba4..99a24a0f8f 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -285,6 +285,7 @@ config SIMPLE_READLINE config LONGHELP bool + depends on !SHELL_NONE prompt "Enable long help texts" config CBSIZE @@ -292,11 +293,6 @@ config CBSIZE prompt "Buffer size for input from the Console" default 1024 -config MAXARGS - int - prompt "max. Number of arguments accepted for monitor commands" - default 16 - choice prompt "Select your shell" @@ -328,6 +324,12 @@ choice at the end of the barebox startup process. endchoice +config MAXARGS + int + depends on SHELL_SIMPLE + prompt "max. Number of arguments accepted for monitor commands" + default 16 + config GLOB bool prompt "hush globbing support" @@ -364,6 +366,7 @@ config HUSH_GETOPT This enables a getopt function builtin to hush. config CMDLINE_EDITING + depends on !SHELL_NONE bool prompt "Enable command line editing" @@ -617,6 +620,13 @@ config BAREBOXENV_TARGET 'bareboxenv' is a tool to access the barebox environment from a running Linux system. Say yes here to build it for the target. +config BAREBOXCRC32_TARGET + bool + prompt "build bareboxcrc32 tool for target" + help + 'bareboxcrc32' is a userspacetool to generate the crc32 checksums the same way + barebox does. Say yes here to build it for the target. + config POLLER bool "generic polling infrastructure" diff --git a/common/console.c b/common/console.c index 56bc864ad1..329bc72493 100644 --- a/common/console.c +++ b/common/console.c @@ -25,6 +25,7 @@ #include <console.h> #include <driver.h> #include <fs.h> +#include <of.h> #include <init.h> #include <clock.h> #include <kfifo.h> diff --git a/common/globalvar.c b/common/globalvar.c index 41ce06e468..1f9b0cc1ee 100644 --- a/common/globalvar.c +++ b/common/globalvar.c @@ -1,6 +1,7 @@ #include <common.h> #include <malloc.h> #include <globalvar.h> +#include <errno.h> #include <init.h> #include <environment.h> #include <magicvar.h> diff --git a/common/memory_display.c b/common/memory_display.c index 7e4f4da622..c8ae57a594 100644 --- a/common/memory_display.c +++ b/common/memory_display.c @@ -1,4 +1,5 @@ #include <common.h> +#include <errno.h> #define DISP_LINE_LEN 16 diff --git a/common/memtest.c b/common/memtest.c index 22178cfea2..5303c92f62 100644 --- a/common/memtest.c +++ b/common/memtest.c @@ -25,6 +25,7 @@ #include <memory.h> #include <types.h> #include <sizes.h> +#include <errno.h> #include <memtest.h> static const resource_size_t bitpattern[] = { diff --git a/common/misc.c b/common/misc.c index f73f4cfe99..65f3306bee 100644 --- a/common/misc.c +++ b/common/misc.c @@ -22,6 +22,7 @@ #include <magicvar.h> #include <globalvar.h> #include <environment.h> +#include <of.h> int errno; EXPORT_SYMBOL(errno); diff --git a/common/partitions/dos.c b/common/partitions/dos.c index 31b1ed60d1..37addfd2ef 100644 --- a/common/partitions/dos.c +++ b/common/partitions/dos.c @@ -27,19 +27,23 @@ * @param table partition table * @return sector count */ -static int disk_guess_size(struct device_d *dev, struct partition_entry *table) +static uint64_t disk_guess_size(struct device_d *dev, + struct partition_entry *table) { uint64_t size = 0; int i; for (i = 0; i < 4; i++) { - if (table[i].partition_start != 0) { - size += get_unaligned_le32(&table[i].partition_start) - size; - size += get_unaligned_le32(&table[i].partition_size); + if (get_unaligned_le32(&table[i].partition_start) != 0) { + uint64_t part_end = get_unaligned_le32(&table[i].partition_start) + + get_unaligned_le32(&table[i].partition_size); + + if (size < part_end) + size = part_end; } } - return (int)size; + return size; } static void *read_mbr(struct block_device *blk) @@ -105,19 +109,71 @@ static int dos_get_disk_signature(struct param_d *p, void *_priv) if (!buf) return -EIO; - priv->signature = le32_to_cpup((__le32 *)(buf + 0x1b8)); + priv->signature = get_unaligned_le32(buf + 0x1b8); free(buf); return 0; } +static void dos_extended_partition(struct block_device *blk, struct partition_desc *pd, + struct partition *partition) +{ + uint8_t *buf = dma_alloc(SECTOR_SIZE); + uint32_t ebr_sector = partition->first_sec; + struct partition_entry *table = (struct partition_entry *)&buf[0x1be]; + + while (pd->used_entries < ARRAY_SIZE(pd->parts)) { + int rc, i; + int n = pd->used_entries; + + dev_dbg(blk->dev, "expect EBR in sector %x\n", ebr_sector); + + rc = block_read(blk, buf, ebr_sector, 1); + if (rc != 0) { + dev_err(blk->dev, "Cannot read EBR partition table\n"); + goto out; + } + + /* sanity checks */ + if (buf[0x1fe] != 0x55 || buf[0x1ff] != 0xaa) { + dev_err(blk->dev, "sector %x doesn't contain an EBR signature\n", ebr_sector); + goto out; + } + + for (i = 0x1de; i < 0x1fe; ++i) + if (buf[i]) { + dev_err(blk->dev, "EBR's third or fourth partition non-empty\n"); + goto out; + } + /* /sanity checks */ + + /* the first entry defines the extended partition */ + pd->parts[n].first_sec = ebr_sector + + get_unaligned_le32(&table[0].partition_start); + pd->parts[n].size = get_unaligned_le32(&table[0].partition_size); + pd->parts[n].dos_partition_type = table[0].type; + pd->used_entries++; + + /* the second entry defines the start of the next ebr if != 0 */ + if (get_unaligned_le32(&table[1].partition_start)) + ebr_sector = partition->first_sec + + get_unaligned_le32(&table[1].partition_start); + else + break; + } + +out: + dma_free(buf); + return; +} + /** * Check if a DOS like partition describes this block device * @param blk Block device to register to * @param pd Where to store the partition information * - * It seems at least on ARM this routine canot use temp. stack space for the + * It seems at least on ARM this routine cannot use temp. stack space for the * sector. So, keep the malloc/free. */ static void dos_partition(void *buf, struct block_device *blk, @@ -125,6 +181,7 @@ static void dos_partition(void *buf, struct block_device *blk, { struct partition_entry *table; struct partition pentry; + struct partition *extended_partition = NULL; uint8_t *buffer = buf; int i; struct disk_signature_priv *dsp; @@ -146,11 +203,32 @@ static void dos_partition(void *buf, struct block_device *blk, pd->parts[n].size = pentry.size; pd->parts[n].dos_partition_type = pentry.dos_partition_type; pd->used_entries++; + /* + * Partitions of type 0x05 and 0x0f (and some more) + * contain extended partitions. Only check for type 0x0f + * here as this is the easiest to parse and common + * enough. + */ + if (pentry.dos_partition_type == 0x0f) { + if (!extended_partition) + extended_partition = &pd->parts[n]; + else + /* + * An DOS MBR must only contain a single + * extended partition. Just ignore all + * but the first. + */ + dev_warn(blk->dev, "Skipping additional extended partition\n"); + } + } else { dev_dbg(blk->dev, "Skipping empty partition %d\n", i); } } + if (extended_partition) + dos_extended_partition(blk, pd, extended_partition); + dsp = xzalloc(sizeof(*dsp)); dsp->blk = blk; diff --git a/common/startup.c b/common/startup.c index 2e0a4ba3dc..74c7735e31 100644 --- a/common/startup.c +++ b/common/startup.c @@ -35,6 +35,7 @@ #include <malloc.h> #include <debug_ll.h> #include <fs.h> +#include <errno.h> #include <linux/stat.h> #include <envfs.h> #include <asm/sections.h> diff --git a/crypto/crc32.c b/crypto/crc32.c index 275edb4c52..e7b1bd76b6 100644 --- a/crypto/crc32.c +++ b/crypto/crc32.c @@ -10,6 +10,12 @@ #ifdef __BAREBOX__ /* Shut down "ANSI does not permit..." warnings */ #include <common.h> +#include <xfuncs.h> +#include <fs.h> +#include <fcntl.h> +#include <malloc.h> +#include <linux/ctype.h> +#include <errno.h> #endif #ifdef CONFIG_DYNAMIC_CRC_TABLE @@ -178,3 +184,57 @@ uint32_t crc32_no_comp(uint32_t crc, const void *_buf, unsigned int len) return crc; } +int file_crc(char *filename, ulong start, ulong size, ulong *crc, + ulong *total) +{ + int fd, now; + int ret = 0; + char *buf; + + *total = 0; + *crc = 0; + + fd = open(filename, O_RDONLY); + if (fd < 0) { + printf("open %s: %s\n", filename, strerror(errno)); + return fd; + } + + if (start > 0) { + off_t lseek_ret; + errno = 0; + lseek_ret = lseek(fd, start, SEEK_SET); + if (lseek_ret == (off_t)-1 && errno) { + perror("lseek"); + ret = -1; + goto out; + } + } + + buf = xmalloc(4096); + + while (size) { + now = min((ulong)4096, size); + now = read(fd, buf, now); + if (now < 0) { + ret = now; + perror("read"); + goto out_free; + } + if (!now) + break; + *crc = crc32(*crc, buf, now); + size -= now; + *total += now; + } + +out_free: + free(buf); +out: + close(fd); + + return ret; +} +#ifdef __BAREBOX__ +EXPORT_SYMBOL(file_crc); +#endif diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index f9cf2d1436..9ba18a3c6e 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -29,6 +29,7 @@ #include <init.h> #include <errno.h> #include <io.h> +#include <of.h> #include <malloc.h> #include <scsi.h> #include <linux/ctype.h> @@ -375,7 +376,7 @@ static int ahci_init_port(struct ahci_port *ahci_port) ret = wait_on_timeout(WAIT_LINKUP, (ahci_port_read(ahci_port, PORT_SCR_STAT) & 0xf) == 0x3); if (ret) { - ahci_port_info(ahci_port, "SATA link timeout\n");; + ahci_port_info(ahci_port, "SATA link timeout\n"); ret = -ETIMEDOUT; goto err_init; } diff --git a/drivers/ata/ide-sff.c b/drivers/ata/ide-sff.c index a7f2647afd..3d5932e278 100644 --- a/drivers/ata/ide-sff.c +++ b/drivers/ata/ide-sff.c @@ -1,6 +1,7 @@ #include <common.h> #include <ata_drive.h> #include <io.h> +#include <errno.h> #include <clock.h> #include <disks.h> #include <malloc.h> diff --git a/drivers/ata/pata-imx.c b/drivers/ata/pata-imx.c index 0e348069fe..7f9e39b503 100644 --- a/drivers/ata/pata-imx.c +++ b/drivers/ata/pata-imx.c @@ -30,6 +30,7 @@ #include <ata_drive.h> #include <platform_ide.h> #include <io.h> +#include <of.h> #include <linux/err.h> #include <linux/clk.h> diff --git a/drivers/ata/sata-imx.c b/drivers/ata/sata-imx.c index ef7989e610..b7bd1107cc 100644 --- a/drivers/ata/sata-imx.c +++ b/drivers/ata/sata-imx.c @@ -1,6 +1,7 @@ #include <common.h> #include <ata_drive.h> #include <io.h> +#include <of.h> #include <clock.h> #include <disks.h> #include <driver.h> diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 4357020241..b383d09c3e 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c @@ -7,6 +7,7 @@ #include <common.h> #include <driver.h> #include <errno.h> +#include <of.h> LIST_HEAD(bus_list); EXPORT_SYMBOL(bus_list); diff --git a/drivers/base/driver.c b/drivers/base/driver.c index 80e0ea882f..4250fb0912 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c @@ -30,6 +30,7 @@ #include <linux/ctype.h> #include <errno.h> #include <fs.h> +#include <of.h> #include <linux/list.h> #include <complete.h> #include <pinctrl.h> diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 34a79b2caa..e053ec7bbc 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -20,6 +20,7 @@ #include <driver.h> #include <errno.h> #include <init.h> +#include <of.h> static int platform_probe(struct device_d *dev) { diff --git a/drivers/eeprom/at24.c b/drivers/eeprom/at24.c index 4b2afc4775..5e5b359d94 100644 --- a/drivers/eeprom/at24.c +++ b/drivers/eeprom/at24.c @@ -435,6 +435,8 @@ static int at24_probe(struct device_d *dev) devfs_create(&at24->cdev); + of_parse_partitions(&at24->cdev, dev->device_node); + return 0; err_clients: diff --git a/drivers/gpio/gpio-imx.c b/drivers/gpio/gpio-imx.c index 063a81c896..a71492a3c3 100644 --- a/drivers/gpio/gpio-imx.c +++ b/drivers/gpio/gpio-imx.c @@ -23,6 +23,7 @@ #include <common.h> #include <errno.h> #include <io.h> +#include <of.h> #include <gpio.h> #include <init.h> diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index c607bcba1a..f657c287f7 100644 --- a/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c @@ -34,6 +34,7 @@ #include <common.h> #include <driver.h> #include <init.h> +#include <of.h> #include <malloc.h> #include <types.h> #include <xfuncs.h> diff --git a/drivers/i2c/i2c.c b/drivers/i2c/i2c.c index ccc484480f..3b9f601f68 100644 --- a/drivers/i2c/i2c.c +++ b/drivers/i2c/i2c.c @@ -22,6 +22,7 @@ #include <malloc.h> #include <xfuncs.h> #include <init.h> +#include <of.h> #include <i2c/i2c.h> diff --git a/drivers/mci/imx-esdhc.c b/drivers/mci/imx-esdhc.c index 8da7097c43..7664e7be4c 100644 --- a/drivers/mci/imx-esdhc.c +++ b/drivers/mci/imx-esdhc.c @@ -24,6 +24,7 @@ #include <common.h> #include <driver.h> #include <init.h> +#include <of.h> #include <malloc.h> #include <mci.h> #include <clock.h> diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c index cfae91b2ea..a232679571 100644 --- a/drivers/mci/mci-core.c +++ b/drivers/mci/mci-core.c @@ -34,6 +34,7 @@ #include <asm/byteorder.h> #include <block.h> #include <disks.h> +#include <of.h> #include <linux/err.h> #define MAX_BUFFER_NUMBER 0xffffffff @@ -831,7 +832,7 @@ static void mci_extract_card_capacity_from_csd(struct mci *mci) mci->capacity = (csize + 1) << (cmult + 2); } - mci->capacity *= 1 << UNSTUFF_BITS(mci->csd, 80, 4);; + mci->capacity *= 1 << UNSTUFF_BITS(mci->csd, 80, 4); dev_dbg(&mci->dev, "Capacity: %u MiB\n", (unsigned)(mci->capacity >> 20)); } diff --git a/drivers/mci/mxs.c b/drivers/mci/mxs.c index 1b935f7ce6..bf928e80ff 100644 --- a/drivers/mci/mxs.c +++ b/drivers/mci/mxs.c @@ -570,6 +570,7 @@ static int mxs_mci_probe(struct device_d *hw_dev) /* feed forward the platform specific values */ host->voltages = pd->voltages; host->host_caps = pd->caps; + host->devname = pd->devname; mxs_mci->clk = clk_get(hw_dev, NULL); if (IS_ERR(mxs_mci->clk)) diff --git a/drivers/mfd/mc13xxx.c b/drivers/mfd/mc13xxx.c index cf4c02aa05..bfbd328323 100644 --- a/drivers/mfd/mc13xxx.c +++ b/drivers/mfd/mc13xxx.c @@ -21,6 +21,7 @@ #include <xfuncs.h> #include <errno.h> #include <malloc.h> +#include <of.h> #include <i2c/i2c.h> #include <spi/spi.h> diff --git a/drivers/mfd/stmpe-i2c.c b/drivers/mfd/stmpe-i2c.c index 3a2db923fd..c1e7d9ece4 100644 --- a/drivers/mfd/stmpe-i2c.c +++ b/drivers/mfd/stmpe-i2c.c @@ -19,6 +19,7 @@ #include <driver.h> #include <xfuncs.h> #include <errno.h> +#include <of.h> #include <i2c/i2c.h> #include <mfd/stmpe-i2c.h> diff --git a/drivers/mtd/core.c b/drivers/mtd/core.c index f63b10e9cd..33f900e732 100644 --- a/drivers/mtd/core.c +++ b/drivers/mtd/core.c @@ -25,6 +25,7 @@ #include <ioctl.h> #include <nand.h> #include <errno.h> +#include <of.h> #include "mtd.h" diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c index 1e3bc936f1..959401138d 100644 --- a/drivers/mtd/devices/m25p80.c +++ b/drivers/mtd/devices/m25p80.c @@ -17,6 +17,7 @@ #include <common.h> #include <init.h> #include <driver.h> +#include <of.h> #include <spi/spi.h> #include <spi/flash.h> #include <xfuncs.h> diff --git a/drivers/mtd/devices/mtd_dataflash.c b/drivers/mtd/devices/mtd_dataflash.c index d785e33dae..cdc0120c53 100644 --- a/drivers/mtd/devices/mtd_dataflash.c +++ b/drivers/mtd/devices/mtd_dataflash.c @@ -17,6 +17,7 @@ #include <linux/err.h> #include <errno.h> #include <io.h> +#include <of.h> #include <clock.h> #include <spi/spi.h> diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 5d7d20f08d..c62641684e 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -62,7 +62,7 @@ config DRIVER_NET_SMC91111 config DRIVER_NET_DAVINCI_EMAC bool "TI Davinci/OMAP EMAC ethernet driver" - depends on ARCH_DAVINCI || ARCH_OMAP3 + depends on ARCH_OMAP3 select PHYLIB config DRIVER_NET_DM9K diff --git a/drivers/net/altera_tse.c b/drivers/net/altera_tse.c index 1a442781a9..6978e2a2ea 100644 --- a/drivers/net/altera_tse.c +++ b/drivers/net/altera_tse.c @@ -376,7 +376,7 @@ static int tse_eth_send(struct eth_device *edev, void *packet, int length) alt_sgdma_do_sync_transfer(tx_sgdma, tx_desc_cur); - return 0;; + return 0; } static void tse_eth_halt(struct eth_device *edev) diff --git a/drivers/net/netx_eth.c b/drivers/net/netx_eth.c index 9ca9bce1f8..309f4cb738 100644 --- a/drivers/net/netx_eth.c +++ b/drivers/net/netx_eth.c @@ -86,7 +86,7 @@ static int netx_eth_send (struct eth_device *edev, #endif val = PFIFO_REG( PFIFO_BASE(CON_FIFO_PORT_LO(xcno)) ); if((val & FIFO_PTR_ERROR_MASK) & 0x8) - printf("error sending frame: %d\n",val); + printf("error sending frame: %u\n", val); return 0; } diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index 6163a50652..87072be289 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -82,7 +82,7 @@ struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr) return bus->phy_map[addr]; phydev = get_phy_device(bus, addr); - if (IS_ERR(phydev) || phydev == NULL) + if (IS_ERR(phydev)) return phydev; bus->phy_map[addr] = phydev; diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index db00e38bbc..2a33054589 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -217,7 +217,7 @@ struct phy_device *get_phy_device(struct mii_bus *bus, int addr) /* If the phy_id is mostly Fs, there is no device there */ if ((phy_id & 0x1fffffff) == 0x1fffffff) - return NULL; + return ERR_PTR(-ENODEV); dev = phy_device_create(bus, addr, phy_id); @@ -254,7 +254,7 @@ int phy_device_connect(struct eth_device *edev, struct mii_bus *bus, int addr, if (!edev->phydev) { if (addr >= 0) { dev = mdiobus_scan(bus, addr); - if (!dev) { + if (IS_ERR(dev)) { ret = -EIO; goto fail; } @@ -273,7 +273,7 @@ int phy_device_connect(struct eth_device *edev, struct mii_bus *bus, int addr, continue; dev = mdiobus_scan(bus, i); - if (!dev || dev->attached_dev) + if (IS_ERR(dev) || dev->attached_dev) continue; dev->attached_dev = edev; @@ -304,7 +304,7 @@ int phy_device_connect(struct eth_device *edev, struct mii_bus *bus, int addr, return 0; fail: - if (dev) + if (!IS_ERR(dev)) dev->attached_dev = NULL; puts("Unable to find a PHY (unknown ID?)\n"); return ret; diff --git a/drivers/pinctrl/imx-iomux-v3.c b/drivers/pinctrl/imx-iomux-v3.c index 1223c02730..7fcbb98d03 100644 --- a/drivers/pinctrl/imx-iomux-v3.c +++ b/drivers/pinctrl/imx-iomux-v3.c @@ -20,6 +20,7 @@ #include <common.h> #include <init.h> #include <io.h> +#include <of.h> #include <pinctrl.h> #include <malloc.h> #include <mach/iomux-v3.h> diff --git a/drivers/pinctrl/pinctrl.c b/drivers/pinctrl/pinctrl.c index 7c797d35bc..7f76d5a681 100644 --- a/drivers/pinctrl/pinctrl.c +++ b/drivers/pinctrl/pinctrl.c @@ -19,6 +19,8 @@ #include <common.h> #include <malloc.h> #include <pinctrl.h> +#include <errno.h> +#include <of.h> static LIST_HEAD(pinctrl_list); diff --git a/drivers/serial/serial_imx.c b/drivers/serial/serial_imx.c index 01c7cc7fea..8468fa0adc 100644 --- a/drivers/serial/serial_imx.c +++ b/drivers/serial/serial_imx.c @@ -20,6 +20,7 @@ #include <malloc.h> #include <notifier.h> #include <io.h> +#include <of.h> #include <linux/err.h> #include <linux/clk.h> diff --git a/drivers/spi/imx_spi.c b/drivers/spi/imx_spi.c index 1c6b68448b..c0c2ed7c49 100644 --- a/drivers/spi/imx_spi.c +++ b/drivers/spi/imx_spi.c @@ -20,6 +20,7 @@ #include <spi/spi.h> #include <xfuncs.h> #include <io.h> +#include <of.h> #include <errno.h> #include <malloc.h> #include <gpio.h> diff --git a/drivers/usb/gadget/dfu.c b/drivers/usb/gadget/dfu.c index e05187900b..e15fc41b82 100644 --- a/drivers/usb/gadget/dfu.c +++ b/drivers/usb/gadget/dfu.c @@ -61,7 +61,7 @@ #define DFU_TEMPFILE "/dfu_temp" static int dfualt; -static int dfufd = -EINVAL;; +static int dfufd = -EINVAL; static struct usb_dfu_dev *dfu_devs; static int dfu_num_alt; static int dfudetach; diff --git a/drivers/usb/imx/chipidea-imx.c b/drivers/usb/imx/chipidea-imx.c index a0dab70337..d8209d174b 100644 --- a/drivers/usb/imx/chipidea-imx.c +++ b/drivers/usb/imx/chipidea-imx.c @@ -15,6 +15,8 @@ #include <common.h> #include <init.h> #include <io.h> +#include <of.h> +#include <errno.h> #include <driver.h> #include <usb/usb.h> #include <usb/ehci.h> diff --git a/drivers/usb/imx/imx-usb-misc.c b/drivers/usb/imx/imx-usb-misc.c index 68c8c4bebd..ed44d78b0f 100644 --- a/drivers/usb/imx/imx-usb-misc.c +++ b/drivers/usb/imx/imx-usb-misc.c @@ -16,6 +16,8 @@ #include <common.h> #include <init.h> #include <io.h> +#include <of.h> +#include <errno.h> #include <usb/chipidea-imx.h> #include <mach/imx6-regs.h> #include <mach/iomux-mx6.h> diff --git a/drivers/usb/imx/imx-usb-phy.c b/drivers/usb/imx/imx-usb-phy.c index 776bfe5167..a573c7fe52 100644 --- a/drivers/usb/imx/imx-usb-phy.c +++ b/drivers/usb/imx/imx-usb-phy.c @@ -15,6 +15,8 @@ #include <common.h> #include <init.h> #include <io.h> +#include <of.h> +#include <errno.h> #include <driver.h> #include <malloc.h> #include <linux/clk.h> diff --git a/drivers/watchdog/imxwd.c b/drivers/watchdog/imxwd.c index 78f0f38290..f5910ac0a9 100644 --- a/drivers/watchdog/imxwd.c +++ b/drivers/watchdog/imxwd.c @@ -15,6 +15,7 @@ #include <common.h> #include <init.h> #include <io.h> +#include <of.h> #include <errno.h> #include <malloc.h> #include <watchdog.h> diff --git a/include/common.h b/include/common.h index 00f1642cd5..293f5041af 100644 --- a/include/common.h +++ b/include/common.h @@ -115,6 +115,8 @@ long simple_strtol(const char *cp,char **endp,unsigned int base); /* lib_generic/crc32.c */ uint32_t crc32(uint32_t, const void*, unsigned int); uint32_t crc32_no_comp(uint32_t, const void*, unsigned int); +int file_crc(char *filename, ulong start, ulong size, ulong *crc, + ulong *total); /* common/console.c */ int ctrlc (void); diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 1735b49874..402e4978b1 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h @@ -12,6 +12,7 @@ #ifndef DOXYGEN_SHOULD_SKIP_THIS #include <driver.h> +#include <errno.h> #include <linux/types.h> #include <linux/list.h> #include <linux/mtd/mtd-abi.h> diff --git a/include/mci.h b/include/mci.h index 07ac2731f7..0f10e8aea9 100644 --- a/include/mci.h +++ b/include/mci.h @@ -286,7 +286,7 @@ struct mci; struct mci_host { struct device_d *hw_dev; /**< the host MCI hardware device */ struct mci *mci; - char *devname; /**< the devicename for the card, defaults to disk%d */ + const char *devname; /**< the devicename for the card, defaults to disk%d */ unsigned voltages; unsigned host_caps; /**< Host's interface capabilities, refer MMC_VDD_* */ unsigned f_min; /**< host interface lower limit */ diff --git a/lib/gui/bmp.c b/lib/gui/bmp.c index dcf30952d2..6943a1c8e0 100644 --- a/lib/gui/bmp.c +++ b/lib/gui/bmp.c @@ -19,8 +19,8 @@ struct image *bmp_open(char *inbuf, int insize) } img->data = inbuf; - img->height = le32_to_cpu(bmp->header.height);; - img->width = le32_to_cpu(bmp->header.width);; + img->height = le32_to_cpu(bmp->header.height); + img->width = le32_to_cpu(bmp->header.width); img->bits_per_pixel = le16_to_cpu(bmp->header.bit_count); pr_debug("bmp: %d x %d x %d data@0x%p\n", img->width, img->height, diff --git a/lib/gui/png_pico.c b/lib/gui/png_pico.c index 393a732bc4..256db35ce0 100644 --- a/lib/gui/png_pico.c +++ b/lib/gui/png_pico.c @@ -57,7 +57,7 @@ struct image *png_open(char *inbuf, int insize) png_info = PNG_decode(inbuf, insize); if(PNG_error) { - printf("error %u:\n", PNG_error); + printf("error %i:\n", PNG_error); ret = -EINVAL; goto err; } diff --git a/lib/math.c b/lib/math.c index 5a68f5e8b2..a4731edb9a 100644 --- a/lib/math.c +++ b/lib/math.c @@ -118,6 +118,7 @@ #include <linux/ctype.h> #include <linux/string.h> #include <libbb.h> +#include <errno.h> #include <math.h> #define lookupvar (math_state->lookupvar) diff --git a/lib/unlink-recursive.c b/lib/unlink-recursive.c index a4885538c0..8f7812f852 100644 --- a/lib/unlink-recursive.c +++ b/lib/unlink-recursive.c @@ -1,4 +1,5 @@ #include <common.h> +#include <errno.h> #include <libbb.h> #include <fs.h> @@ -127,7 +127,7 @@ static void dns_handler(void *ctx, char *packet, unsigned len) debug("%s\n", __func__); /* We sent 1 query. We want to see more that 1 answer. */ - header = (struct header *)net_eth_to_udp_payload(packet);; + header = (struct header *)net_eth_to_udp_payload(packet); if (ntohs(header->nqueries) != 1) return; @@ -23,6 +23,7 @@ #include <driver.h> #include <init.h> #include <net.h> +#include <of.h> #include <linux/phy.h> #include <errno.h> #include <malloc.h> @@ -433,7 +433,7 @@ void net_unregister(struct net_connection *con) static int net_ip_send(struct net_connection *con, int len) { con->ip->tot_len = htons(sizeof(struct iphdr) + len); - con->ip->id = htons(net_ip_id++);; + con->ip->id = htons(net_ip_id++); con->ip->check = 0; con->ip->check = ~net_checksum((unsigned char *)con->ip, sizeof(struct iphdr)); diff --git a/scripts/.gitignore b/scripts/.gitignore index b88f8d8661..fac394d128 100644 --- a/scripts/.gitignore +++ b/scripts/.gitignore @@ -10,3 +10,5 @@ mkublheader omap_signGP zynq_mkimage socfpga_mkimage +bareboxcrc32 +bareboxcrc32-target diff --git a/scripts/Makefile b/scripts/Makefile index 2f78c4bb64..3908c1dcb9 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -8,6 +8,7 @@ hostprogs-y += bin2c hostprogs-y += mkimage hostprogs-y += fix_size hostprogs-y += bareboxenv +hostprogs-y += bareboxcrc32 hostprogs-y += kernel-install hostprogs-$(CONFIG_KALLSYMS) += kallsyms hostprogs-$(CONFIG_ARCH_MVEBU) += kwbimage kwboot @@ -26,6 +27,7 @@ subdir-$(CONFIG_DTC) += dtc targetprogs-$(CONFIG_BAREBOXENV_TARGET) += bareboxenv-target targetprogs-$(CONFIG_KERNEL_INSTALL_TARGET) += kernel-install-target +targetprogs-$(CONFIG_BAREBOXCRC32_TARGET) += bareboxcrc32-target # Let clean descend into subdirs subdir- += basic kconfig setupmbr diff --git a/scripts/bareboxcrc32.c b/scripts/bareboxcrc32.c new file mode 100644 index 0000000000..e00ffafeb7 --- /dev/null +++ b/scripts/bareboxcrc32.c @@ -0,0 +1,60 @@ +/* + * bareboxcrc32.c - generate crc32 checksum in little endian + * + * Copyright (c) 2013 Michael Grzeschik <mgr@pengutronix.de> + * + * 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 <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <stdint.h> +#include <limits.h> +#include <errno.h> +#include <dirent.h> +#include <stdlib.h> +#include <string.h> +#include <getopt.h> +#include <libgen.h> + +#include "compiler.h" + +#define debug(...) + +#include "../crypto/crc32.c" + +int main(int argc, char *argv[]) +{ + loff_t start = 0, size = ~0; + ulong crc = 0, total = 0; + char *filename = NULL; + int i; + + if (!filename && argc < 2) { + printf("usage: %s filename\n", argv[0]); + exit(1); + } + + for (i = 1; i < argc; i++) { + filename = argv[i]; + if (file_crc(filename, start, size, &crc, &total) < 0) + exit(1); + printf("%08lx\t%s\n", crc, filename); + } + + exit(0); + +} diff --git a/scripts/bareboxenv.c b/scripts/bareboxenv.c index f372685ae7..da420db578 100644 --- a/scripts/bareboxenv.c +++ b/scripts/bareboxenv.c @@ -35,25 +35,6 @@ #define debug(...) -static void *xmalloc(size_t size) -{ - void *p = NULL; - - if (!(p = malloc(size))) { - printf("ERROR: out of memory\n"); - exit(1); - } - - return p; -} - -static void *xzalloc(size_t size) -{ - void *p = xmalloc(size); - memset(p, 0, size); - return p; -} - /* Find out if the last character of a string matches the one given. * Don't underrun the buffer if the string length is 0. */ diff --git a/scripts/compiler.h b/scripts/compiler.h index 53f84b6d1b..0891c3bfa6 100644 --- a/scripts/compiler.h +++ b/scripts/compiler.h @@ -107,4 +107,29 @@ typedef uint32_t __u32; # define be64_to_cpu(x) (x) #endif +#define min(x, y) ({ \ + typeof(x) _min1 = (x); \ + typeof(y) _min2 = (y); \ + (void) (&_min1 == &_min2); \ + _min1 < _min2 ? _min1 : _min2; }) + +inline void *xmalloc(size_t size) +{ + void *p = NULL; + + if (!(p = malloc(size))) { + printf("ERROR: out of memory\n"); + exit(1); + } + + return p; +} + +inline void *xzalloc(size_t size) +{ + void *p = xmalloc(size); + memset(p, 0, size); + return p; +} + #endif diff --git a/scripts/imx/imx-usb-loader.c b/scripts/imx/imx-usb-loader.c index 81c0640bee..12a89f5825 100644 --- a/scripts/imx/imx-usb-loader.c +++ b/scripts/imx/imx-usb-loader.c @@ -326,7 +326,7 @@ static int transfer(struct libusb_device_handle *h, int report, unsigned char *p memcpy(p, &tmp[1], *last_trans); } } else { - printf("Unexpected report %i err=%i, cnt=%i, last_trans=%i, %02x %02x %02x %02x\n", + printf("Unexpected report %i err=%i, cnt=%u, last_trans=%i, %02x %02x %02x %02x\n", tmp[0], err, cnt, *last_trans, tmp[0], tmp[1], tmp[2], tmp[3]); err = 0; } @@ -475,7 +475,7 @@ static int read_memory(struct libusb_device_handle *h, struct usb_id *p_id, tmp[0] = tmp[1] = tmp[2] = tmp[3] = 0; err = transfer(h, 4, tmp, 64, &last_trans, p_id); if (err) { - printf("r4 in err=%i, last_trans=%i %02x %02x %02x %02x cnt=%d rem=%d\n", + printf("r4 in err=%i, last_trans=%i %02x %02x %02x %02x cnt=%u rem=%d\n", err, last_trans, tmp[0], tmp[1], tmp[2], tmp[3], cnt, rem); break; } @@ -483,7 +483,7 @@ static int read_memory(struct libusb_device_handle *h, struct usb_id *p_id, if ((last_trans == 64) && (cnt == rem)) { /* Last transfer is expected to be too large for HID */ } else { - printf("err: %02x %02x %02x %02x cnt=%d rem=%d last_trans=%i\n", + printf("err: %02x %02x %02x %02x cnt=%u rem=%d last_trans=%i\n", tmp[0], tmp[1], tmp[2], tmp[3], cnt, rem, last_trans); } last_trans = rem; @@ -1247,7 +1247,7 @@ static int do_irom_download(struct libusb_device_handle *h, struct usb_id *p_id, } } - printf("loading binary file(%s) to %08x, skip=0x%x, fsize=%d type=%d...\n", + printf("loading binary file(%s) to %08x, skip=0x%x, fsize=%u type=%d...\n", curr->filename, dladdr, skip, fsize, type); ret = load_file(h, p_id, p, cnt, buf, BUF_SIZE, diff --git a/scripts/kwbimage.c b/scripts/kwbimage.c index 4ebb07fe22..82cf21c4c8 100644 --- a/scripts/kwbimage.c +++ b/scripts/kwbimage.c @@ -685,6 +685,7 @@ static int image_create_payload(void *payload_start, size_t payloadsz, const char *payload_filename) { FILE *payload; + struct stat s; uint32_t *payload_checksum = (uint32_t *) (payload_start + payloadsz); int ret; @@ -696,7 +697,14 @@ static int image_create_payload(void *payload_start, size_t payloadsz, return -1; } - ret = fread(payload_start, payloadsz, 1, payload); + ret = stat(payload_filename, &s); + if (ret < 0) { + fprintf(stderr, "Cannot stat payload file %s\n", + payload_filename); + return ret; + } + + ret = fread(payload_start, s.st_size, 1, payload); if (ret != 1) { fprintf(stderr, "Cannot read payload file %s\n", payload_filename); @@ -747,7 +755,8 @@ static void *image_create_v0(struct image_cfg_element *image_cfg, return NULL; } - payloadsz = s.st_size; + /* payload size must be multiple of 32b */ + payloadsz = 4 * ((s.st_size + 3)/4); } /* Headers, payload and 32-bits checksum */ @@ -875,7 +884,8 @@ static void *image_create_v1(struct image_cfg_element *image_cfg, return NULL; } - payloadsz = s.st_size; + /* payload size must be multiple of 32b */ + payloadsz = 4 * ((s.st_size + 3)/4); } /* The payload should be aligned on some reasonable diff --git a/scripts/kwboot.c b/scripts/kwboot.c index 33c94b3a8b..81da3e81bc 100644 --- a/scripts/kwboot.c +++ b/scripts/kwboot.c @@ -334,6 +334,7 @@ kwboot_xm_makeblock(struct kwboot_block *block, const void *data, size_t n; int i; + block->soh = SOH; block->pnum = pnum; block->_pnum = ~block->pnum; |