All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone
@ 2014-06-03  4:04 Simon Glass
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 01/14] ti: am335x: Fix the U-Boot binary output Simon Glass
                   ` (14 more replies)
  0 siblings, 15 replies; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

This series fixes a few problems that have come up since the secure boot
series was merged:

- A recent commit broken the assumption that u-boot.bin ends at a known
address (thus making things appended to U-Boot inaccessible from the code).
This is fixed for Beaglebone and a few other boards. A new test is added to
the Makefile to ensure that it does not break again. All boards have been
tested to make sure the problem does not appear elsewhere.

- A way is needed to provide an externally-build device tree binary for
U-Boot. This allows signing to happen outside the U-Boot build system.

- The .img files generated by an OMAP build need to include the FDT if one
is appended.

- Adding signatures to an FDT can cause the FDT to run out of space. The
fix is to regenerate the FDT from scratch with different dtc parameters, so
pretty painful. Instead, we automatically expand the FDT.

The last commit enables verified boot on a Beaglebone Black with a special
configuration. Use 'am335x_boneblack_vboot' for this. This will soon disable
support for legacy images.

Changes in v3:
- Add new patch to ensure the hash section is inside the image for cm_t335
- Add new patch to ensure the hash section is inside the image for mx31ads
- Rebase to master and update commit message
- Fix typo in commit message
- Add new patch to improve error handling in fit_common
- Rebase to master
- Also enable LZO and timestamps, plus increase the maximum kernel size
- Use verified boot only on a new board - am335x_boneblack_vboot

Changes in v2:
- Add new patch to ensure the hash section is inside the image for am335x
- Add new patch to check u-boot.bin size against symbol table
- Update to cover all omap devices
- Adjust for kbuild changes
- Fix line over 80cols
- Move device tree files into arch/arm/dts

Simon Glass (14):
  ti: am335x: Fix the U-Boot binary output
  cm_t335: Fix the U-Boot binary output
  mx31ads: Fix the U-Boot binary output
  Check that u-boot.bin size looks correct
  am33xx/omap: Allow cache enable for all Sitara/OMAP
  hash: Export the function to show a hash
  fdt: Add DEV_TREE_BIN option to specify a device tree binary file
  fdt: Update functions which write to an FDT to return -ENOSPC
  Improve error handling in fit_common
  mkimage: Automatically make space in FDT when full
  arm: ti: Increase malloc size to 16MB for armv7 boards
  am33xx/omap: Enable CONFIG_OF_CONTROL
  am33xx/omap: Enable FIT support
  am33xx/omap: Add a new board to enable verified boot

 Makefile                                       |  16 +-
 arch/arm/cpu/armv7/am33xx/board.c              |   8 -
 arch/arm/cpu/armv7/omap-common/Makefile        |   4 +
 arch/arm/cpu/armv7/omap-common/hwinit-common.c |  42 --
 arch/arm/cpu/armv7/omap-common/omap-cache.c    |  56 +++
 arch/arm/cpu/armv7/omap3/board.c               |   8 -
 arch/arm/dts/Makefile                          |   1 +
 arch/arm/dts/am335x-bone-common.dtsi           | 262 ++++++++++
 arch/arm/dts/am335x-boneblack.dts              |  17 +
 arch/arm/dts/am33xx.dtsi                       | 649 +++++++++++++++++++++++++
 arch/arm/dts/dt-bindings/gpio/gpio.h           |  15 +
 arch/arm/dts/dt-bindings/pinctrl/am33xx.h      |  42 ++
 arch/arm/dts/dt-bindings/pinctrl/omap.h        |  55 +++
 arch/arm/dts/tps65217.dtsi                     |  56 +++
 board/compulab/cm_t335/u-boot.lds              |   4 +-
 board/freescale/mx31ads/u-boot.lds             |   4 +-
 board/ti/am335x/u-boot.lds                     |   3 +-
 boards.cfg                                     |   1 +
 common/hash.c                                  |   7 +-
 common/image-fit.c                             |   4 +-
 doc/README.fdt-control                         |  16 +-
 dts/Makefile                                   |   4 +
 include/configs/am335x_evm.h                   |  15 +
 include/configs/ti_armv7_common.h              |   2 +-
 include/hash.h                                 |  15 +
 include/rsa.h                                  |   3 +-
 lib/rsa/rsa-sign.c                             |  28 +-
 tools/fit_check_sign.c                         |   4 +-
 tools/fit_common.c                             |  49 +-
 tools/fit_common.h                             |  15 +-
 tools/fit_image.c                              | 112 +++--
 tools/fit_info.c                               |   2 +-
 tools/image-host.c                             |  26 +-
 33 files changed, 1390 insertions(+), 155 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/omap-common/omap-cache.c
 create mode 100644 arch/arm/dts/am335x-bone-common.dtsi
 create mode 100644 arch/arm/dts/am335x-boneblack.dts
 create mode 100644 arch/arm/dts/am33xx.dtsi
 create mode 100644 arch/arm/dts/dt-bindings/gpio/gpio.h
 create mode 100644 arch/arm/dts/dt-bindings/pinctrl/am33xx.h
 create mode 100644 arch/arm/dts/dt-bindings/pinctrl/omap.h
 create mode 100644 arch/arm/dts/tps65217.dtsi

-- 
1.9.1.423.g4596e3a

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 01/14] ti: am335x: Fix the U-Boot binary output
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 02/14] cm_t335: " Simon Glass
                   ` (13 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

This should include the hash so that image_binary_size is really at the
end of the image, and not some 300 bytes earlier.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3: None
Changes in v2:
- Add new patch to ensure the hash section is inside the image for am335x

 board/ti/am335x/u-boot.lds | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/board/ti/am335x/u-boot.lds b/board/ti/am335x/u-boot.lds
index 2c5a0f8..78f294a 100644
--- a/board/ti/am335x/u-boot.lds
+++ b/board/ti/am335x/u-boot.lds
@@ -78,6 +78,8 @@ SECTIONS
 		*(.__rel_dyn_end)
 	}
 
+	.hash : { *(.hash*) }
+
 	.end :
 	{
 		*(.__end)
@@ -118,7 +120,6 @@ SECTIONS
 	.dynbss : { *(.dynbss) }
 	.dynstr : { *(.dynstr*) }
 	.dynamic : { *(.dynamic*) }
-	.hash : { *(.hash*) }
 	.gnu.hash : { *(.gnu.hash) }
 	.plt : { *(.plt*) }
 	.interp : { *(.interp*) }
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 02/14] cm_t335: Fix the U-Boot binary output
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 01/14] ti: am335x: Fix the U-Boot binary output Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 03/14] mx31ads: " Simon Glass
                   ` (12 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

Correct the binary output so that image_binary_size is really at the
end of the image.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3:
- Add new patch to ensure the hash section is inside the image for cm_t335

Changes in v2: None

 board/compulab/cm_t335/u-boot.lds | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/board/compulab/cm_t335/u-boot.lds b/board/compulab/cm_t335/u-boot.lds
index c8ab716..6275836 100644
--- a/board/compulab/cm_t335/u-boot.lds
+++ b/board/compulab/cm_t335/u-boot.lds
@@ -62,6 +62,8 @@ SECTIONS
 		*(.__rel_dyn_end)
 	}
 
+	.hash : { *(.hash*) }
+
 	.end :
 	{
 		*(.__end)
@@ -99,8 +101,6 @@ SECTIONS
 	}
 
 	.dynsym _image_binary_end : { *(.dynsym) }
-	.hash : { *(.hash) }
-	.got.plt : { *(.got.plt) }
 	.dynbss : { *(.dynbss) }
 	.dynstr : { *(.dynstr*) }
 	.dynamic : { *(.dynamic*) }
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 03/14] mx31ads: Fix the U-Boot binary output
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 01/14] ti: am335x: Fix the U-Boot binary output Simon Glass
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 02/14] cm_t335: " Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 04/14] Check that u-boot.bin size looks correct Simon Glass
                   ` (11 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

Correct the binary output so that image_binary_size is really at the
end of the image.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3:
- Add new patch to ensure the hash section is inside the image for mx31ads

Changes in v2: None

 board/freescale/mx31ads/u-boot.lds | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/board/freescale/mx31ads/u-boot.lds b/board/freescale/mx31ads/u-boot.lds
index 61b83bf..8a4a8a2 100644
--- a/board/freescale/mx31ads/u-boot.lds
+++ b/board/freescale/mx31ads/u-boot.lds
@@ -70,6 +70,8 @@ SECTIONS
 		*(.__rel_dyn_end)
 	}
 
