diff mbox series

[v8,05/13] stm32mp1: dk2: Add image information for capsule updates

Message ID 20220817124323.375968-6-sughosh.ganu@linaro.org
State Superseded
Headers show
Series FWU: Add FWU Multi Bank Update feature support | expand

Commit Message

Sughosh Ganu Aug. 17, 2022, 12:43 p.m. UTC
Enabling capsule update functionality on the platform requires
populating information on the images that are to be updated using the
functionality. Do so for the DK2 board.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
---
Changes since V7: None

 board/st/stm32mp1/stm32mp1.c       | 23 +++++++++++++++++++++++
 include/configs/stm32mp15_common.h |  4 ++++
 2 files changed, 27 insertions(+)

Comments

Yann Gautier Aug. 18, 2022, 8:05 a.m. UTC | #1
On 8/17/22 14:43, Sughosh Ganu wrote:
> Enabling capsule update functionality on the platform requires
> populating information on the images that are to be updated using the
> functionality. Do so for the DK2 board.
> 
> Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
> Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> ---
> Changes since V7: None
> 
>   board/st/stm32mp1/stm32mp1.c       | 23 +++++++++++++++++++++++
>   include/configs/stm32mp15_common.h |  4 ++++
>   2 files changed, 27 insertions(+)
> 
> diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c
> index 9496890d16..0fda8f150d 100644
> --- a/board/st/stm32mp1/stm32mp1.c
> +++ b/board/st/stm32mp1/stm32mp1.c
> @@ -11,6 +11,7 @@
>   #include <clk.h>
>   #include <config.h>
>   #include <dm.h>
> +#include <efi_loader.h>
>   #include <env.h>
>   #include <env_internal.h>
>   #include <fdt_simplefb.h>
> @@ -87,6 +88,16 @@
>   #define USB_START_LOW_THRESHOLD_UV	1230000
>   #define USB_START_HIGH_THRESHOLD_UV	2150000
>   
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +struct efi_fw_image fw_images[1];
> +
> +struct efi_capsule_update_info update_info = {
> +	.images = fw_images,
> +};
> +
> +u8 num_image_type_guids = ARRAY_SIZE(fw_images);
> +#endif /* EFI_HAVE_CAPSULE_SUPPORT */
> +
>   int board_early_init_f(void)
>   {
>   	/* nothing to do, only used in SPL */
> @@ -670,6 +681,18 @@ int board_init(void)
>   
>   	setup_led(LEDST_ON);
>   
> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> +	if (board_is_stm32mp15x_dk2()) {
> +		efi_guid_t image_type_guid = STM32MP15_DK2_FIP_IMAGE_GUID;
> +		guidcpy(&fw_images[0].image_type_id, &image_type_guid);
> +		fw_images[0].fw_name = u"STM32MP15-DK2-FIP";
> +		/*
> +		 * For FWU multi bank update, the image
> +		 * index will be computed at runtime
> +		 */
> +		fw_images[0].image_index = 0;
> +	}
> +#endif
>   	return 0;
>   }
>   
> diff --git a/include/configs/stm32mp15_common.h b/include/configs/stm32mp15_common.h
> index c5412ffeb3..6ab10d8ce5 100644
> --- a/include/configs/stm32mp15_common.h
> +++ b/include/configs/stm32mp15_common.h
> @@ -34,6 +34,10 @@
>   #define CONFIG_SERVERIP                 192.168.1.1
>   #endif
>   

Hi Sugosh,

Sorry for the late review.

> +#define STM32MP15_DK2_FIP_IMAGE_GUID \
Although this is now only supported on this STM32MP15_DK2 board, I don't 
think this macro should be tight to the board name, as it may be used 
for other STM32MP boards. I'd just use STM32MP_FIP_IMAGE_GUID.
This should be the same for the fw_images[0].fw_name.


Best regards,
Yann

