diff mbox series

tools/imximage: share DCD information via Kconfig

Message ID 20191211094236.16778-1-jorge@foundries.io
State Awaiting Upstream
Delegated to: Stefano Babic
Headers show
Series tools/imximage: share DCD information via Kconfig | expand

Commit Message

Jorge Ramirez-Ortiz Dec. 11, 2019, 9:42 a.m. UTC
IMX based platforms can have the DCD table located on different
addresses due to differences in their memory maps (ie iMX7ULP).

This information is required by the user to sign the images for secure
boot so continue making it accessible via mkimage.

Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io>
---
 arch/arm/mach-imx/Kconfig | 11 +++++++++++
 tools/imximage.c          |  5 +++--
 2 files changed, 14 insertions(+), 2 deletions(-)

Comments

Fabio Estevam Dec. 11, 2019, 11:34 a.m. UTC | #1
On Wed, Dec 11, 2019 at 6:42 AM Jorge Ramirez-Ortiz <jorge@foundries.io> wrote:
>
> IMX based platforms can have the DCD table located on different
> addresses due to differences in their memory maps (ie iMX7ULP).
>
> This information is required by the user to sign the images for secure
> boot so continue making it accessible via mkimage.
>
> Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io>

Reviewed-by: Fabio Estevam <festevam@gmail.com>

Stefano,

This is a bug fix for 2020.01.

Thanks
Stefano Babic Dec. 27, 2019, 11:40 a.m. UTC | #2
Hi Jorge, Fabio,

On 11/12/19 12:34, Fabio Estevam wrote:
> On Wed, Dec 11, 2019 at 6:42 AM Jorge Ramirez-Ortiz <jorge@foundries.io> wrote:
>>
>> IMX based platforms can have the DCD table located on different
>> addresses due to differences in their memory maps (ie iMX7ULP).
>>
>> This information is required by the user to sign the images for secure
>> boot so continue making it accessible via mkimage.
>>
>> Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io>
> 
> Reviewed-by: Fabio Estevam <festevam@gmail.com>
> 
> Stefano,
> 
> This is a bug fix for 2020.01.
> 

It is, but CONFIG_IMX_DCD_ADDR is then undefined for all architectures
outside i.MX (because the config does not run), while imximage.c is
always built. Then outside i.MX leads to broken build. I would at least
add in imximage a check if it is not set and set it to the default
value, like:

 #if !defined(CONFIG_IMX_DCD_ADDR)
 #define CONFIG_IMX_DCD_ADDR 0x00910000
 #endif

Regards,
Stefano
Stefano Babic Dec. 28, 2019, 10:49 a.m. UTC | #3
> IMX based platforms can have the DCD table located on different
> addresses due to differences in their memory maps (ie iMX7ULP).
> This information is required by the user to sign the images for secure
> boot so continue making it accessible via mkimage.
> Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io>
> Reviewed-by: Fabio Estevam <festevam@gmail.com>
Applied to u-boot-imx, master, thanks !

Best regards,
Stefano Babic
diff mbox series

Patch

diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index fee6d56c4d..4ce2799b72 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -113,3 +113,14 @@  config DDRMC_VF610_CALIBRATION
 config SPL_IMX_ROMAPI_LOADADDR
 	hex "Default load address to load image through ROM API"
 	depends on IMX8MN
+
+config IMX_DCD_ADDR
+	hex "DCD Blocks location on the image"
+	default 0x00910000 if !ARCH_MX7ULP
+	default 0x2f010000 if ARCH_MX7ULP
+	help
+	  Indicates where the Device Configuration Data, a binary table used by
+	  the ROM code to configure the device at early boot stage, is located.
+	  This information is shared with the user via mkimage -l just so the
+	  image can be signed.
+
diff --git a/tools/imximage.c b/tools/imximage.c
index d7c0b6e883..392c239812 100644
--- a/tools/imximage.c
+++ b/tools/imximage.c
@@ -11,6 +11,7 @@ 
 #include "imagetool.h"
 #include <image.h>
 #include "imximage.h"
+#include <generated/autoconf.h>
 
 #define UNDEFINED 0xFFFFFFFF
 
@@ -524,8 +525,8 @@  static void print_hdr_v2(struct imx_header *imx_hdr)
 			printf("HAB Blocks:   0x%08x 0x%08x 0x%08x\n",
 			       (uint32_t)fhdr_v2->self, 0,
 			       (uint32_t)(fhdr_v2->csf - fhdr_v2->self));
-			printf("DCD Blocks:   0x00910000 0x%08x 0x%08x\n",
-			       offs, be16_to_cpu(dcdlen));
+			printf("DCD Blocks:   0x%08x 0x%08x 0x%08x\n",
+			       offs, CONFIG_IMX_DCD_ADDR, be16_to_cpu(dcdlen));
 		}
 	} else {
 		imx_header_v2_t *next_hdr_v2;