+	.hash : { *(.hash*) }
+
 	.end :
 	{
 		*(.__end)
@@ -100,7 +102,7 @@ SECTIONS
 	.dynbss : { *(.dynbss) }
 	.dynstr : { *(.dynstr*) }
 	.dynamic : { *(.dynamic*) }
-	.hash : { *(.hash*) }
+	.gnu.hash : { *(.gnu.hash) }
 	.plt : { *(.plt*) }
 	.interp : { *(.interp*) }
 	.gnu : { *(.gnu*) }
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 04/14] Check that u-boot.bin size looks correct
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
                   ` (2 preceding siblings ...)
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 03/14] mx31ads: " Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 05/14] am33xx/omap: Allow cache enable for all Sitara/OMAP Simon Glass
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

Check that the image size matches the size we get from u-boot.bin. If it
doesn't, that generally means that some extra sections are being added to
u-boot.bin, meaning that it is not possible to access data appended to
the U-Boot binary. This is used for device tree, so needs to work.

This problem was introduced by commit b02bfc4. By adding a test we can
prevent a reccurence.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3: None
Changes in v2:
- Add new patch to check u-boot.bin size against symbol table

 Makefile | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 1df3f70..ece622f 100644
--- a/Makefile
+++ b/Makefile
@@ -740,7 +740,7 @@ DO_STATIC_RELA =
 endif
 
 # Always append ALL so that arch config.mk's can add custom ones
-ALL-y += u-boot.srec u-boot.bin System.map
+ALL-y += u-boot.srec u-boot.bin System.map binary_size_check
 
 ALL-$(CONFIG_NAND_U_BOOT) += u-boot-nand.bin
 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
@@ -820,6 +820,18 @@ u-boot.hex u-boot.srec: u-boot FORCE
 
 OBJCOPYFLAGS_u-boot.bin := -O binary
 
+binary_size_check: u-boot.bin System.map FORCE
+	@file_size=`stat -c %s u-boot.bin` ; \
+	map_size=$(shell cat System.map | \
+		awk '/_image_copy_start/ {start = $$1} /_image_binary_end/ {end = $$1} END {if (start != "" && end != "") print strtonum("0x" end) - strtonum("0x" start)}'); \
+	if [ "" != "$$map_size" ]; then \
+		if test $$map_size -ne $$file_size; then \
+			echo "System.map shows a binary size of $$map_size" >&2 ; \
+			echo "  but u-boot.bin shows $$file_size" >&2 ; \
+			exit 1; \
+		fi \
+	fi
+
 u-boot.bin: u-boot FORCE
 	$(call if_changed,objcopy)
 	$(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 05/14] am33xx/omap: Allow cache enable for all Sitara/OMAP
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
                   ` (3 preceding siblings ...)
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 04/14] Check that u-boot.bin size looks correct Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 06/14] hash: Export the function to show a hash Simon Glass
                   ` (9 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

Enable the cache for all devices, unless CONFIG_SYS_DCACHE_OFF is defined.
This speeds up the Beaglebone Black boot considerable.

(Tested only on Beaglebone Black with SD card boot)

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3: None
Changes in v2:
- Update to cover all omap devices

 arch/arm/cpu/armv7/am33xx/board.c              |  8 ----
 arch/arm/cpu/armv7/omap-common/Makefile        |  4 ++
 arch/arm/cpu/armv7/omap-common/hwinit-common.c | 42 -------------------
 arch/arm/cpu/armv7/omap-common/omap-cache.c    | 56 ++++++++++++++++++++++++++
 arch/arm/cpu/armv7/omap3/board.c               |  8 ----
 5 files changed, 60 insertions(+), 58 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/omap-common/omap-cache.c

diff --git a/arch/arm/cpu/armv7/am33xx/board.c b/arch/arm/cpu/armv7/am33xx/board.c
index 28c16f8..9ae8c34 100644
--- a/arch/arm/cpu/armv7/am33xx/board.c
+++ b/arch/arm/cpu/armv7/am33xx/board.c
@@ -241,11 +241,3 @@ void s_init(void)
 	sdram_init();
 }
 #endif
-
-#ifndef CONFIG_SYS_DCACHE_OFF
-void enable_caches(void)
-{
-	/* Enable D-cache. I-cache is already enabled in start.S */
-	dcache_enable();
-}
-#endif /* !CONFIG_SYS_DCACHE_OFF */
diff --git a/arch/arm/cpu/armv7/omap-common/Makefile b/arch/arm/cpu/armv7/omap-common/Makefile
index 5f5132f..7695e16 100644
--- a/arch/arm/cpu/armv7/omap-common/Makefile
+++ b/arch/arm/cpu/armv7/omap-common/Makefile
@@ -22,6 +22,10 @@ obj-y	+= pipe3-phy.o
 obj-$(CONFIG_SCSI_AHCI_PLAT) += sata.o
 endif
 
+ifeq ($(CONFIG_SYS_DCACHE_OFF),)
+obj-y	+= omap-cache.o
+endif
+
 ifeq ($(CONFIG_OMAP34XX),)
 obj-y	+= boot-common.o
 obj-y	+= lowlevel_init.o
diff --git a/arch/arm/cpu/armv7/omap-common/hwinit-common.c b/arch/arm/cpu/armv7/omap-common/hwinit-common.c
index ba97d9e..5f50a19 100644
--- a/arch/arm/cpu/armv7/omap-common/hwinit-common.c
+++ b/arch/arm/cpu/armv7/omap-common/hwinit-common.c
@@ -18,13 +18,8 @@
 #include <asm/emif.h>
 #include <asm/omap_common.h>
 #include <linux/compiler.h>
-#include <asm/cache.h>
 #include <asm/system.h>
 
-#define ARMV7_DCACHE_WRITEBACK  0xe
-#define	ARMV7_DOMAIN_CLIENT	1
-#define ARMV7_DOMAIN_MASK	(0x3 << 0)
-
 DECLARE_GLOBAL_DATA_PTR;
 
 void do_set_mux(u32 base, struct pad_conf_entry const *array, int size)
@@ -263,40 +258,3 @@ int print_cpuinfo(void)
 	return 0;
 }
 #endif
-
-#ifndef CONFIG_SYS_DCACHE_OFF
-void enable_caches(void)
-{
-	/* Enable D-cache. I-cache is already enabled in start.S */
-	dcache_enable();
-}
-
-void dram_bank_mmu_setup(int bank)
-{
-	bd_t *bd = gd->bd;
-	int	i;
-
-	u32 start = bd->bi_dram[bank].start >> 20;
-	u32 size = bd->bi_dram[bank].size >> 20;
-	u32 end = start + size;
-
-	debug("%s: bank: %d\n", __func__, bank);
-	for (i = start; i < end; i++)
-		set_section_dcache(i, ARMV7_DCACHE_WRITEBACK);
-
-}
-
-void arm_init_domains(void)
-{
-	u32 reg;
-
-	reg = get_dacr();
-	/*
-	* Set DOMAIN to client access so that all permissions
-	* set in pagetables are validated by the mmu.
-	*/
-	reg &= ~ARMV7_DOMAIN_MASK;
-	reg |= ARMV7_DOMAIN_CLIENT;
-	set_dacr(reg);
-}
-#endif
diff --git a/arch/arm/cpu/armv7/omap-common/omap-cache.c b/arch/arm/cpu/armv7/omap-common/omap-cache.c
new file mode 100644
index 0000000..579bebf
--- /dev/null
+++ b/arch/arm/cpu/armv7/omap-common/omap-cache.c
@@ -0,0 +1,56 @@
+/*
+ *
+ * Common functions for OMAP4/5 based boards
+ *
+ * (C) Copyright 2010
+ * Texas Instruments, <www.ti.com>
+ *
+ * Author :
+ *	Aneesh V	<aneesh@ti.com>
+ *	Steve Sakoman	<steve@sakoman.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/cache.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define ARMV7_DCACHE_WRITEBACK  0xe
+#define ARMV7_DOMAIN_CLIENT	1
+#define ARMV7_DOMAIN_MASK	(0x3 << 0)
+
+void enable_caches(void)
+{
+	/* Enable D-cache. I-cache is already enabled in start.S */
+	dcache_enable();
+}
+
+void dram_bank_mmu_setup(int bank)
+{
+	bd_t *bd = gd->bd;
+	int	i;
+
+	u32 start = bd->bi_dram[bank].start >> 20;
+	u32 size = bd->bi_dram[bank].size >> 20;
+	u32 end = start + size;
+
+	debug("%s: bank: %d\n", __func__, bank);
+	for (i = start; i < end; i++)
+		set_section_dcache(i, ARMV7_DCACHE_WRITEBACK);
+}
+
+void arm_init_domains(void)
+{
+	u32 reg;
+
+	reg = get_dacr();
+	/*
+	* Set DOMAIN to client access so that all permissions
+	* set in pagetables are validated by the mmu.
+	*/
+	reg &= ~ARMV7_DOMAIN_MASK;
+	reg |= ARMV7_DOMAIN_CLIENT;
+	set_dacr(reg);
+}
diff --git a/arch/arm/cpu/armv7/omap3/board.c b/arch/arm/cpu/armv7/omap3/board.c
index 9bb1a1c..e252e7f 100644
--- a/arch/arm/cpu/armv7/omap3/board.c
+++ b/arch/arm/cpu/armv7/omap3/board.c
@@ -478,11 +478,3 @@ void omap3_outer_cache_disable(void)
 	omap3_update_aux_cr(0, 0x2);
 }
 #endif /* !CONFIG_SYS_L2CACHE_OFF */
-
-#ifndef CONFIG_SYS_DCACHE_OFF
-void enable_caches(void)
-{
-	/* Enable D-cache. I-cache is already enabled in start.S */
-	dcache_enable();
-}
-#endif /* !CONFIG_SYS_DCACHE_OFF */
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 06/14] hash: Export the function to show a hash
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
                   ` (4 preceding siblings ...)
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 05/14] am33xx/omap: Allow cache enable for all Sitara/OMAP Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 07/14] fdt: Add DEV_TREE_BIN option to specify a device tree binary file Simon Glass
                   ` (8 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

This function is useful for displaying a hash value, so export it.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3:
- Rebase to master and update commit message

Changes in v2: None

 common/hash.c  |  7 +++----
 include/hash.h | 15 +++++++++++++++
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/common/hash.c b/common/hash.c
index 7627b84..41a4a28 100644
--- a/common/hash.c
+++ b/common/hash.c
@@ -311,8 +311,7 @@ int hash_lookup_algo(const char *algo_name, struct hash_algo **algop)
 	return -EPROTONOSUPPORT;
 }
 
-static void show_hash(struct hash_algo *algo, ulong addr, ulong len,
-		      u8 *output)
+void hash_show(struct hash_algo *algo, ulong addr, ulong len, u8 *output)
 {
 	int i;
 
@@ -392,7 +391,7 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
 			if (memcmp(output, vsum, algo->digest_size) != 0) {
 				int i;
 
-				show_hash(algo, addr, len, output);
+				hash_show(algo, addr, len, output);
 				printf(" != ");
 				for (i = 0; i < algo->digest_size; i++)
 					printf("%02x", vsum[i]);
@@ -400,7 +399,7 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
 				return 1;
 			}
 		} else {
-			show_hash(algo, addr, len, output);
+			hash_show(algo, addr, len, output);
 			printf("\n");
 
 			if (argc) {
diff --git a/include/hash.h b/include/hash.h
index dc21678..c6de20d 100644
--- a/include/hash.h
+++ b/include/hash.h
@@ -125,4 +125,19 @@ int hash_block(const char *algo_name, const void *data, unsigned int len,
  * @return 0 if ok, -EPROTONOSUPPORT for an unknown algorithm.
  */
 int hash_lookup_algo(const char *algo_name, struct hash_algo **algop);
+
+/**
+ * hash_show() - Print out a hash algorithm and value
+ *
+ * You will get a message like this (without a newline at the end):
+ *
+ * "sha1 for 9eb3337c ... 9eb3338f ==> 7942ef1df479fd3130f716eb9613d107dab7e257"
+ *
+ * @algo:		Algorithm used for hash
+ * @addr:		Address of data that was hashed
+ * @len:		Length of data that was hashed
+ * @output:		Hash value to display
+ */
+void hash_show(struct hash_algo *algo, ulong addr, ulong len, u8 *output);
+
 #endif
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 07/14] fdt: Add DEV_TREE_BIN option to specify a device tree binary file
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
                   ` (5 preceding siblings ...)
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 06/14] hash: Export the function to show a hash Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-10  5:59   ` Masahiro Yamada
  2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 08/14] fdt: Update functions which write to an FDT to return -ENOSPC Simon Glass
                   ` (7 subsequent siblings)
  14 siblings, 2 replies; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

In some cases, an externally-built device tree binary is required to be
attached to U-Boot. An example is when using image signing, since in that
case the .dtb file must include the public keys.

Add a DEV_TREE_BIN option to the Makefile, and update the documentation.

Usage is something like:

	make DEV_TREE_BIN=boot/am335x-boneblack-pubkey.dtb

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3: None
Changes in v2:
- Adjust for kbuild changes

 Makefile               |  2 +-
 doc/README.fdt-control | 16 ++++++++++++++--
 dts/Makefile           |  4 ++++
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index ece622f..92819bf 100644
--- a/Makefile
+++ b/Makefile
@@ -867,7 +867,7 @@ MKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
 MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
 		-R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
 
-u-boot.img u-boot.kwb u-boot.pbl: u-boot.bin FORCE
+u-boot.img u-boot.kwb u-boot.pbl: u-boot$(if $(CONFIG_OF_SEPARATE),-dtb,).bin FORCE
 	$(call if_changed,mkimage)
 
 MKIMAGEFLAGS_u-boot-dtb.img = $(MKIMAGEFLAGS_u-boot.img)
diff --git a/doc/README.fdt-control b/doc/README.fdt-control
index 86bae68..8a4aa7a 100644
--- a/doc/README.fdt-control
+++ b/doc/README.fdt-control
@@ -122,7 +122,8 @@ This should include your CPU or SOC's device tree file, placed in
 arch/<arch>/dts, and then make any adjustments required.
 
 If CONFIG_OF_EMBED is defined, then it will be picked up and built into
-the U-Boot image (including u-boot.bin).
+the U-Boot image (including u-boot.bin). This is suitable for debugging
+and development only and is not recommended for production devices.
 
 If CONFIG_OF_SEPARATE is defined, then it will be built and placed in
 a u-boot.dtb file alongside u-boot.bin. A common approach is then to
@@ -130,7 +131,10 @@ join the two:
 
 	cat u-boot.bin u-boot.dtb >image.bin
 
-and then flash image.bin onto your board.
+and then flash image.bin onto your board. Note that U-Boot creates
+u-boot-dtb.bin which does the above step for you also. If you are using
+CONFIG_SPL_FRAMEWORK, then u-boot.img will be built to include the device
+tree binary.
 
 If CONFIG_OF_HOSTFILE is defined, then it will be read from a file on
 startup. This is only useful for sandbox. Use the -d flag to U-Boot to
@@ -138,6 +142,14 @@ specify the file to read.
 
 You cannot use more than one of these options at the same time.
 
+To use a device tree file that you have compiled yourself, pass
+DEV_TREE_BIN=<filename> to 'make', as in:
+
+	make DEV_TREE_BIN=boot/am335x-boneblack-pubkey.dtb
+
+Then U-Boot will copy that file to u-boot.dtb, put it in the .img file
+if used, and u-boot-dtb.bin.
+
 If you wish to put the fdt at a different address in memory, you can
 define the "fdtcontroladdr" environment variable. This is the hex
 address of the fdt binary blob, and will override either of the options.
diff --git a/dts/Makefile b/dts/Makefile
index e59550c..8bb5212 100644
--- a/dts/Makefile
+++ b/dts/Makefile
@@ -12,7 +12,11 @@ ifeq ($(DEVICE_TREE),)
 DEVICE_TREE := unset
 endif
 
+ifneq ($(DEV_TREE_BIN),)
+DTB := $(DEV_TREE_BIN)
+else
 DTB := arch/$(ARCH)/dts/$(DEVICE_TREE).dtb