> +	EFI_GUID(0x19d5df83, 0x11b0, 0x457b, 0xbe, 0x2c, \
> +		 0x75, 0x59, 0xc1, 0x31, 0x42, 0xa5)
> +
>   /*****************************************************************************/
>   #ifdef CONFIG_DISTRO_DEFAULTS
>   /*****************************************************************************/
Sughosh Ganu Aug. 18, 2022, 12:06 p.m. UTC | #2
hi Yann,

On Thu, 18 Aug 2022 at 13:35, Yann Gautier <yann.gautier@foss.st.com> wrote:
>
> On 8/17/22 14:43, Sughosh Ganu wrote:
> > Enabling capsule update functionality on the platform requires
> > populating information on the images that are to be updated using the
> > functionality. Do so for the DK2 board.
> >
> > Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
> > Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
> > Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> > ---
> > Changes since V7: None
> >
> >   board/st/stm32mp1/stm32mp1.c       | 23 +++++++++++++++++++++++
> >   include/configs/stm32mp15_common.h |  4 ++++
> >   2 files changed, 27 insertions(+)
> >
> > diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c
> > index 9496890d16..0fda8f150d 100644
> > --- a/board/st/stm32mp1/stm32mp1.c
> > +++ b/board/st/stm32mp1/stm32mp1.c
> > @@ -11,6 +11,7 @@
> >   #include <clk.h>
> >   #include <config.h>
> >   #include <dm.h>
> > +#include <efi_loader.h>
> >   #include <env.h>
> >   #include <env_internal.h>
> >   #include <fdt_simplefb.h>
> > @@ -87,6 +88,16 @@
> >   #define USB_START_LOW_THRESHOLD_UV  1230000
> >   #define USB_START_HIGH_THRESHOLD_UV 2150000
> >
> > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> > +struct efi_fw_image fw_images[1];
> > +
> > +struct efi_capsule_update_info update_info = {
> > +     .images = fw_images,
> > +};
> > +
> > +u8 num_image_type_guids = ARRAY_SIZE(fw_images);
> > +#endif /* EFI_HAVE_CAPSULE_SUPPORT */
> > +
> >   int board_early_init_f(void)
> >   {
> >       /* nothing to do, only used in SPL */
> > @@ -670,6 +681,18 @@ int board_init(void)
> >
> >       setup_led(LEDST_ON);
> >
> > +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
> > +     if (board_is_stm32mp15x_dk2()) {
> > +             efi_guid_t image_type_guid = STM32MP15_DK2_FIP_IMAGE_GUID;
> > +             guidcpy(&fw_images[0].image_type_id, &image_type_guid);
> > +             fw_images[0].fw_name = u"STM32MP15-DK2-FIP";
> > +             /*
> > +              * For FWU multi bank update, the image
> > +              * index will be computed at runtime
> > +              */
> > +             fw_images[0].image_index = 0;
> > +     }
> > +#endif
> >       return 0;
> >   }
> >
> > diff --git a/include/configs/stm32mp15_common.h b/include/configs/stm32mp15_common.h
> > index c5412ffeb3..6ab10d8ce5 100644
> > --- a/include/configs/stm32mp15_common.h
> > +++ b/include/configs/stm32mp15_common.h
> > @@ -34,6 +34,10 @@
> >   #define CONFIG_SERVERIP                 192.168.1.1
> >   #endif
> >
>
> Hi Sugosh,
>
> Sorry for the late review.
>
> > +#define STM32MP15_DK2_FIP_IMAGE_GUID \
> Although this is now only supported on this STM32MP15_DK2 board, I don't
> think this macro should be tight to the board name, as it may be used
> for other STM32MP boards. I'd just use STM32MP_FIP_IMAGE_GUID.
> This should be the same for the fw_images[0].fw_name.

The idea of this GUID is to identify or associate an image with a
platform. Will the FIP image be common across multiple STM32MP
platforms? If we use a common GUID that might be shared across
multiple ST boards, it would be possible to flash an image generated
for the ev1 board on the dk2 board. However, you would know better
about ST platforms. So I can change this as per your suggestion.
Thanks.