+endif
 
 quiet_cmd_copy = COPY    $@
       cmd_copy = cp $< $@
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 08/14] fdt: Update functions which write to an FDT to return -ENOSPC
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
                   ` (6 preceding siblings ...)
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 07/14] fdt: Add DEV_TREE_BIN option to specify a device tree binary file Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 09/14] Improve error handling in fit_common Simon Glass
                   ` (6 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

When writing values into an FDT it is possible that there will be
insufficient space. If the caller gets a useful error then it can
potentially deal with the situation.

Adjust these functions to return -ENOSPC when the FDT is full.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3:
- Fix typo in commit message

Changes in v2:
- Fix line over 80cols

 common/image-fit.c |  4 ++--
 include/rsa.h      |  3 ++-
 lib/rsa/rsa-sign.c | 28 +++++++++++++++++++---------
 3 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/common/image-fit.c b/common/image-fit.c
index 77f32bc..732505a 100644
--- a/common/image-fit.c
+++ b/common/image-fit.c
@@ -833,7 +833,7 @@ static int fit_image_hash_get_ignore(const void *fit, int noffset, int *ignore)
  *
  * returns:
  *     0, on success
- *     -1, on property read failure
+ *     -ENOSPC if no space in device tree, -1 for other error
  */
 int fit_set_timestamp(void *fit, int noffset, time_t timestamp)
 {
@@ -847,7 +847,7 @@ int fit_set_timestamp(void *fit, int noffset, time_t timestamp)
 		printf("Can't set '%s' property for '%s' node (%s)\n",
 		       FIT_TIMESTAMP_PROP, fit_get_name(fit, noffset, NULL),
 		       fdt_strerror(ret));
-		return -1;
+		return ret == -FDT_ERR_NOSPACE ? -ENOSPC : -1;
 	}
 
 	return 0;
diff --git a/include/rsa.h b/include/rsa.h
index a5680ab..325751a 100644
--- a/include/rsa.h
+++ b/include/rsa.h
@@ -60,7 +60,8 @@ int rsa_sign(struct image_sign_info *info,
  *
  * @info:	Specifies key and FIT information
  * @keydest:	Destination FDT blob for public key data
- * @return: 0, on success, -ve on error
+ * @return: 0, on success, -ENOSPC if the keydest FDT blob ran out of space,
+		other -ve value on error
 */
 int rsa_add_verify_data(struct image_sign_info *info, void *keydest);
 #else
diff --git a/lib/rsa/rsa-sign.c b/lib/rsa/rsa-sign.c
index ca8c120..48f3197 100644
--- a/lib/rsa/rsa-sign.c
+++ b/lib/rsa/rsa-sign.c
@@ -429,20 +429,30 @@ int rsa_add_verify_data(struct image_sign_info *info, void *keydest)
 
 	ret = fdt_setprop_string(keydest, node, "key-name-hint",
 				 info->keyname);
-	ret |= fdt_setprop_u32(keydest, node, "rsa,num-bits", bits);
-	ret |= fdt_setprop_u32(keydest, node, "rsa,n0-inverse", n0_inv);
-	ret |= fdt_add_bignum(keydest, node, "rsa,modulus", modulus, bits);
-	ret |= fdt_add_bignum(keydest, node, "rsa,r-squared", r_squared, bits);
-	ret |= fdt_setprop_string(keydest, node, FIT_ALGO_PROP,
-				  info->algo->name);
+	if (!ret)
+		ret = fdt_setprop_u32(keydest, node, "rsa,num-bits", bits);
+	if (!ret)
+		ret = fdt_setprop_u32(keydest, node, "rsa,n0-inverse", n0_inv);
+	if (!ret) {
+		ret = fdt_add_bignum(keydest, node, "rsa,modulus", modulus,
+				     bits);
+	}
+	if (!ret) {
+		ret = fdt_add_bignum(keydest, node, "rsa,r-squared", r_squared,
+				     bits);
+	}
+	if (!ret) {
+		ret = fdt_setprop_string(keydest, node, FIT_ALGO_PROP,
+					 info->algo->name);
+	}
 	if (info->require_keys) {
-		fdt_setprop_string(keydest, node, "required",
-				   info->require_keys);
+		ret = fdt_setprop_string(keydest, node, "required",
+					 info->require_keys);
 	}
 	BN_free(modulus);
 	BN_free(r_squared);
 	if (ret)
-		return -EIO;
+		return ret == FDT_ERR_NOSPACE ? -ENOSPC : -EIO;
 
 	return 0;
 }
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 09/14] Improve error handling in fit_common
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
                   ` (7 preceding siblings ...)
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 08/14] fdt: Update functions which write to an FDT to return -ENOSPC Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-11 22:18   ` [U-Boot] [U-Boot, v3, " Tom Rini
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 10/14] mkimage: Automatically make space in FDT when full Simon Glass
                   ` (5 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

Make the error handling common, and make sure the file is always closed
on error. Rename the parameter to be more description and add comments.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3:
- Add new patch to improve error handling in fit_common

Changes in v2: None

 tools/fit_check_sign.c |  4 ++--
 tools/fit_common.c     | 28 ++++++++++++++--------------
 tools/fit_common.h     | 14 ++++++++++++--
 tools/fit_info.c       |  2 +-
 4 files changed, 29 insertions(+), 19 deletions(-)

diff --git a/tools/fit_check_sign.c b/tools/fit_check_sign.c
index d6d9340..e6df610 100644
--- a/tools/fit_check_sign.c
+++ b/tools/fit_check_sign.c
@@ -61,10 +61,10 @@ int main(int argc, char **argv)
 			break;
 	}
 
-	ffd = mmap_fdt(cmdname, fdtfile, &fit_blob, &fsbuf, 0);
+	ffd = mmap_fdt(cmdname, fdtfile, &fit_blob, &fsbuf, false);
 	if (ffd < 0)
 		return EXIT_FAILURE;
-	kfd = mmap_fdt(cmdname, keyfile, &key_blob, &ksbuf, 0);
+	kfd = mmap_fdt(cmdname, keyfile, &key_blob, &ksbuf, false);
 	if (ffd < 0)
 		return EXIT_FAILURE;
 
diff --git a/tools/fit_common.c b/tools/fit_common.c
index ee1767b..286f357 100644
--- a/tools/fit_common.c
+++ b/tools/fit_common.c
@@ -38,8 +38,8 @@ int fit_check_image_types(uint8_t type)
 		return EXIT_FAILURE;
 }
 
-int mmap_fdt(char *cmdname, const char *fname, void **blobp,
-		struct stat *sbuf, int useunlink)
+int mmap_fdt(const char *cmdname, const char *fname, void **blobp,
+	     struct stat *sbuf, bool delete_on_error)
 {
 	void *ptr;
 	int fd;
@@ -50,17 +50,13 @@ int mmap_fdt(char *cmdname, const char *fname, void **blobp,
 	if (fd < 0) {
 		fprintf(stderr, "%s: Can't open %s: %s\n",
 			cmdname, fname, strerror(errno));
-		if (useunlink)
-			unlink(fname);
-		return -1;
+		goto err;
 	}
 
 	if (fstat(fd, sbuf) < 0) {
 		fprintf(stderr, "%s: Can't stat %s: %s\n",
 			cmdname, fname, strerror(errno));
-		if (useunlink)
-			unlink(fname);
-		return -1;
+		goto err;
 	}
 
 	errno = 0;
@@ -68,19 +64,23 @@ int mmap_fdt(char *cmdname, const char *fname, void **blobp,
 	if ((ptr == MAP_FAILED) || (errno != 0)) {
 		fprintf(stderr, "%s: Can't read %s: %s\n",
 			cmdname, fname, strerror(errno));
-		if (useunlink)
-			unlink(fname);
-		return -1;
+		goto err;
 	}
 
 	/* check if ptr has a valid blob */
 	if (fdt_check_header(ptr)) {
 		fprintf(stderr, "%s: Invalid FIT blob\n", cmdname);
-		if (useunlink)
-			unlink(fname);
-		return -1;
+		goto err;
 	}
 
 	*blobp = ptr;
 	return fd;
+
+err:
+	if (fd >= 0)
+		close(fd);
+	if (delete_on_error)
+		unlink(fname);
+
+	return -1;
 }
diff --git a/tools/fit_common.h b/tools/fit_common.h
index adf4404..adcee6d 100644
--- a/tools/fit_common.h
+++ b/tools/fit_common.h
@@ -16,7 +16,17 @@ int fit_verify_header(unsigned char *ptr, int image_size,
 
 int fit_check_image_types(uint8_t type);
 
-int mmap_fdt(char *cmdname, const char *fname, void **blobp,
-		struct stat *sbuf, int useunlink);
+/**
+ * Map an FDT into memory, optionally increasing its size
+ *
+ * @cmdname:	Tool name (for displaying with error messages)
+ * @fname:	Filename containing FDT
+ * @blobp:	Returns pointer to FDT blob
+ * @sbuf:	File status information is stored here
+ * @delete_on_error:	true to delete the file if we get an error
+ * @return 0 if OK, -1 on error.
+ */
+int mmap_fdt(const char *cmdname, const char *fname, void **blobp,
+	     struct stat *sbuf, bool delete_on_error);
 
 #endif /* _FIT_COMMON_H_ */
diff --git a/tools/fit_info.c b/tools/fit_info.c
index 50f3c8e..9442ff1 100644
--- a/tools/fit_info.c
+++ b/tools/fit_info.c
@@ -68,7 +68,7 @@ int main(int argc, char **argv)
 			break;
 		}
 
-	ffd = mmap_fdt(cmdname, fdtfile, &fit_blob, &fsbuf, 0);
+	ffd = mmap_fdt(cmdname, fdtfile, &fit_blob, &fsbuf, false);
 
 	if (ffd < 0) {
 		printf("Could not open %s\n", fdtfile);
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 10/14] mkimage: Automatically make space in FDT when full
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
                   ` (8 preceding siblings ...)
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 09/14] Improve error handling in fit_common Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-11 22:18   ` [U-Boot] [U-Boot, v3, " Tom Rini
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 11/14] arm: ti: Increase malloc size to 16MB for armv7 boards Simon Glass
                   ` (4 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

When adding hashes or signatures, the target FDT may be full. Detect this
and automatically try again after making 1KB of space.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3:
- Rebase to master

Changes in v2: None

 tools/fit_check_sign.c |   4 +-
 tools/fit_common.c     |  25 ++++++++++-
 tools/fit_common.h     |   5 ++-
 tools/fit_image.c      | 112 ++++++++++++++++++++++++++++++-------------------
 tools/fit_info.c       |   2 +-
 tools/image-host.c     |  26 ++++++++----
 6 files changed, 114 insertions(+), 60 deletions(-)

diff --git a/tools/fit_check_sign.c b/tools/fit_check_sign.c
index e6df610..c2aefae 100644
--- a/tools/fit_check_sign.c
+++ b/tools/fit_check_sign.c
@@ -61,10 +61,10 @@ int main(int argc, char **argv)
 			break;
 	}
 
-	ffd = mmap_fdt(cmdname, fdtfile, &fit_blob, &fsbuf, false);
+	ffd = mmap_fdt(cmdname, fdtfile, 0, &fit_blob, &fsbuf, false);
 	if (ffd < 0)
 		return EXIT_FAILURE;
-	kfd = mmap_fdt(cmdname, keyfile, &key_blob, &ksbuf, false);
+	kfd = mmap_fdt(cmdname, keyfile, 0, &key_blob, &ksbuf, false);
 	if (ffd < 0)
 		return EXIT_FAILURE;
 
diff --git a/tools/fit_common.c b/tools/fit_common.c
index 286f357..81ba698 100644
--- a/tools/fit_common.c
+++ b/tools/fit_common.c
@@ -38,8 +38,8 @@ int fit_check_image_types(uint8_t type)
 		return EXIT_FAILURE;
 }
 