-sughosh

>
>
> Best regards,
> Yann
>
> > +     EFI_GUID(0x19d5df83, 0x11b0, 0x457b, 0xbe, 0x2c, \
> > +              0x75, 0x59, 0xc1, 0x31, 0x42, 0xa5)
> > +
> >   /*****************************************************************************/
> >   #ifdef CONFIG_DISTRO_DEFAULTS
> >   /*****************************************************************************/
>
Yann Gautier Aug. 18, 2022, 4:36 p.m. UTC | #3
On 8/18/22 14:06, Sughosh Ganu wrote:
> hi Yann,
> 
> On Thu, 18 Aug 2022 at 13:35, Yann Gautier <yann.gautier@foss.st.com> wrote:
>>
>> On 8/17/22 14:43, Sughosh Ganu wrote:
>>> Enabling capsule update functionality on the platform requires
>>> populating information on the images that are to be updated using the
>>> functionality. Do so for the DK2 board.
>>>
>>> Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
>>> Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
>>> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
>>> ---
>>> Changes since V7: None
>>>
>>>    board/st/stm32mp1/stm32mp1.c       | 23 +++++++++++++++++++++++
>>>    include/configs/stm32mp15_common.h |  4 ++++
>>>    2 files changed, 27 insertions(+)
>>>
>>> diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c
>>> index 9496890d16..0fda8f150d 100644
>>> --- a/board/st/stm32mp1/stm32mp1.c
>>> +++ b/board/st/stm32mp1/stm32mp1.c
>>> @@ -11,6 +11,7 @@
>>>    #include <clk.h>
>>>    #include <config.h>
>>>    #include <dm.h>
>>> +#include <efi_loader.h>
>>>    #include <env.h>
>>>    #include <env_internal.h>
>>>    #include <fdt_simplefb.h>
>>> @@ -87,6 +88,16 @@
>>>    #define USB_START_LOW_THRESHOLD_UV  1230000
>>>    #define USB_START_HIGH_THRESHOLD_UV 2150000
>>>
>>> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
>>> +struct efi_fw_image fw_images[1];
>>> +
>>> +struct efi_capsule_update_info update_info = {
>>> +     .images = fw_images,
>>> +};
>>> +
>>> +u8 num_image_type_guids = ARRAY_SIZE(fw_images);
>>> +#endif /* EFI_HAVE_CAPSULE_SUPPORT */
>>> +
>>>    int board_early_init_f(void)
>>>    {
>>>        /* nothing to do, only used in SPL */
>>> @@ -670,6 +681,18 @@ int board_init(void)
>>>
>>>        setup_led(LEDST_ON);
>>>
>>> +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
>>> +     if (board_is_stm32mp15x_dk2()) {
>>> +             efi_guid_t image_type_guid = STM32MP15_DK2_FIP_IMAGE_GUID;
>>> +             guidcpy(&fw_images[0].image_type_id, &image_type_guid);
>>> +             fw_images[0].fw_name = u"STM32MP15-DK2-FIP";
>>> +             /*
>>> +              * For FWU multi bank update, the image
>>> +              * index will be computed at runtime
>>> +              */
>>> +             fw_images[0].image_index = 0;
>>> +     }
>>> +#endif
>>>        return 0;
>>>    }
>>>
>>> diff --git a/include/configs/stm32mp15_common.h b/include/configs/stm32mp15_common.h
>>> index c5412ffeb3..6ab10d8ce5 100644
>>> --- a/include/configs/stm32mp15_common.h
>>> +++ b/include/configs/stm32mp15_common.h
>>> @@ -34,6 +34,10 @@
>>>    #define CONFIG_SERVERIP                 192.168.1.1
>>>    #endif
>>>
>>
>> Hi Sugosh,
>>
>> Sorry for the late review.
>>
>>> +#define STM32MP15_DK2_FIP_IMAGE_GUID \
>> Although this is now only supported on this STM32MP15_DK2 board, I don't
>> think this macro should be tight to the board name, as it may be used
>> for other STM32MP boards. I'd just use STM32MP_FIP_IMAGE_GUID.
>> This should be the same for the fw_images[0].fw_name.
> 
> The idea of this GUID is to identify or associate an image with a
> platform. Will the FIP image be common across multiple STM32MP
> platforms? If we use a common GUID that might be shared across
> multiple ST boards, it would be possible to flash an image generated
> for the ev1 board on the dk2 board. However, you would know better
> about ST platforms. So I can change this as per your suggestion.
> Thanks.
> 
> -sughosh
> 