-int mmap_fdt(const char *cmdname, const char *fname, void **blobp,
-	     struct stat *sbuf, bool delete_on_error)
+int mmap_fdt(const char *cmdname, const char *fname, size_t size_inc,
+	     void **blobp, struct stat *sbuf, bool delete_on_error)
 {
 	void *ptr;
 	int fd;
@@ -59,6 +59,15 @@ int mmap_fdt(const char *cmdname, const char *fname, void **blobp,
 		goto err;
 	}
 
+	if (size_inc) {
+		sbuf->st_size += size_inc;
+		if (ftruncate(fd, sbuf->st_size)) {
+			fprintf(stderr, "%s: Can't expand %s: %s\n",
+				cmdname, fname, strerror(errno));
+		goto err;
+		}
+	}
+
 	errno = 0;
 	ptr = mmap(0, sbuf->st_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
 	if ((ptr == MAP_FAILED) || (errno != 0)) {
@@ -73,6 +82,18 @@ int mmap_fdt(const char *cmdname, const char *fname, void **blobp,
 		goto err;
 	}
 
+	/* expand if needed */
+	if (size_inc) {
+		int ret;
+
+		ret = fdt_open_into(ptr, ptr, sbuf->st_size);
+		if (ret) {
+			fprintf(stderr, "%s: Cannot expand FDT: %s\n",
+				cmdname, fdt_strerror(ret));
+			goto err;
+		}
+	}
+
 	*blobp = ptr;
 	return fd;
 
diff --git a/tools/fit_common.h b/tools/fit_common.h
index adcee6d..b8d8438 100644
--- a/tools/fit_common.h
+++ b/tools/fit_common.h
@@ -21,12 +21,13 @@ int fit_check_image_types(uint8_t type);
  *
  * @cmdname:	Tool name (for displaying with error messages)
  * @fname:	Filename containing FDT
+ * @size_inc:	Amount to increase size by (0 = leave it alone)
  * @blobp:	Returns pointer to FDT blob
  * @sbuf:	File status information is stored here
  * @delete_on_error:	true to delete the file if we get an error
  * @return 0 if OK, -1 on error.
  */
-int mmap_fdt(const char *cmdname, const char *fname, void **blobp,
-	     struct stat *sbuf, bool delete_on_error);
+int mmap_fdt(const char *cmdname, const char *fname, size_t size_inc,
+	     void **blobp, struct stat *sbuf, bool delete_on_error);
 
 #endif /* _FIT_COMMON_H_ */
diff --git a/tools/fit_image.c b/tools/fit_image.c
index eeee484..3ececf9 100644
--- a/tools/fit_image.c
+++ b/tools/fit_image.c
@@ -22,6 +22,54 @@
 
 static image_header_t header;
 
+static int fit_add_file_data(struct image_tool_params *params, size_t size_inc,
+			     const char *tmpfile)
+{
+	int tfd, destfd = 0;
+	void *dest_blob = NULL;
+	off_t destfd_size = 0;
+	struct stat sbuf;
+	void *ptr;
+	int ret = 0;
+
+	tfd = mmap_fdt(params->cmdname, tmpfile, size_inc, &ptr, &sbuf, true);
+	if (tfd < 0)
+		return -EIO;
+
+	if (params->keydest) {
+		struct stat dest_sbuf;
+
+		destfd = mmap_fdt(params->cmdname, params->keydest, size_inc,
+				  &dest_blob, &dest_sbuf, false);
+		if (destfd < 0) {
+			ret = -EIO;
+			goto err_keydest;
+		}
+		destfd_size = dest_sbuf.st_size;
+	}
+
+	/* for first image creation, add a timestamp@offset 0 i.e., root  */
+	if (params->datafile)
+		ret = fit_set_timestamp(ptr, 0, sbuf.st_mtime);
+
+	if (!ret) {
+		ret = fit_add_verification_data(params->keydir, dest_blob, ptr,
+						params->comment,
+						params->require_keys);
+	}
+
+	if (dest_blob) {
+		munmap(dest_blob, destfd_size);
+		close(destfd);
+	}
+
+err_keydest:
+	munmap(ptr, sbuf.st_size);
+	close(tfd);
+
+	return ret;
+}
+
 /**
  * fit_handle_file - main FIT file processing function
  *
@@ -38,11 +86,8 @@ static int fit_handle_file(struct image_tool_params *params)
 {
 	char tmpfile[MKIMAGE_MAX_TMPFILE_LEN];
 	char cmd[MKIMAGE_MAX_DTC_CMDLINE_LEN];
-	int tfd, destfd = 0;
-	void *dest_blob = NULL;
-	struct stat sbuf;
-	void *ptr;
-	off_t destfd_size = 0;
+	size_t size_inc;
+	int ret;
 
 	/* Flattened Image Tree (FIT) format  handling */
 	debug ("FIT format handling\n");
@@ -73,40 +118,26 @@ static int fit_handle_file(struct image_tool_params *params)
 		goto err_system;
 	}
 
-	if (params->keydest) {
-		destfd = mmap_fdt(params->cmdname, params->keydest,
-				  &dest_blob, &sbuf, 1);
-		if (destfd < 0)
-			goto err_keydest;
-		destfd_size = sbuf.st_size;
+	/*
+	 * Set hashes for images in the blob. Unfortunately we may need more
+	 * space in either FDT, so keep trying until we succeed.
+	 *
+	 * Note: this is pretty inefficient for signing, since we must
+	 * calculate the signature every time. It would be better to calculate
+	 * all the data and then store it in a separate step. However, this
+	 * would be considerably more complex to implement. Generally a few
+	 * steps of this loop is enough to sign with several keys.
+	 */
+	for (size_inc = 0; size_inc < 64 * 1024; size_inc += 1024) {
+		ret = fit_add_file_data(params, size_inc, tmpfile);
+		if (!ret || ret != -ENOSPC)
+			break;
 	}
 
-	tfd = mmap_fdt(params->cmdname, tmpfile, &ptr, &sbuf, 1);
-	if (tfd < 0)
-		goto err_mmap;
-
-	/* set hashes for images in the blob */
-	if (fit_add_verification_data(params->keydir,
-				      dest_blob, ptr, params->comment,
-				      params->require_keys)) {
+	if (ret) {
 		fprintf(stderr, "%s Can't add hashes to FIT blob\n",
 			params->cmdname);
-		goto err_add_hashes;
-	}
-
-	/* for first image creation, add a timestamp at offset 0 i.e., root  */
-	if (params->datafile && fit_set_timestamp(ptr, 0, sbuf.st_mtime)) {
-		fprintf (stderr, "%s: Can't add image timestamp\n",
-				params->cmdname);
-		goto err_add_timestamp;
-	}
-	debug ("Added timestamp successfully\n");
-
-	munmap ((void *)ptr, sbuf.st_size);
-	close (tfd);
-	if (dest_blob) {
-		munmap(dest_blob, destfd_size);
-		close(destfd);
+		goto err_system;
 	}
 
 	if (rename (tmpfile, params->imagefile) == -1) {
@@ -115,17 +146,10 @@ static int fit_handle_file(struct image_tool_params *params)
 				strerror (errno));
 		unlink (tmpfile);
 		unlink (params->imagefile);
-		return (EXIT_FAILURE);
+		return EXIT_FAILURE;
 	}
-	return (EXIT_SUCCESS);
+	return EXIT_SUCCESS;
 
-err_add_timestamp:
-err_add_hashes:
-	munmap(ptr, sbuf.st_size);
-err_mmap:
-	if (dest_blob)
-		munmap(dest_blob, destfd_size);
-err_keydest:
 err_system:
 	unlink(tmpfile);
 	return -1;
diff --git a/tools/fit_info.c b/tools/fit_info.c
index 9442ff1..afbed7b 100644
--- a/tools/fit_info.c
+++ b/tools/fit_info.c
@@ -68,7 +68,7 @@ int main(int argc, char **argv)
 			break;
 		}
 
-	ffd = mmap_fdt(cmdname, fdtfile, &fit_blob, &fsbuf, false);
+	ffd = mmap_fdt(cmdname, fdtfile, 0, &fit_blob, &fsbuf, false);
 
 	if (ffd < 0) {
 		printf("Could not open %s\n", fdtfile);
diff --git a/tools/image-host.c b/tools/image-host.c
index 651f1c2..2be5e80 100644
--- a/tools/image-host.c
+++ b/tools/image-host.c
@@ -224,7 +224,9 @@ static int fit_image_process_sig(const char *keydir, void *keydest,
 	ret = fit_image_write_sig(fit, noffset, value, value_len, comment,
 			NULL, 0);
 	if (ret) {
-		printf("Can't write signature for '%s' signature node in '%s' image node: %s\n",
+		if (ret == -FDT_ERR_NOSPACE)
+			return -ENOSPC;
+		printf("Can't write signature for '%s' signature node in '%s' conf node: %s\n",
 		       node_name, image_name, fdt_strerror(ret));
 		return -1;
 	}
@@ -589,10 +591,13 @@ static int fit_config_process_sig(const char *keydir, void *keydest,
 		return -1;
 	}
 
-	if (fit_image_write_sig(fit, noffset, value, value_len, comment,
-				region_prop, region_proplen)) {
-		printf("Can't write signature for '%s' signature node in '%s' conf node\n",
-		       node_name, conf_name);
+	ret = fit_image_write_sig(fit, noffset, value, value_len, comment,
+				region_prop, region_proplen);
+	if (ret) {
+		if (ret == -FDT_ERR_NOSPACE)
+			return -ENOSPC;
+		printf("Can't write signature for '%s' signature node in '%s' conf node: %s\n",
+		       node_name, conf_name, fdt_strerror(ret));
 		return -1;
 	}
 	free(value);
@@ -602,10 +607,13 @@ static int fit_config_process_sig(const char *keydir, void *keydest,
 	info.keyname = fdt_getprop(fit, noffset, "key-name-hint", NULL);
 
 	/* Write the public key into the supplied FDT file */
-	if (keydest && info.algo->add_verify_data(&info, keydest)) {
-		printf("Failed to add verification data for '%s' signature node in '%s' image node\n",
-		       node_name, conf_name);
-		return -1;
+	if (keydest) {
+		ret = info.algo->add_verify_data(&info, keydest);
+		if (ret) {
+			printf("Failed to add verification data for '%s' signature node in '%s' image node\n",
+			       node_name, conf_name);
+			return ret == FDT_ERR_NOSPACE ? -ENOSPC : -EIO;
+		}
 	}
 
 	return 0;
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 11/14] arm: ti: Increase malloc size to 16MB for armv7 boards
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
                   ` (9 preceding siblings ...)
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 10/14] mkimage: Automatically make space in FDT when full Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-11 22:18   ` [U-Boot] [U-Boot, v3, " Tom Rini
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 12/14] am33xx/omap: Enable CONFIG_OF_CONTROL Simon Glass
                   ` (3 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

The current size of 1MB is not enough use to use DFU. Increase it for
ARMv7 boards, all of which should have 32MB or more SDRAM.

With this change it is possible to do 'dfu mmc 0' on a Beaglebone Black.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3: None
Changes in v2: None

 include/configs/ti_armv7_common.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h
index 4854272..b2896ff 100644
--- a/include/configs/ti_armv7_common.h
+++ b/include/configs/ti_armv7_common.h
@@ -127,7 +127,7 @@
  * we are on so we do not need to rely on the command prompt.  We set a
  * console baudrate of 115200 and use the default baud rate table.
  */
-#define CONFIG_SYS_MALLOC_LEN		(1024 << 10)
+#define CONFIG_SYS_MALLOC_LEN		(16 << 20)
 #define CONFIG_SYS_HUSH_PARSER
 #define CONFIG_SYS_PROMPT		"U-Boot# "
 #define CONFIG_SYS_CONSOLE_INFO_QUIET
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 12/14] am33xx/omap: Enable CONFIG_OF_CONTROL
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
                   ` (10 preceding siblings ...)
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 11/14] arm: ti: Increase malloc size to 16MB for armv7 boards Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-11 22:18   ` [U-Boot] [U-Boot, v3, " Tom Rini
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 13/14] am33xx/omap: Enable FIT support Simon Glass
                   ` (2 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

Add support for device tree control and add device tree files for the
beaglebone black initially.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3: None
Changes in v2:
- Move device tree files into arch/arm/dts

 arch/arm/dts/Makefile                     |   1 +
 arch/arm/dts/am335x-bone-common.dtsi      | 262 ++++++++++++
 arch/arm/dts/am335x-boneblack.dts         |  17 +
 arch/arm/dts/am33xx.dtsi                  | 649 ++++++++++++++++++++++++++++++
 arch/arm/dts/dt-bindings/gpio/gpio.h      |  15 +
 arch/arm/dts/dt-bindings/pinctrl/am33xx.h |  42 ++
 arch/arm/dts/dt-bindings/pinctrl/omap.h   |  55 +++
 arch/arm/dts/tps65217.dtsi                |  56 +++
 include/configs/am335x_evm.h              |   6 +
 9 files changed, 1103 insertions(+)
 create mode 100644 arch/arm/dts/am335x-bone-common.dtsi
 create mode 100644 arch/arm/dts/am335x-boneblack.dts
 create mode 100644 arch/arm/dts/am33xx.dtsi
 create mode 100644 arch/arm/dts/dt-bindings/gpio/gpio.h
 create mode 100644 arch/arm/dts/dt-bindings/pinctrl/am33xx.h
 create mode 100644 arch/arm/dts/dt-bindings/pinctrl/omap.h
 create mode 100644 arch/arm/dts/tps65217.dtsi

diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 5554615..61527a2 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -31,6 +31,7 @@ dtb-$(CONFIG_ZYNQ) += zynq-zc702.dtb \
 	zynq-zc770-xm010.dtb \
 	zynq-zc770-xm012.dtb \
 	zynq-zc770-xm013.dtb
+dtb-$(CONFIG_AM33XX) += am335x-boneblack.dtb
 
 targets += $(dtb-y)
 
diff --git a/arch/arm/dts/am335x-bone-common.dtsi b/arch/arm/dts/am335x-bone-common.dtsi
new file mode 100644
index 0000000..2f66ded
--- /dev/null
+++ b/arch/arm/dts/am335x-bone-common.dtsi
@@ -0,0 +1,262 @@
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/ {
+	model = "TI AM335x BeagleBone";
+	compatible = "ti,am335x-bone", "ti,am33xx";
+
+	cpus {
+		cpu at 0 {
+			cpu0-supply = <&dcdc2_reg>;
+		};
+	};
+
+	memory {
+		device_type = "memory";
+		reg = <0x80000000 0x10000000>; /* 256 MB */
+	};
+
+	am33xx_pinmux: pinmux at 44e10800 {
+		pinctrl-names = "default";
+		pinctrl-0 = <&clkout2_pin>;
+
+		user_leds_s0: user_leds_s0 {
+			pinctrl-single,pins = <
+				0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)	/* gpmc_a5.gpio1_21 */
+				0x58 (PIN_OUTPUT_PULLUP | MUX_MODE7)	/* gpmc_a6.gpio1_22 */
+				0x5c (PIN_OUTPUT_PULLDOWN | MUX_MODE7)	/* gpmc_a7.gpio1_23 */
+				0x60 (PIN_OUTPUT_PULLUP | MUX_MODE7)	/* gpmc_a8.gpio1_24 */
+			>;
+		};
+
+		i2c0_pins: pinmux_i2c0_pins {
+			pinctrl-single,pins = <
+				0x188 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c0_sda.i2c0_sda */
+				0x18c (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c0_scl.i2c0_scl */
+			>;
+		};
+
+		uart0_pins: pinmux_uart0_pins {
+			pinctrl-single,pins = <
+				0x170 (PIN_INPUT_PULLUP | MUX_MODE0)	/* uart0_rxd.uart0_rxd */
+				0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)	/* uart0_txd.uart0_txd */
+			>;
+		};
+
+		clkout2_pin: pinmux_clkout2_pin {
+			pinctrl-single,pins = <
+				0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3)	/* xdma_event_intr1.clkout2 */
+			>;
+		};
+
+		cpsw_default: cpsw_default {
+			pinctrl-single,pins = <
+				/* Slave 1 */
+				0x110 (PIN_INPUT_PULLUP | MUX_MODE0)	/* mii1_rxerr.mii1_rxerr */
+				0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)	/* mii1_txen.mii1_txen */
+				0x118 (PIN_INPUT_PULLUP | MUX_MODE0)	/* mii1_rxdv.mii1_rxdv */
+				0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE0)	/* mii1_txd3.mii1_txd3 */
+				0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)	/* mii1_txd2.mii1_txd2 */
+				0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)	/* mii1_txd1.mii1_txd1 */
+				0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)	/* mii1_txd0.mii1_txd0 */
+				0x12c (PIN_INPUT_PULLUP | MUX_MODE0)	/* mii1_txclk.mii1_txclk */
+				0x130 (PIN_INPUT_PULLUP | MUX_MODE0)	/* mii1_rxclk.mii1_rxclk */
+				0x134 (PIN_INPUT_PULLUP | MUX_MODE0)	/* mii1_rxd3.mii1_rxd3 */
+				0x138 (PIN_INPUT_PULLUP | MUX_MODE0)	/* mii1_rxd2.mii1_rxd2 */
+				0x13c (PIN_INPUT_PULLUP | MUX_MODE0)	/* mii1_rxd1.mii1_rxd1 */
+				0x140 (PIN_INPUT_PULLUP | MUX_MODE0)	/* mii1_rxd0.mii1_rxd0 */
+			>;
+		};
+
+		cpsw_sleep: cpsw_sleep {
+			pinctrl-single,pins = <
+				/* Slave 1 reset value */
+				0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x11c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x12c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x130 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x134 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x138 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			>;
+		};
+
+		davinci_mdio_default: davinci_mdio_default {
+			pinctrl-single,pins = <
+				/* MDIO */
+				0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)	/* mdio_data.mdio_data */
+				0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)			/* mdio_clk.mdio_clk */
+			>;
+		};
+
+		davinci_mdio_sleep: davinci_mdio_sleep {
+			pinctrl-single,pins = <
+				/* MDIO reset value */
+				0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			>;
+		};
+	};
+
+	ocp {
+		uart0: serial at 44e09000 {
+			pinctrl-names = "default";
+			pinctrl-0 = <&uart0_pins>;
+
+			status = "okay";
+		};
+
+		musb: usb at 47400000 {
+			status = "okay";
+
+			control at 44e10000 {
+				status = "okay";
+			};
+
+			usb-phy at 47401300 {
+				status = "okay";
+			};
+
+			usb-phy at 47401b00 {
+				status = "okay";
+			};
+
+			usb at 47401000 {
+				status = "okay";
+			};
+
+			usb at 47401800 {
+				status = "okay";
+				dr_mode = "host";
+			};
+
+			dma-controller at 07402000  {
+				status = "okay";
+			};
+		};
+
+		i2c0: i2c at 44e0b000 {
+			pinctrl-names = "default";
+			pinctrl-0 = <&i2c0_pins>;
+
+			status = "okay";
+			clock-frequency = <400000>;
+
+			tps: tps at 24 {
+				reg = <0x24>;
+			};
+
+		};
+	};
+
+	leds {
+		pinctrl-names = "default";
+		pinctrl-0 = <&user_leds_s0>;
+
+		compatible = "gpio-leds";
+
+		led at 2 {
+			label = "beaglebone:green:heartbeat";
+			gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "heartbeat";
+			default-state = "off";
+		};
+
+		led at 3 {
+			label = "beaglebone:green:mmc0";
+			gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "mmc0";
+			default-state = "off";
+		};
+
+		led at 4 {
+			label = "beaglebone:green:usr2";
+			gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
+			default-state = "off";
+		};
+
+		led at 5 {
+			label = "beaglebone:green:usr3";
+			gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>;
+			default-state = "off";
+		};
+	};
+};
+
+/include/ "tps65217.dtsi"
+
+&tps {
+	regulators {
+		dcdc1_reg: regulator at 0 {
+			regulator-always-on;
+		};
+
+		dcdc2_reg: regulator at 1 {
+			/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
+			regulator-name = "vdd_mpu";
+			regulator-min-microvolt = <925000>;
+			regulator-max-microvolt = <1325000>;
+			regulator-boot-on;
+			regulator-always-on;
+		};
+
+		dcdc3_reg: regulator at 2 {
+			/* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
+			regulator-name = "vdd_core";
+			regulator-min-microvolt = <925000>;
+			regulator-max-microvolt = <1150000>;
+			regulator-boot-on;
+			regulator-always-on;
+		};
+
+		ldo1_reg: regulator at 3 {
+			regulator-always-on;
+		};
+
+		ldo2_reg: regulator at 4 {
+			regulator-always-on;
+		};
+
+		ldo3_reg: regulator at 5 {
+			regulator-always-on;
+		};
+
+		ldo4_reg: regulator at 6 {
+			regulator-always-on;
+		};
+	};
+};
+
+&cpsw_emac0 {
+	phy_id = <&davinci_mdio>, <0>;
+	phy-mode = "mii";
+};
+
+&cpsw_emac1 {
+	phy_id = <&davinci_mdio>, <1>;
+	phy-mode = "mii";
+};
+
+&mac {
+	pinctrl-names = "default", "sleep";
+	pinctrl-0 = <&cpsw_default>;
+	pinctrl-1 = <&cpsw_sleep>;
+
+};
+
+&davinci_mdio {
+	pinctrl-names = "default", "sleep";
+	pinctrl-0 = <&davinci_mdio_default>;
+	pinctrl-1 = <&davinci_mdio_sleep>;
+};
diff --git a/arch/arm/dts/am335x-boneblack.dts b/arch/arm/dts/am335x-boneblack.dts
new file mode 100644
index 0000000..197cadf
--- /dev/null
+++ b/arch/arm/dts/am335x-boneblack.dts
@@ -0,0 +1,17 @@
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "am33xx.dtsi"
+#include "am335x-bone-common.dtsi"
+
+&ldo3_reg {
+	regulator-min-microvolt = <1800000>;
+	regulator-max-microvolt = <1800000>;
+	regulator-always-on;
+};
diff --git a/arch/arm/dts/am33xx.dtsi b/arch/arm/dts/am33xx.dtsi
new file mode 100644
index 0000000..f9c5da9
--- /dev/null
+++ b/arch/arm/dts/am33xx.dtsi
@@ -0,0 +1,649 @@
+/*
+ * Device Tree Source for AM33XX SoC
+ *
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/am33xx.h>
+
+#include "skeleton.dtsi"
+
+/ {
+	compatible = "ti,am33xx";
+	interrupt-parent = <&intc>;
+
+	aliases {
+		serial0 = &uart0;
+		serial1 = &uart1;
+		serial2 = &uart2;
+		serial3 = &uart3;
+		serial4 = &uart4;
+		serial5 = &uart5;
+		d_can0 = &dcan0;
+		d_can1 = &dcan1;
+		usb0 = &usb0;
+		usb1 = &usb1;
+		phy0 = &usb0_phy;
+		phy1 = &usb1_phy;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		cpu at 0 {
+			compatible = "arm,cortex-a8";
+			device_type = "cpu";
+			reg = <0>;
+
+			/*
+			 * To consider voltage drop between PMIC and SoC,
+			 * tolerance value is reduced to 2% from 4% and
+			 * voltage value is increased as a precaution.
+			 */
+			operating-points = <
+				/* kHz    uV */
+				720000  1285000
+				600000  1225000
+				500000  1125000
+				275000  1125000
+			>;
+			voltage-tolerance = <2>; /* 2 percentage */
+			clock-latency = <300000>; /* From omap-cpufreq driver */
+		};
+	};
+
+	/*
+	 * The soc node represents the soc top level view. It is uses for IPs
+	 * that are not memory mapped in the MPU view or for the MPU itself.
+	 */
+	soc {
+		compatible = "ti,omap-infra";
+		mpu {
+			compatible = "ti,omap3-mpu";
+			ti,hwmods = "mpu";
+		};
+	};
+
+	am33xx_pinmux: pinmux at 44e10800 {
+		compatible = "pinctrl-single";
+		reg = <0x44e10800 0x0238>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-single,register-width = <32>;
+		pinctrl-single,function-mask = <0x7f>;
+	};
+
+	/*
+	 * XXX: Use a flat representation of the AM33XX interconnect.
+	 * The real AM33XX interconnect network is quite complex.Since
+	 * that will not bring real advantage to represent that in DT
+	 * for the moment, just use a fake OCP bus entry to represent
+	 * the whole bus hierarchy.
+	 */
+	ocp {
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		ti,hwmods = "l3_main";
+
+		intc: interrupt-controller at 48200000 {
+			compatible = "ti,omap2-intc";
+			interrupt-controller;
+			#interrupt-cells = <1>;
+			ti,intc-size = <128>;
+			reg = <0x48200000 0x1000>;
+		};
+
+		gpio0: gpio at 44e07000 {
+			compatible = "ti,omap4-gpio";
+			ti,hwmods = "gpio1";
+			gpio-controller;
+			#gpio-cells = <2>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+			reg = <0x44e07000 0x1000>;
+			interrupts = <96>;
+		};
+
+		gpio1: gpio at 4804c000 {
+			compatible = "ti,omap4-gpio";
+			ti,hwmods = "gpio2";
+			gpio-controller;
+			#gpio-cells = <2>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+			reg = <0x4804c000 0x1000>;
+			interrupts = <98>;
+		};
+
+		gpio2: gpio at 481ac000 {
+			compatible = "ti,omap4-gpio";
+			ti,hwmods = "gpio3";
+			gpio-controller;
+			#gpio-cells = <2>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+			reg = <0x481ac000 0x1000>;
+			interrupts = <32>;
+		};
+
+		gpio3: gpio at 481ae000 {
+			compatible = "ti,omap4-gpio";
+			ti,hwmods = "gpio4";
+			gpio-controller;
+			#gpio-cells = <2>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+			reg = <0x481ae000 0x1000>;
+			interrupts = <62>;
+		};
+
+		uart0: serial at 44e09000 {
+			compatible = "ti,omap3-uart";
+			ti,hwmods = "uart1";
+			clock-frequency = <48000000>;
+			reg = <0x44e09000 0x2000>;
+			interrupts = <72>;
+			status = "disabled";
+		};
+
+		uart1: serial at 48022000 {
+			compatible = "ti,omap3-uart";
+			ti,hwmods = "uart2";
+			clock-frequency = <48000000>;
+			reg = <0x48022000 0x2000>;
+			interrupts = <73>;
+			status = "disabled";
+		};
+
+		uart2: serial at 48024000 {
+			compatible = "ti,omap3-uart";
+			ti,hwmods = "uart3";
+			clock-frequency = <48000000>;
+			reg = <0x48024000 0x2000>;
+			interrupts = <74>;
+			status = "disabled";
+		};
+
+		uart3: serial at 481a6000 {
+			compatible = "ti,omap3-uart";
+			ti,hwmods = "uart4";
+			clock-frequency = <48000000>;
+			reg = <0x481a6000 0x2000>;
+			interrupts = <44>;
+			status = "disabled";
+		};
+
+		uart4: serial at 481a8000 {
+			compatible = "ti,omap3-uart";
+			ti,hwmods = "uart5";
+			clock-frequency = <48000000>;
+			reg = <0x481a8000 0x2000>;
+			interrupts = <45>;
+			status = "disabled";
+		};
+
+		uart5: serial at 481aa000 {
+			compatible = "ti,omap3-uart";
+			ti,hwmods = "uart6";
+			clock-frequency = <48000000>;
+			reg = <0x481aa000 0x2000>;
+			interrupts = <46>;
+			status = "disabled";
+		};
+
+		i2c0: i2c at 44e0b000 {
+			compatible = "ti,omap4-i2c";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			ti,hwmods = "i2c1";
+			reg = <0x44e0b000 0x1000>;
+			interrupts = <70>;
+			status = "disabled";
+		};
+
+		i2c1: i2c at 4802a000 {
+			compatible = "ti,omap4-i2c";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			ti,hwmods = "i2c2";
+			reg = <0x4802a000 0x1000>;
+			interrupts = <71>;
+			status = "disabled";
+		};
+
+		i2c2: i2c at 4819c000 {
+			compatible = "ti,omap4-i2c";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			ti,hwmods = "i2c3";
+			reg = <0x4819c000 0x1000>;
+			interrupts = <30>;
+			status = "disabled";
+		};
+
+		wdt2: wdt at 44e35000 {
+			compatible = "ti,omap3-wdt";
+			ti,hwmods = "wd_timer2";
+			reg = <0x44e35000 0x1000>;
+			interrupts = <91>;
+		};
+
+		dcan0: d_can at 481cc000 {
+			compatible = "bosch,d_can";
+			ti,hwmods = "d_can0";
+			reg = <0x481cc000 0x2000
+				0x44e10644 0x4>;
+			interrupts = <52>;
+			status = "disabled";
+		};
+
+		dcan1: d_can at 481d0000 {
+			compatible = "bosch,d_can";
+			ti,hwmods = "d_can1";
+			reg = <0x481d0000 0x2000
+				0x44e10644 0x4>;
+			interrupts = <55>;
+			status = "disabled";
+		};
+
+		timer1: timer at 44e31000 {
+			compatible = "ti,am335x-timer-1ms";
+			reg = <0x44e31000 0x400>;
+			interrupts = <67>;
+			ti,hwmods = "timer1";
+			ti,timer-alwon;
+		};
+
+		timer2: timer at 48040000 {
+			compatible = "ti,am335x-timer";
+			reg = <0x48040000 0x400>;
+			interrupts = <68>;
+			ti,hwmods = "timer2";
+		};
+
+		timer3: timer at 48042000 {
+			compatible = "ti,am335x-timer";
+			reg = <0x48042000 0x400>;
+			interrupts = <69>;
+			ti,hwmods = "timer3";
+		};
+
+		timer4: timer at 48044000 {
+			compatible = "ti,am335x-timer";
+			reg = <0x48044000 0x400>;
+			interrupts = <92>;
+			ti,hwmods = "timer4";
+			ti,timer-pwm;
+		};
+
+		timer5: timer at 48046000 {
+			compatible = "ti,am335x-timer";
+			reg = <0x48046000 0x400>;
+			interrupts = <93>;
+			ti,hwmods = "timer5";
+			ti,timer-pwm;
+		};
+
+		timer6: timer at 48048000 {
+			compatible = "ti,am335x-timer";
+			reg = <0x48048000 0x400>;
+			interrupts = <94>;
+			ti,hwmods = "timer6";
+			ti,timer-pwm;
+		};
+
+		timer7: timer at 4804a000 {
+			compatible = "ti,am335x-timer";
+			reg = <0x4804a000 0x400>;
+			interrupts = <95>;
+			ti,hwmods = "timer7";
+			ti,timer-pwm;
+		};
+
+		rtc at 44e3e000 {
+			compatible = "ti,da830-rtc";
+			reg = <0x44e3e000 0x1000>;
+			interrupts = <75
+				      76>;
+			ti,hwmods = "rtc";
+		};
+
+		spi0: spi at 48030000 {
+			compatible = "ti,omap4-mcspi";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0x48030000 0x400>;
+			interrupts = <65>;
+			ti,spi-num-cs = <2>;
+			ti,hwmods = "spi0";
+			status = "disabled";
+		};
+
+		spi1: spi at 481a0000 {
+			compatible = "ti,omap4-mcspi";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0x481a0000 0x400>;
+			interrupts = <125>;
+			ti,spi-num-cs = <2>;
+			ti,hwmods = "spi1";
+			status = "disabled";
+		};
+
+		usb: usb at 47400000 {
+			compatible = "ti,am33xx-usb";
+			reg = <0x47400000 0x1000>;
+			ranges;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ti,hwmods = "usb_otg_hs";
+			status = "disabled";
+
+			ctrl_mod: control at 44e10000 {
+				compatible = "ti,am335x-usb-ctrl-module";
+				reg = <0x44e10620 0x10
+					0x44e10648 0x4>;
+				reg-names = "phy_ctrl", "wakeup";
+				status = "disabled";
+			};
+
+			usb0_phy: usb-phy at 47401300 {
+				compatible = "ti,am335x-usb-phy";
+				reg = <0x47401300 0x100>;
+				reg-names = "phy";
+				status = "disabled";
+				ti,ctrl_mod = <&ctrl_mod>;
+			};
+
+			usb0: usb at 47401000 {
+				compatible = "ti,musb-am33xx";
+				status = "disabled";
+				reg = <0x47401400 0x400
+					0x47401000 0x200>;
+				reg-names = "mc", "control";
+
+				interrupts = <18>;
+				interrupt-names = "mc";
+				dr_mode = "otg";
+				mentor,multipoint = <1>;
+				mentor,num-eps = <16>;
+				mentor,ram-bits = <12>;
+				mentor,power = <500>;
+				phys = <&usb0_phy>;
+
+				dmas = <&cppi41dma  0 0 &cppi41dma  1 0
+					&cppi41dma  2 0 &cppi41dma  3 0
+					&cppi41dma  4 0 &cppi41dma  5 0
+					&cppi41dma  6 0 &cppi41dma  7 0
+					&cppi41dma  8 0 &cppi41dma  9 0
+					&cppi41dma 10 0 &cppi41dma 11 0
+					&cppi41dma 12 0 &cppi41dma 13 0
+					&cppi41dma 14 0 &cppi41dma  0 1
+					&cppi41dma  1 1 &cppi41dma  2 1
+					&cppi41dma  3 1 &cppi41dma  4 1
+					&cppi41dma  5 1 &cppi41dma  6 1
+					&cppi41dma  7 1 &cppi41dma  8 1
+					&cppi41dma  9 1 &cppi41dma 10 1
+					&cppi41dma 11 1 &cppi41dma 12 1
+					&cppi41dma 13 1 &cppi41dma 14 1>;
+				dma-names =
+					"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
+					"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
+					"rx14", "rx15",
+					"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
+					"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
+					"tx14", "tx15";
+			};
+
+			usb1_phy: usb-phy at 47401b00 {
+				compatible = "ti,am335x-usb-phy";
+				reg = <0x47401b00 0x100>;
+				reg-names = "phy";
+				status = "disabled";
+				ti,ctrl_mod = <&ctrl_mod>;
+			};
+
+			usb1: usb at 47401800 {
+				compatible = "ti,musb-am33xx";
+				status = "disabled";
+				reg = <0x47401c00 0x400
+					0x47401800 0x200>;
+				reg-names = "mc", "control";
+				interrupts = <19>;
+				interrupt-names = "mc";
+				dr_mode = "otg";
+				mentor,multipoint = <1>;
+				mentor,num-eps = <16>;
+				mentor,ram-bits = <12>;
+				mentor,power = <500>;
+				phys = <&usb1_phy>;
+
+				dmas = <&cppi41dma 15 0 &cppi41dma 16 0
+					&cppi41dma 17 0 &cppi41dma 18 0
+					&cppi41dma 19 0 &cppi41dma 20 0
+					&cppi41dma 21 0 &cppi41dma 22 0
+					&cppi41dma 23 0 &cppi41dma 24 0
+					&cppi41dma 25 0 &cppi41dma 26 0
+					&cppi41dma 27 0 &cppi41dma 28 0
+					&cppi41dma 29 0 &cppi41dma 15 1
+					&cppi41dma 16 1 &cppi41dma 17 1
+					&cppi41dma 18 1 &cppi41dma 19 1
+					&cppi41dma 20 1 &cppi41dma 21 1
+					&cppi41dma 22 1 &cppi41dma 23 1
+					&cppi41dma 24 1 &cppi41dma 25 1
+					&cppi41dma 26 1 &cppi41dma 27 1
+					&cppi41dma 28 1 &cppi41dma 29 1>;
+				dma-names =
+					"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
+					"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
+					"rx14", "rx15",
+					"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
+					"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
+					"tx14", "tx15";
+			};
+
+			cppi41dma: dma-controller at 07402000 {
+				compatible = "ti,am3359-cppi41";
+				reg =  <0x47400000 0x1000
+					0x47402000 0x1000
+					0x47403000 0x1000
+					0x47404000 0x4000>;
+				reg-names = "glue", "controller", "scheduler", "queuemgr";
+				interrupts = <17>;
+				interrupt-names = "glue";
+				#dma-cells = <2>;
+				#dma-channels = <30>;
+				#dma-requests = <256>;
+				status = "disabled";
+			};
+		};
+
+		epwmss0: epwmss at 48300000 {
+			compatible = "ti,am33xx-pwmss";
+			reg = <0x48300000 0x10>;
+			ti,hwmods = "epwmss0";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			status = "disabled";
+			ranges = <0x48300100 0x48300100 0x80   /* ECAP */
+				  0x48300180 0x48300180 0x80   /* EQEP */
+				  0x48300200 0x48300200 0x80>; /* EHRPWM */
+
+			ecap0: ecap at 48300100 {
+				compatible = "ti,am33xx-ecap";
+				#pwm-cells = <3>;
+				reg = <0x48300100 0x80>;
+				ti,hwmods = "ecap0";
+				status = "disabled";
+			};
+
+			ehrpwm0: ehrpwm at 48300200 {
+				compatible = "ti,am33xx-ehrpwm";
+				#pwm-cells = <3>;
+				reg = <0x48300200 0x80>;
+				ti,hwmods = "ehrpwm0";
+				status = "disabled";
+			};
+		};
+
+		epwmss1: epwmss at 48302000 {
+			compatible = "ti,am33xx-pwmss";
+			reg = <0x48302000 0x10>;
+			ti,hwmods = "epwmss1";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			status = "disabled";
+			ranges = <0x48302100 0x48302100 0x80   /* ECAP */
+				  0x48302180 0x48302180 0x80   /* EQEP */
+				  0x48302200 0x48302200 0x80>; /* EHRPWM */
+
+			ecap1: ecap at 48302100 {
+				compatible = "ti,am33xx-ecap";
+				#pwm-cells = <3>;
+				reg = <0x48302100 0x80>;
+				ti,hwmods = "ecap1";
+				status = "disabled";
+			};
+
+			ehrpwm1: ehrpwm at 48302200 {
+				compatible = "ti,am33xx-ehrpwm";
+				#pwm-cells = <3>;
+				reg = <0x48302200 0x80>;
+				ti,hwmods = "ehrpwm1";
+				status = "disabled";
+			};
+		};
+
+		epwmss2: epwmss at 48304000 {
+			compatible = "ti,am33xx-pwmss";
+			reg = <0x48304000 0x10>;
+			ti,hwmods = "epwmss2";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			status = "disabled";
+			ranges = <0x48304100 0x48304100 0x80   /* ECAP */
+				  0x48304180 0x48304180 0x80   /* EQEP */
+				  0x48304200 0x48304200 0x80>; /* EHRPWM */
+
+			ecap2: ecap at 48304100 {
+				compatible = "ti,am33xx-ecap";
+				#pwm-cells = <3>;
+				reg = <0x48304100 0x80>;
+				ti,hwmods = "ecap2";
+				status = "disabled";
+			};
+
+			ehrpwm2: ehrpwm at 48304200 {
+				compatible = "ti,am33xx-ehrpwm";
+				#pwm-cells = <3>;
+				reg = <0x48304200 0x80>;
+				ti,hwmods = "ehrpwm2";
+				status = "disabled";
+			};
+		};
+
+		mac: ethernet at 4a100000 {
+			compatible = "ti,cpsw";
+			ti,hwmods = "cpgmac0";
+			cpdma_channels = <8>;
+			ale_entries = <1024>;
+			bd_ram_size = <0x2000>;
+			no_bd_ram = <0>;
+			rx_descs = <64>;
+			mac_control = <0x20>;
+			slaves = <2>;
+			active_slave = <0>;
+			cpts_clock_mult = <0x80000000>;
+			cpts_clock_shift = <29>;
+			reg = <0x4a100000 0x800
+			       0x4a101200 0x100>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			interrupt-parent = <&intc>;
+			/*
+			 * c0_rx_thresh_pend
+			 * c0_rx_pend
+			 * c0_tx_pend
+			 * c0_misc_pend
+			 */
+			interrupts = <40 41 42 43>;
+			ranges;
+
+			davinci_mdio: mdio at 4a101000 {
+				compatible = "ti,davinci_mdio";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				ti,hwmods = "davinci_mdio";
+				bus_freq = <1000000>;
+				reg = <0x4a101000 0x100>;
+			};
+
+			cpsw_emac0: slave at 4a100200 {
+				/* Filled in by U-Boot */
+				mac-address = [ 00 00 00 00 00 00 ];
+			};
+
+			cpsw_emac1: slave at 4a100300 {
+				/* Filled in by U-Boot */
+				mac-address = [ 00 00 00 00 00 00 ];
+			};
+		};
+
+		ocmcram: ocmcram at 40300000 {
+			compatible = "ti,am3352-ocmcram";
+			reg = <0x40300000 0x10000>;
+			ti,hwmods = "ocmcram";
+		};
+
+		wkup_m3: wkup_m3 at 44d00000 {
+			compatible = "ti,am3353-wkup-m3";
+			reg = <0x44d00000 0x4000	/* M3 UMEM */
+			       0x44d80000 0x2000>;	/* M3 DMEM */
+			ti,hwmods = "wkup_m3";
+		};
+
+		elm: elm at 48080000 {
+			compatible = "ti,am3352-elm";
+			reg = <0x48080000 0x2000>;
+			interrupts = <4>;
+			ti,hwmods = "elm";
+			status = "disabled";
+		};
+
+		tscadc: tscadc at 44e0d000 {
+			compatible = "ti,am3359-tscadc";
+			reg = <0x44e0d000 0x1000>;
+			interrupt-parent = <&intc>;
+			interrupts = <16>;
+			ti,hwmods = "adc_tsc";
+			status = "disabled";
+
+			tsc {
+				compatible = "ti,am3359-tsc";
+			};
+			am335x_adc: adc {
+				#io-channel-cells = <1>;
+				compatible = "ti,am3359-adc";
+			};
+		};
+
+		gpmc: gpmc at 50000000 {
+			compatible = "ti,am3352-gpmc";
+			ti,hwmods = "gpmc";
+			reg = <0x50000000 0x2000>;
+			interrupts = <100>;
+			gpmc,num-cs = <7>;
+			gpmc,num-waitpins = <2>;
+			#address-cells = <2>;
+			#size-cells = <1>;
+			status = "disabled";
+		};
+	};
+};
diff --git a/arch/arm/dts/dt-bindings/gpio/gpio.h b/arch/arm/dts/dt-bindings/gpio/gpio.h
new file mode 100644
index 0000000..e6b1e0a
--- /dev/null
+++ b/arch/arm/dts/dt-bindings/gpio/gpio.h
@@ -0,0 +1,15 @@
+/*
+ * This header provides constants for most GPIO bindings.
+ *
+ * Most GPIO bindings include a flags cell as part of the GPIO specifier.
+ * In most cases, the format of the flags cell uses the standard values
+ * defined in this header.
+ */
+
+#ifndef _DT_BINDINGS_GPIO_GPIO_H
+#define _DT_BINDINGS_GPIO_GPIO_H
+
+#define GPIO_ACTIVE_HIGH 0
+#define GPIO_ACTIVE_LOW 1
+
+#endif
diff --git a/arch/arm/dts/dt-bindings/pinctrl/am33xx.h b/arch/arm/dts/dt-bindings/pinctrl/am33xx.h
new file mode 100644
index 0000000..2fbc804
--- /dev/null
+++ b/arch/arm/dts/dt-bindings/pinctrl/am33xx.h
@@ -0,0 +1,42 @@
+/*
+ * This header provides constants specific to AM33XX pinctrl bindings.
+ */
+
+#ifndef _DT_BINDINGS_PINCTRL_AM33XX_H
+#define _DT_BINDINGS_PINCTRL_AM33XX_H
+
+#include <dt-bindings/pinctrl/omap.h>
+
+/* am33xx specific mux bit defines */
+#undef PULL_ENA
+#undef INPUT_EN
+
+#define PULL_DISABLE		(1 << 3)
+#define INPUT_EN		(1 << 5)
+#define SLEWCTRL_FAST		(1 << 6)
+
+/* update macro depending on INPUT_EN and PULL_ENA */
+#undef PIN_OUTPUT
+#undef PIN_OUTPUT_PULLUP
+#undef PIN_OUTPUT_PULLDOWN
+#undef PIN_INPUT
+#undef PIN_INPUT_PULLUP
+#undef PIN_INPUT_PULLDOWN
+
+#define PIN_OUTPUT		(PULL_DISABLE)
+#define PIN_OUTPUT_PULLUP	(PULL_UP)
+#define PIN_OUTPUT_PULLDOWN	0
+#define PIN_INPUT		(INPUT_EN | PULL_DISABLE)
+#define PIN_INPUT_PULLUP	(INPUT_EN | PULL_UP)
+#define PIN_INPUT_PULLDOWN	(INPUT_EN)
+
+/* undef non-existing modes */
+#undef PIN_OFF_NONE
+#undef PIN_OFF_OUTPUT_HIGH
+#undef PIN_OFF_OUTPUT_LOW
+#undef PIN_OFF_INPUT_PULLUP
+#undef PIN_OFF_INPUT_PULLDOWN
+#undef PIN_OFF_WAKEUPENABLE
+
+#endif
+
diff --git a/arch/arm/dts/dt-bindings/pinctrl/omap.h b/arch/arm/dts/dt-bindings/pinctrl/omap.h
new file mode 100644
index 0000000..edbd250
--- /dev/null
+++ b/arch/arm/dts/dt-bindings/pinctrl/omap.h
@@ -0,0 +1,55 @@
+/*
+ * This header provides constants for OMAP pinctrl bindings.
+ *
+ * Copyright (C) 2009 Nokia
+ * Copyright (C) 2009-2010 Texas Instruments
+ */
+
+#ifndef _DT_BINDINGS_PINCTRL_OMAP_H
+#define _DT_BINDINGS_PINCTRL_OMAP_H
+
+/* 34xx mux mode options for each pin. See TRM for options */
+#define MUX_MODE0	0
+#define MUX_MODE1	1
+#define MUX_MODE2	2
+#define MUX_MODE3	3
+#define MUX_MODE4	4
+#define MUX_MODE5	5
+#define MUX_MODE6	6
+#define MUX_MODE7	7
+
+/* 24xx/34xx mux bit defines */
+#define PULL_ENA		(1 << 3)
+#define PULL_UP			(1 << 4)
+#define ALTELECTRICALSEL	(1 << 5)
+
+/* 34xx specific mux bit defines */
+#define INPUT_EN		(1 << 8)
+#define OFF_EN			(1 << 9)
+#define OFFOUT_EN		(1 << 10)
+#define OFFOUT_VAL		(1 << 11)
+#define OFF_PULL_EN		(1 << 12)
+#define OFF_PULL_UP		(1 << 13)
+#define WAKEUP_EN		(1 << 14)
+
+/* 44xx specific mux bit defines */
+#define WAKEUP_EVENT		(1 << 15)
+
+/* Active pin states */
+#define PIN_OUTPUT		0
+#define PIN_OUTPUT_PULLUP	(PIN_OUTPUT | PULL_ENA | PULL_UP)
+#define PIN_OUTPUT_PULLDOWN	(PIN_OUTPUT | PULL_ENA)
+#define PIN_INPUT		INPUT_EN
+#define PIN_INPUT_PULLUP	(PULL_ENA | INPUT_EN | PULL_UP)
+#define PIN_INPUT_PULLDOWN	(PULL_ENA | INPUT_EN)
+
+/* Off mode states */
+#define PIN_OFF_NONE		0
+#define PIN_OFF_OUTPUT_HIGH	(OFF_EN | OFFOUT_EN | OFFOUT_VAL)
+#define PIN_OFF_OUTPUT_LOW	(OFF_EN | OFFOUT_EN)
+#define PIN_OFF_INPUT_PULLUP	(OFF_EN | OFF_PULL_EN | OFF_PULL_UP)
+#define PIN_OFF_INPUT_PULLDOWN	(OFF_EN | OFF_PULL_EN)
+#define PIN_OFF_WAKEUPENABLE	WAKEUP_EN
+
+#endif
+
diff --git a/arch/arm/dts/tps65217.dtsi b/arch/arm/dts/tps65217.dtsi
new file mode 100644
index 0000000..a632724
--- /dev/null
+++ b/arch/arm/dts/tps65217.dtsi
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/*
+ * Integrated Power Management Chip
+ * http://www.ti.com/lit/ds/symlink/tps65217.pdf
+ */
+
+&tps {
+	compatible = "ti,tps65217";
+
+	regulators {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		dcdc1_reg: regulator at 0 {
+			reg = <0>;
+			regulator-compatible = "dcdc1";
+		};
+
+		dcdc2_reg: regulator at 1 {
+			reg = <1>;
+			regulator-compatible = "dcdc2";
+		};
+
+		dcdc3_reg: regulator at 2 {
+			reg = <2>;
+			regulator-compatible = "dcdc3";
+		};
+
+		ldo1_reg: regulator at 3 {
+			reg = <3>;
+			regulator-compatible = "ldo1";
+		};
+
+		ldo2_reg: regulator at 4 {
+			reg = <4>;
+			regulator-compatible = "ldo2";
+		};
+
+		ldo3_reg: regulator at 5 {
+			reg = <5>;
+			regulator-compatible = "ldo3";
+		};
+
+		ldo4_reg: regulator at 6 {
+			reg = <6>;
+			regulator-compatible = "ldo4";
+		};
+	};
+};
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index 762f6d2..11e7771 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -18,6 +18,12 @@
 
 #include <configs/ti_am335x_common.h>
 