Hi Sughosh,

This GUID is generic in TF-A for all STM32MP platforms.
Having a per board GUID in U-Boot might then be an issue.
And we'll end up with lots of GUIDs for each new board that will support 
FWU.
But maybe I miss something here.


Yann

>>
>>
>> Best regards,
>> Yann
>>
>>> +     EFI_GUID(0x19d5df83, 0x11b0, 0x457b, 0xbe, 0x2c, \
>>> +              0x75, 0x59, 0xc1, 0x31, 0x42, 0xa5)
>>> +
>>>    /*****************************************************************************/
>>>    #ifdef CONFIG_DISTRO_DEFAULTS
>>>    /*****************************************************************************/
>>
diff mbox series

Patch

diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c
index 9496890d16..0fda8f150d 100644
--- a/board/st/stm32mp1/stm32mp1.c
+++ b/board/st/stm32mp1/stm32mp1.c
@@ -11,6 +11,7 @@ 
 #include <clk.h>
 #include <config.h>
 #include <dm.h>
+#include <efi_loader.h>
 #include <env.h>
 #include <env_internal.h>
 #include <fdt_simplefb.h>
@@ -87,6 +88,16 @@ 
 #define USB_START_LOW_THRESHOLD_UV	1230000
 #define USB_START_HIGH_THRESHOLD_UV	2150000
 
+#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
+struct efi_fw_image fw_images[1];
+
+struct efi_capsule_update_info update_info = {
+	.images = fw_images,
+};
+
+u8 num_image_type_guids = ARRAY_SIZE(fw_images);
+#endif /* EFI_HAVE_CAPSULE_SUPPORT */
+
 int board_early_init_f(void)
 {
 	/* nothing to do, only used in SPL */
@@ -670,6 +681,18 @@  int board_init(void)
 
 	setup_led(LEDST_ON);
 
+#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
+	if (board_is_stm32mp15x_dk2()) {
+		efi_guid_t image_type_guid = STM32MP15_DK2_FIP_IMAGE_GUID;
+		guidcpy(&fw_images[0].image_type_id, &image_type_guid);
+		fw_images[0].fw_name = u"STM32MP15-DK2-FIP";
+		/*
+		 * For FWU multi bank update, the image
+		 * index will be computed at runtime
+		 */
+		fw_images[0].image_index = 0;
+	}
+#endif
 	return 0;
 }
 
diff --git a/include/configs/stm32mp15_common.h b/include/configs/stm32mp15_common.h
index c5412ffeb3..6ab10d8ce5 100644
--- a/include/configs/stm32mp15_common.h
+++ b/include/configs/stm32mp15_common.h
@@ -34,6 +34,10 @@ 
 #define CONFIG_SERVERIP                 192.168.1.1
 #endif
 
+#define STM32MP15_DK2_FIP_IMAGE_GUID \
+	EFI_GUID(0x19d5df83, 0x11b0, 0x457b, 0xbe, 0x2c, \
+		 0x75, 0x59, 0xc1, 0x31, 0x42, 0xa5)
+
 /*****************************************************************************/
 #ifdef CONFIG_DISTRO_DEFAULTS
 /*****************************************************************************/