+#ifndef CONFIG_SPL_BUILD
+# define CONFIG_OF_CONTROL
+# define CONFIG_OF_SEPARATE
+# define CONFIG_DEFAULT_DEVICE_TREE am335x-boneblack
+#endif
+
 #define MACH_TYPE_TIAM335EVM		3589	/* Until the next sync */
 #define CONFIG_MACH_TYPE		MACH_TYPE_TIAM335EVM
 #define CONFIG_BOARD_LATE_INIT
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 13/14] am33xx/omap: Enable FIT support
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
                   ` (11 preceding siblings ...)
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 12/14] am33xx/omap: Enable CONFIG_OF_CONTROL Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-11 22:18   ` [U-Boot] [U-Boot,v3,13/14] " Tom Rini
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 14/14] am33xx/omap: Add a new board to enable verified boot Simon Glass
  2014-06-11 22:18 ` [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Tom Rini
  14 siblings, 1 reply; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

Enable booting a FIT containing a kernel/device tree.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3:
- Also enable LZO and timestamps, plus increase the maximum kernel size

Changes in v2: None

 include/configs/am335x_evm.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index 11e7771..edc5841 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -19,11 +19,16 @@
 #include <configs/ti_am335x_common.h>
 
 #ifndef CONFIG_SPL_BUILD
+# define CONFIG_FIT
+# define CONFIG_TIMESTAMP
+# define CONFIG_LZO
 # define CONFIG_OF_CONTROL
 # define CONFIG_OF_SEPARATE
 # define CONFIG_DEFAULT_DEVICE_TREE am335x-boneblack
 #endif
 
+#define CONFIG_SYS_BOOTM_LEN		(16 << 20)
+
 #define MACH_TYPE_TIAM335EVM		3589	/* Until the next sync */
 #define CONFIG_MACH_TYPE		MACH_TYPE_TIAM335EVM
 #define CONFIG_BOARD_LATE_INIT
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 14/14] am33xx/omap: Add a new board to enable verified boot
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
                   ` (12 preceding siblings ...)
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 13/14] am33xx/omap: Enable FIT support Simon Glass
@ 2014-06-03  4:04 ` Simon Glass
  2014-06-11 22:18   ` [U-Boot] [U-Boot, v3, " Tom Rini
  2014-06-11 22:18 ` [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Tom Rini
  14 siblings, 1 reply; 33+ messages in thread
From: Simon Glass @ 2014-06-03  4:04 UTC (permalink / raw)
  To: u-boot

Enable verified boot functionality for a new am335x_boneblack_vboot target.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v3:
- Use verified boot only on a new board - am335x_boneblack_vboot

Changes in v2: None

 boards.cfg                   | 1 +
 include/configs/am335x_evm.h | 4 ++++
 2 files changed, 5 insertions(+)

diff --git a/boards.cfg b/boards.cfg
index b8cfead..f255ba7 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -269,6 +269,7 @@ Active  arm         armv7          am33xx      siemens         pxm2
 Active  arm         armv7          am33xx      siemens         rut                 rut                                   -                                                                                                                                 Roger Meier <r.meier@siemens.com>
 Active  arm         armv7          am33xx      silica          pengwyn             pengwyn                               -                                                                                                                                 Lothar Felten <lothar.felten@gmail.com>
 Active  arm         armv7          am33xx      ti              am335x              am335x_boneblack                      am335x_evm:SERIAL1,CONS_INDEX=1,EMMC_BOOT                                                                                         Tom Rini <trini@ti.com>
+Active  arm         armv7          am33xx      ti              am335x              am335x_boneblack_vboot                am335x_evm:SERIAL1,CONS_INDEX=1,EMMC_BOOT,ENABLE_VBOOT                                                                            Tom Rini <trini@ti.com>
 Active  arm         armv7          am33xx      ti              am335x              am335x_evm                            am335x_evm:SERIAL1,CONS_INDEX=1,NAND                                                                                              Tom Rini <trini@ti.com>
 Active  arm         armv7          am33xx      ti              am335x              am335x_evm_nor                        am335x_evm:SERIAL1,CONS_INDEX=1,NAND,NOR                                                                                          Tom Rini <trini@ti.com>
 Active  arm         armv7          am33xx      ti              am335x              am335x_evm_norboot                    am335x_evm:SERIAL1,CONS_INDEX=1,NOR,NOR_BOOT                                                                                      Tom Rini <trini@ti.com>
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index edc5841..5ae8c46 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -25,6 +25,10 @@
 # define CONFIG_OF_CONTROL
 # define CONFIG_OF_SEPARATE
 # define CONFIG_DEFAULT_DEVICE_TREE am335x-boneblack
+# ifdef CONFIG_ENABLE_VBOOT
+#  define CONFIG_FIT_SIGNATURE
+#  define CONFIG_RSA
+# endif
 #endif
 
 #define CONFIG_SYS_BOOTM_LEN		(16 << 20)
-- 
1.9.1.423.g4596e3a

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 07/14] fdt: Add DEV_TREE_BIN option to specify a device tree binary file
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 07/14] fdt: Add DEV_TREE_BIN option to specify a device tree binary file Simon Glass
@ 2014-06-10  5:59   ` Masahiro Yamada
  2014-06-11 22:18     ` Tom Rini
  2014-06-11 22:25     ` Simon Glass
  2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
  1 sibling, 2 replies; 33+ messages in thread
From: Masahiro Yamada @ 2014-06-10  5:59 UTC (permalink / raw)
  To: u-boot

Hi Simon,


On Mon,  2 Jun 2014 22:04:50 -0600
Simon Glass <sjg@chromium.org> wrote:

> In some cases, an externally-built device tree binary is required to be
> attached to U-Boot. An example is when using image signing, since in that
> case the .dtb file must include the public keys.

I do not want to expand this argument, but
I am not sure if DTB stands for "device tree binary".

linux/Documentation often refer it as "device tree blob",
while   linux/Documentation/devicetree/booting-without-of.txt
says  "device tree block".


> Add a DEV_TREE_BIN option to the Makefile, and update the documentation.

Is it possible to rename it without mentioning  _BIN or _BLOB ?

For example,  DTB_PATH=...   or  EXT_DTB=...
or some other variable name you like.


> diff --git a/Makefile b/Makefile
> index ece622f..92819bf 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -867,7 +867,7 @@ MKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
>  MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
>  		-R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
>  
> -u-boot.img u-boot.kwb u-boot.pbl: u-boot.bin FORCE
> +u-boot.img u-boot.kwb u-boot.pbl: u-boot$(if $(CONFIG_OF_SEPARATE),-dtb,).bin FORCE
>  	$(call if_changed,mkimage)

The second comma  in   '(if $(CONFIG_OF_SEPARATE),-dtb,)'  is redundant.


This is duplicating the same image as  u-boot-dtb.img

Your way is that "u-boot.img" includes DTB in some time and doesn't in the other.
I am not sure which way is better.
But we don't need two rules to generate the equivalent image.

If you go along with this change, I think it's OK with me.
Please consider removing below in that case:


ifeq ($(CONFIG_SPL_FRAMEWORK),y)
ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img
endif

  and

u-boot-dtb.img: u-boot-dtb.bin FORCE
        $(call if_changed,mkimage)


Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot, v3, 01/14] ti: am335x: Fix the U-Boot binary output
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 01/14] ti: am335x: Fix the U-Boot binary output Simon Glass
@ 2014-06-11 22:17   ` Tom Rini
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:17 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:44PM -0600, Simon Glass wrote:

> This should include the hash so that image_binary_size is really at the
> end of the image, and not some 300 bytes earlier.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/aa5e98d5/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot, v3, 02/14] cm_t335: Fix the U-Boot binary output
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 02/14] cm_t335: " Simon Glass
@ 2014-06-11 22:17   ` Tom Rini
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:17 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:45PM -0600, Simon Glass wrote:

> Correct the binary output so that image_binary_size is really at the
> end of the image.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/00b5af25/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot, v3, 03/14] mx31ads: Fix the U-Boot binary output
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 03/14] mx31ads: " Simon Glass
@ 2014-06-11 22:17   ` Tom Rini
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:17 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:46PM -0600, Simon Glass wrote:

> Correct the binary output so that image_binary_size is really at the
> end of the image.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/7b2311f7/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot, v3, 05/14] am33xx/omap: Allow cache enable for all Sitara/OMAP
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 05/14] am33xx/omap: Allow cache enable for all Sitara/OMAP Simon Glass
@ 2014-06-11 22:17   ` Tom Rini
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:17 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:48PM -0600, Simon Glass wrote:

> Enable the cache for all devices, unless CONFIG_SYS_DCACHE_OFF is defined.
> This speeds up the Beaglebone Black boot considerable.
> 
> (Tested only on Beaglebone Black with SD card boot)
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master (and tested on am43xx evm as well), thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/9292d7d8/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot, v3, 06/14] hash: Export the function to show a hash
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 06/14] hash: Export the function to show a hash Simon Glass
@ 2014-06-11 22:17   ` Tom Rini
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:17 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:49PM -0600, Simon Glass wrote:

> This function is useful for displaying a hash value, so export it.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/d5aa349b/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot, v3, 07/14] fdt: Add DEV_TREE_BIN option to specify a device tree binary file
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 07/14] fdt: Add DEV_TREE_BIN option to specify a device tree binary file Simon Glass
  2014-06-10  5:59   ` Masahiro Yamada
@ 2014-06-11 22:17   ` Tom Rini
  1 sibling, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:17 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:50PM -0600, Simon Glass wrote:

> In some cases, an externally-built device tree binary is required to be
> attached to U-Boot. An example is when using image signing, since in that
> case the .dtb file must include the public keys.
> 
> Add a DEV_TREE_BIN option to the Makefile, and update the documentation.
> 
> Usage is something like:
> 
> 	make DEV_TREE_BIN=boot/am335x-boneblack-pubkey.dtb
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/4afaa341/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot, v3, 08/14] fdt: Update functions which write to an FDT to return -ENOSPC
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 08/14] fdt: Update functions which write to an FDT to return -ENOSPC Simon Glass
@ 2014-06-11 22:17   ` Tom Rini
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:17 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:51PM -0600, Simon Glass wrote:

> When writing values into an FDT it is possible that there will be
> insufficient space. If the caller gets a useful error then it can
> potentially deal with the situation.
> 
> Adjust these functions to return -ENOSPC when the FDT is full.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/a57c8755/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot, v3, 09/14] Improve error handling in fit_common
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 09/14] Improve error handling in fit_common Simon Glass
@ 2014-06-11 22:18   ` Tom Rini
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:18 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:52PM -0600, Simon Glass wrote:

> Make the error handling common, and make sure the file is always closed
> on error. Rename the parameter to be more description and add comments.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/1ebe0791/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot, v3, 10/14] mkimage: Automatically make space in FDT when full
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 10/14] mkimage: Automatically make space in FDT when full Simon Glass
@ 2014-06-11 22:18   ` Tom Rini
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:18 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:53PM -0600, Simon Glass wrote:

> When adding hashes or signatures, the target FDT may be full. Detect this
> and automatically try again after making 1KB of space.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/330f0d7c/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot, v3, 11/14] arm: ti: Increase malloc size to 16MB for armv7 boards
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 11/14] arm: ti: Increase malloc size to 16MB for armv7 boards Simon Glass
@ 2014-06-11 22:18   ` Tom Rini
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:18 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:54PM -0600, Simon Glass wrote:

> The current size of 1MB is not enough use to use DFU. Increase it for
> ARMv7 boards, all of which should have 32MB or more SDRAM.
> 
> With this change it is possible to do 'dfu mmc 0' on a Beaglebone Black.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/753a7cfa/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot, v3, 12/14] am33xx/omap: Enable CONFIG_OF_CONTROL
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 12/14] am33xx/omap: Enable CONFIG_OF_CONTROL Simon Glass
@ 2014-06-11 22:18   ` Tom Rini
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:18 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:55PM -0600, Simon Glass wrote:

> Add support for device tree control and add device tree files for the
> beaglebone black initially.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/f120af7f/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot,v3,13/14] am33xx/omap: Enable FIT support
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 13/14] am33xx/omap: Enable FIT support Simon Glass
@ 2014-06-11 22:18   ` Tom Rini
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:18 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:56PM -0600, Simon Glass wrote:

> Enable booting a FIT containing a kernel/device tree.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/d580fd6c/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [U-Boot, v3, 14/14] am33xx/omap: Add a new board to enable verified boot
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 14/14] am33xx/omap: Add a new board to enable verified boot Simon Glass
@ 2014-06-11 22:18   ` Tom Rini
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:18 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:57PM -0600, Simon Glass wrote:

> Enable verified boot functionality for a new am335x_boneblack_vboot target.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/25085527/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone
  2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
                   ` (13 preceding siblings ...)
  2014-06-03  4:04 ` [U-Boot] [PATCH v3 14/14] am33xx/omap: Add a new board to enable verified boot Simon Glass
@ 2014-06-11 22:18 ` Tom Rini
  14 siblings, 0 replies; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:18 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 02, 2014 at 10:04:43PM -0600, Simon Glass wrote:

> This series fixes a few problems that have come up since the secure boot
> series was merged:
> 
> - A recent commit broken the assumption that u-boot.bin ends at a known
> address (thus making things appended to U-Boot inaccessible from the code).
> This is fixed for Beaglebone and a few other boards. A new test is added to
> the Makefile to ensure that it does not break again. All boards have been
> tested to make sure the problem does not appear elsewhere.
> 
> - A way is needed to provide an externally-build device tree binary for
> U-Boot. This allows signing to happen outside the U-Boot build system.
> 
> - The .img files generated by an OMAP build need to include the FDT if one
> is appended.
> 
> - Adding signatures to an FDT can cause the FDT to run out of space. The
> fix is to regenerate the FDT from scratch with different dtc parameters, so
> pretty painful. Instead, we automatically expand the FDT.
> 
> The last commit enables verified boot on a Beaglebone Black with a special
> configuration. Use 'am335x_boneblack_vboot' for this. This will soon disable
> support for legacy images.
> 
> Changes in v3:
> - Add new patch to ensure the hash section is inside the image for cm_t335
> - Add new patch to ensure the hash section is inside the image for mx31ads
> - Rebase to master and update commit message
> - Fix typo in commit message
> - Add new patch to improve error handling in fit_common
> - Rebase to master
> - Also enable LZO and timestamps, plus increase the maximum kernel size
> - Use verified boot only on a new board - am335x_boneblack_vboot
> 
> Changes in v2:
> - Add new patch to ensure the hash section is inside the image for am335x
> - Add new patch to check u-boot.bin size against symbol table
> - Update to cover all omap devices
> - Adjust for kbuild changes
> - Fix line over 80cols
> - Move device tree files into arch/arm/dts

Note that I applied this directly to master since it's largely TI boards
or generic code, I hope you don't mind Albert.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/800f9765/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 07/14] fdt: Add DEV_TREE_BIN option to specify a device tree binary file
  2014-06-10  5:59   ` Masahiro Yamada
@ 2014-06-11 22:18     ` Tom Rini
  2014-06-12  4:44       ` Simon Glass
  2014-06-11 22:25     ` Simon Glass
  1 sibling, 1 reply; 33+ messages in thread
From: Tom Rini @ 2014-06-11 22:18 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 10, 2014 at 02:59:23PM +0900, Masahiro Yamada wrote:
> Hi Simon,
> 
> 
> On Mon,  2 Jun 2014 22:04:50 -0600
> Simon Glass <sjg@chromium.org> wrote:
> 
> > In some cases, an externally-built device tree binary is required to be
> > attached to U-Boot. An example is when using image signing, since in that
> > case the .dtb file must include the public keys.
> 
> I do not want to expand this argument, but
> I am not sure if DTB stands for "device tree binary".
> 
> linux/Documentation often refer it as "device tree blob",
> while   linux/Documentation/devicetree/booting-without-of.txt
> says  "device tree block".
> 
> 
> > Add a DEV_TREE_BIN option to the Makefile, and update the documentation.
> 
> Is it possible to rename it without mentioning  _BIN or _BLOB ?
> 
> For example,  DTB_PATH=...   or  EXT_DTB=...
> or some other variable name you like.

Yes.

> > diff --git a/Makefile b/Makefile
> > index ece622f..92819bf 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -867,7 +867,7 @@ MKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
> >  MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
> >  		-R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
> >  
> > -u-boot.img u-boot.kwb u-boot.pbl: u-boot.bin FORCE
> > +u-boot.img u-boot.kwb u-boot.pbl: u-boot$(if $(CONFIG_OF_SEPARATE),-dtb,).bin FORCE
> >  	$(call if_changed,mkimage)
> 
> The second comma  in   '(if $(CONFIG_OF_SEPARATE),-dtb,)'  is redundant.
> 
> 
> This is duplicating the same image as  u-boot-dtb.img
> 
> Your way is that "u-boot.img" includes DTB in some time and doesn't in the other.
> I am not sure which way is better.
> But we don't need two rules to generate the equivalent image.
> 
> If you go along with this change, I think it's OK with me.
> Please consider removing below in that case:
> 
> 
> ifeq ($(CONFIG_SPL_FRAMEWORK),y)
> ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img
> endif
> 
>   and
> 
> u-boot-dtb.img: u-boot-dtb.bin FORCE
>         $(call if_changed,mkimage)

... as a follow up (I want to get this in already).  Thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/0ead2a2e/attachment.pgp>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 07/14] fdt: Add DEV_TREE_BIN option to specify a device tree binary file
  2014-06-10  5:59   ` Masahiro Yamada
  2014-06-11 22:18     ` Tom Rini
@ 2014-06-11 22:25     ` Simon Glass
  1 sibling, 0 replies; 33+ messages in thread
From: Simon Glass @ 2014-06-11 22:25 UTC (permalink / raw)
  To: u-boot

Hi Masahiro,

On 9 June 2014 23:59, Masahiro Yamada <yamada.m@jp.panasonic.com> wrote:
> Hi Simon,
>
>
> On Mon,  2 Jun 2014 22:04:50 -0600
> Simon Glass <sjg@chromium.org> wrote:
>
>> In some cases, an externally-built device tree binary is required to be
>> attached to U-Boot. An example is when using image signing, since in that
>> case the .dtb file must include the public keys.
>
> I do not want to expand this argument, but
> I am not sure if DTB stands for "device tree binary".
>
> linux/Documentation often refer it as "device tree blob",
> while   linux/Documentation/devicetree/booting-without-of.txt
> says  "device tree block".
>
>
>> Add a DEV_TREE_BIN option to the Makefile, and update the documentation.
>
> Is it possible to rename it without mentioning  _BIN or _BLOB ?
>
> For example,  DTB_PATH=...   or  EXT_DTB=...
> or some other variable name you like.

I think EXT_DTB is quite a nice name so I've made that change.

>
>
>> diff --git a/Makefile b/Makefile
>> index ece622f..92819bf 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -867,7 +867,7 @@ MKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
>>  MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
>>               -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
>>
>> -u-boot.img u-boot.kwb u-boot.pbl: u-boot.bin FORCE
>> +u-boot.img u-boot.kwb u-boot.pbl: u-boot$(if $(CONFIG_OF_SEPARATE),-dtb,).bin FORCE
>>       $(call if_changed,mkimage)
>
> The second comma  in   '(if $(CONFIG_OF_SEPARATE),-dtb,)'  is redundant.
>

OK
>
> This is duplicating the same image as  u-boot-dtb.img
>
> Your way is that "u-boot.img" includes DTB in some time and doesn't in the other.
> I am not sure which way is better.
> But we don't need two rules to generate the equivalent image.
>
> If you go along with this change, I think it's OK with me.
> Please consider removing below in that case:
>
>
> ifeq ($(CONFIG_SPL_FRAMEWORK),y)
> ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img
> endif
>
>   and
>
> u-boot-dtb.img: u-boot-dtb.bin FORCE
>         $(call if_changed,mkimage)

I took a look this morning but I'm still not quite sure about this. I
will spend some more time to understand it fully.

Regards,
Simon

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v3 07/14] fdt: Add DEV_TREE_BIN option to specify a device tree binary file
  2014-06-11 22:18     ` Tom Rini
@ 2014-06-12  4:44       ` Simon Glass
  0 siblings, 0 replies; 33+ messages in thread
From: Simon Glass @ 2014-06-12  4:44 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On 11 June 2014 18:18, Tom Rini <trini@ti.com> wrote:
[snip]

> ... as a follow up (I want to get this in already).  Thanks!

I'll send a new patch to update this when I finish testing the rebase
you asked for.

Regards,
Simon

^ permalink raw reply	[flat|nested] 33+ messages in thread

end of thread, other threads:[~2014-06-12  4:44 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-03  4:04 [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Simon Glass
2014-06-03  4:04 ` [U-Boot] [PATCH v3 01/14] ti: am335x: Fix the U-Boot binary output Simon Glass
2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
2014-06-03  4:04 ` [U-Boot] [PATCH v3 02/14] cm_t335: " Simon Glass
2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
2014-06-03  4:04 ` [U-Boot] [PATCH v3 03/14] mx31ads: " Simon Glass
2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
2014-06-03  4:04 ` [U-Boot] [PATCH v3 04/14] Check that u-boot.bin size looks correct Simon Glass
2014-06-03  4:04 ` [U-Boot] [PATCH v3 05/14] am33xx/omap: Allow cache enable for all Sitara/OMAP Simon Glass
2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
2014-06-03  4:04 ` [U-Boot] [PATCH v3 06/14] hash: Export the function to show a hash Simon Glass
2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
2014-06-03  4:04 ` [U-Boot] [PATCH v3 07/14] fdt: Add DEV_TREE_BIN option to specify a device tree binary file Simon Glass
2014-06-10  5:59   ` Masahiro Yamada
2014-06-11 22:18     ` Tom Rini
2014-06-12  4:44       ` Simon Glass
2014-06-11 22:25     ` Simon Glass
2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
2014-06-03  4:04 ` [U-Boot] [PATCH v3 08/14] fdt: Update functions which write to an FDT to return -ENOSPC Simon Glass
2014-06-11 22:17   ` [U-Boot] [U-Boot, v3, " Tom Rini
2014-06-03  4:04 ` [U-Boot] [PATCH v3 09/14] Improve error handling in fit_common Simon Glass
2014-06-11 22:18   ` [U-Boot] [U-Boot, v3, " Tom Rini
2014-06-03  4:04 ` [U-Boot] [PATCH v3 10/14] mkimage: Automatically make space in FDT when full Simon Glass
2014-06-11 22:18   ` [U-Boot] [U-Boot, v3, " Tom Rini
2014-06-03  4:04 ` [U-Boot] [PATCH v3 11/14] arm: ti: Increase malloc size to 16MB for armv7 boards Simon Glass
2014-06-11 22:18   ` [U-Boot] [U-Boot, v3, " Tom Rini
2014-06-03  4:04 ` [U-Boot] [PATCH v3 12/14] am33xx/omap: Enable CONFIG_OF_CONTROL Simon Glass
2014-06-11 22:18   ` [U-Boot] [U-Boot, v3, " Tom Rini
2014-06-03  4:04 ` [U-Boot] [PATCH v3 13/14] am33xx/omap: Enable FIT support Simon Glass
2014-06-11 22:18   ` [U-Boot] [U-Boot,v3,13/14] " Tom Rini
2014-06-03  4:04 ` [U-Boot] [PATCH v3 14/14] am33xx/omap: Add a new board to enable verified boot Simon Glass
2014-06-11 22:18   ` [U-Boot] [U-Boot, v3, " Tom Rini
2014-06-11 22:18 ` [U-Boot] [PATCH v3 0/14] Minor improvements to secure boot and enable on beaglebone Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.