Patchwork [U-Boot,2/2] exynos5: arndale: Add network support

login
register
mail settings
Submitter Chander Kashyap
Date Oct. 19, 2013, 6:49 a.m.
Message ID <1382165367-6618-3-git-send-email-inderpal.singh@linaro.org>
Download mbox | patch
Permalink /patch/284839/
State Superseded
Delegated to: Marek Vasut
Headers show

Comments

Chander Kashyap - Oct. 19, 2013, 6:49 a.m.
From: Chander Kashyap <chander.kashyap@linaro.org>

Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet Combo
controller, connected to HSIC Phy of USB host controller via USB3503 hub.

This patch implements a board specific board_usb_init function in ehci driver
to perform reset sequence for USB3503 hub and enables the relevant config
options for network to work.

Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
---
 board/samsung/arndale/arndale.c |   23 +++++++++++++++++++++++
 drivers/usb/host/ehci-exynos.c  |    9 +++++++++
 include/configs/arndale.h       |    6 ++++++
 3 files changed, 38 insertions(+)
Marek Vasut - Dec. 12, 2013, 10:03 a.m.
On Saturday, October 19, 2013 at 08:49:27 AM, Inderpal Singh wrote:
> From: Chander Kashyap <chander.kashyap@linaro.org>
> 
> Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet Combo
> controller, connected to HSIC Phy of USB host controller via USB3503 hub.
> 
> This patch implements a board specific board_usb_init function in ehci
> driver to perform reset sequence for USB3503 hub and enables the relevant
> config options for network to work.
> 
> Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
> ---
>  board/samsung/arndale/arndale.c |   23 +++++++++++++++++++++++
>  drivers/usb/host/ehci-exynos.c  |    9 +++++++++
>  include/configs/arndale.h       |    6 ++++++
>  3 files changed, 38 insertions(+)
> 
> diff --git a/board/samsung/arndale/arndale.c
> b/board/samsung/arndale/arndale.c index 052fecd..44f20b9 100644
> --- a/board/samsung/arndale/arndale.c
> +++ b/board/samsung/arndale/arndale.c
> @@ -7,10 +7,23 @@
>  #include <common.h>
>  #include <asm/arch/pinmux.h>
>  #include <asm/arch/dwmmc.h>
> +#include <asm/arch/gpio.h>
>  #include <asm/arch/power.h>
> 
>  DECLARE_GLOBAL_DATA_PTR;
> 
> +#ifdef CONFIG_USB_EHCI_EXYNOS
> +void board_usb_init(int value)
> +{
> +	struct exynos5_gpio_part1 *gpio = (struct exynos5_gpio_part1 *)
> +						samsung_get_base_gpio_part1();
> +
> +	/* Configure gpios for usb 3503 hub's reset and connect */
> +	s5p_gpio_direction_output(&gpio->x3, 5, value);
> +	s5p_gpio_direction_output(&gpio->d1, 7, value);
> +}
> +#endif
> +
>  int board_init(void)
>  {
>  	gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
> @@ -91,6 +104,16 @@ int board_early_init_f(void)
>  }
>  #endif
> 
> +#ifdef CONFIG_BOARD_LATE_INIT
> +int board_late_init(void)
> +{
> +#ifdef CONFIG_PREBOOT
> +	setenv("preboot", CONFIG_PREBOOT);
> +	setenv("usbethaddr", "00:40:5c:26:0a:5b");

Why do you need these 'setenv' calls ? This logic seems completely broken. The 
'preboot' env variable is set already by defining the CONFIG_PREBOOT and the 
usbethaddr shall be set by user.
[...]
Inderpal Singh - Dec. 14, 2013, 2 p.m.
Hi Marek,

Thanks for the review.


On 12 December 2013 19:03, Marek Vasut <marex@denx.de> wrote:

> On Saturday, October 19, 2013 at 08:49:27 AM, Inderpal Singh wrote:
> > From: Chander Kashyap <chander.kashyap@linaro.org>
> >
> > Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet Combo
> > controller, connected to HSIC Phy of USB host controller via USB3503 hub.
> >
> > This patch implements a board specific board_usb_init function in ehci
> > driver to perform reset sequence for USB3503 hub and enables the relevant
> > config options for network to work.
> >
> > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> > Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
> > ---
> >  board/samsung/arndale/arndale.c |   23 +++++++++++++++++++++++
> >  drivers/usb/host/ehci-exynos.c  |    9 +++++++++
> >  include/configs/arndale.h       |    6 ++++++
> >  3 files changed, 38 insertions(+)
> >
> > diff --git a/board/samsung/arndale/arndale.c
> > b/board/samsung/arndale/arndale.c index 052fecd..44f20b9 100644
> > --- a/board/samsung/arndale/arndale.c
> > +++ b/board/samsung/arndale/arndale.c
> > @@ -7,10 +7,23 @@
> >  #include <common.h>
> >  #include <asm/arch/pinmux.h>
> >  #include <asm/arch/dwmmc.h>
> > +#include <asm/arch/gpio.h>
> >  #include <asm/arch/power.h>
> >
> >  DECLARE_GLOBAL_DATA_PTR;
> >
> > +#ifdef CONFIG_USB_EHCI_EXYNOS
> > +void board_usb_init(int value)
> > +{
> > +     struct exynos5_gpio_part1 *gpio = (struct exynos5_gpio_part1 *)
> > +
> samsung_get_base_gpio_part1();
> > +
> > +     /* Configure gpios for usb 3503 hub's reset and connect */
> > +     s5p_gpio_direction_output(&gpio->x3, 5, value);
> > +     s5p_gpio_direction_output(&gpio->d1, 7, value);
> > +}
> > +#endif
> > +
> >  int board_init(void)
> >  {
> >       gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
> > @@ -91,6 +104,16 @@ int board_early_init_f(void)
> >  }
> >  #endif
> >
> > +#ifdef CONFIG_BOARD_LATE_INIT
> > +int board_late_init(void)
> > +{
> > +#ifdef CONFIG_PREBOOT
> > +     setenv("preboot", CONFIG_PREBOOT);
> > +     setenv("usbethaddr", "00:40:5c:26:0a:5b");
>
> Why do you need these 'setenv' calls ? This logic seems completely broken.
> The
> 'preboot' env variable is set already by defining the CONFIG_PREBOOT and
> the
> usbethaddr shall be set by user.
>

Since arndale is a development board so this was done so that user
(developer) does not has to set usbethaddr on every boot. If its redundant
then I will remove this in the next version of the patchset.

Thanks,
Inder



> [...]
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
Marek Vasut - Dec. 14, 2013, 2:20 p.m.
On Saturday, December 14, 2013 at 03:00:39 PM, Inderpal Singh wrote:
> Hi Marek,
> 
> Thanks for the review.
> 
> On 12 December 2013 19:03, Marek Vasut <marex@denx.de> wrote:
> > On Saturday, October 19, 2013 at 08:49:27 AM, Inderpal Singh wrote:
> > > From: Chander Kashyap <chander.kashyap@linaro.org>
> > > 
> > > Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet
> > > Combo controller, connected to HSIC Phy of USB host controller via
> > > USB3503 hub.
> > > 
> > > This patch implements a board specific board_usb_init function in ehci
> > > driver to perform reset sequence for USB3503 hub and enables the
> > > relevant config options for network to work.
> > > 
> > > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> > > Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
> > > ---
> > > 
> > >  board/samsung/arndale/arndale.c |   23 +++++++++++++++++++++++
> > >  drivers/usb/host/ehci-exynos.c  |    9 +++++++++
> > >  include/configs/arndale.h       |    6 ++++++
> > >  3 files changed, 38 insertions(+)
> > > 
> > > diff --git a/board/samsung/arndale/arndale.c
> > > b/board/samsung/arndale/arndale.c index 052fecd..44f20b9 100644
> > > --- a/board/samsung/arndale/arndale.c
> > > +++ b/board/samsung/arndale/arndale.c
> > > @@ -7,10 +7,23 @@
> > > 
> > >  #include <common.h>
> > >  #include <asm/arch/pinmux.h>
> > >  #include <asm/arch/dwmmc.h>
> > > 
> > > +#include <asm/arch/gpio.h>
> > > 
> > >  #include <asm/arch/power.h>
> > >  
> > >  DECLARE_GLOBAL_DATA_PTR;
> > > 
> > > +#ifdef CONFIG_USB_EHCI_EXYNOS
> > > +void board_usb_init(int value)
> > > +{
> > > +     struct exynos5_gpio_part1 *gpio = (struct exynos5_gpio_part1 *)
> > > +
> > 
> > samsung_get_base_gpio_part1();
> > 
> > > +
> > > +     /* Configure gpios for usb 3503 hub's reset and connect */
> > > +     s5p_gpio_direction_output(&gpio->x3, 5, value);
> > > +     s5p_gpio_direction_output(&gpio->d1, 7, value);
> > > +}
> > > +#endif
> > > +
> > > 
> > >  int board_init(void)
> > >  {
> > >  
> > >       gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
> > > 
> > > @@ -91,6 +104,16 @@ int board_early_init_f(void)
> > > 
> > >  }
> > >  #endif
> > > 
> > > +#ifdef CONFIG_BOARD_LATE_INIT
> > > +int board_late_init(void)
> > > +{
> > > +#ifdef CONFIG_PREBOOT
> > > +     setenv("preboot", CONFIG_PREBOOT);
> > > +     setenv("usbethaddr", "00:40:5c:26:0a:5b");
> > 
> > Why do you need these 'setenv' calls ? This logic seems completely
> > broken. The
> > 'preboot' env variable is set already by defining the CONFIG_PREBOOT and
> > the
> > usbethaddr shall be set by user.
> 
> Since arndale is a development board so this was done so that user
> (developer) does not has to set usbethaddr on every boot. If its redundant
> then I will remove this in the next version of the patchset.

Can the user/developer/ ... just run:

=> setenv usbethaddr 00:11:22:33:44:fg
=> saveenv

on the U-Boot command line?

setenv("preboot", CONFIG_PREBOOT); is broken, the user might want to override 
this variable, yet you don't allow him to as you always reset it back to default 
value. If the board not loaded with a valid environment, a default env will be 
used and if CONFIG_PREBOOT is defined in your include/configs/<board>.h , then 
the 'preboot' variable will also be set to the default value so no need to set 
it like so explicitly. You can reset a variable using "env default -f preboot'.
Inderpal Singh - Dec. 14, 2013, 2:28 p.m.
On 14 December 2013 23:20, Marek Vasut <marex@denx.de> wrote:

> On Saturday, December 14, 2013 at 03:00:39 PM, Inderpal Singh wrote:
> > Hi Marek,
> >
> > Thanks for the review.
> >
> > On 12 December 2013 19:03, Marek Vasut <marex@denx.de> wrote:
> > > On Saturday, October 19, 2013 at 08:49:27 AM, Inderpal Singh wrote:
> > > > From: Chander Kashyap <chander.kashyap@linaro.org>
> > > >
> > > > Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet
> > > > Combo controller, connected to HSIC Phy of USB host controller via
> > > > USB3503 hub.
> > > >
> > > > This patch implements a board specific board_usb_init function in
> ehci
> > > > driver to perform reset sequence for USB3503 hub and enables the
> > > > relevant config options for network to work.
> > > >
> > > > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> > > > Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
> > > > ---
> > > >
> > > >  board/samsung/arndale/arndale.c |   23 +++++++++++++++++++++++
> > > >  drivers/usb/host/ehci-exynos.c  |    9 +++++++++
> > > >  include/configs/arndale.h       |    6 ++++++
> > > >  3 files changed, 38 insertions(+)
> > > >
> > > > diff --git a/board/samsung/arndale/arndale.c
> > > > b/board/samsung/arndale/arndale.c index 052fecd..44f20b9 100644
> > > > --- a/board/samsung/arndale/arndale.c
> > > > +++ b/board/samsung/arndale/arndale.c
> > > > @@ -7,10 +7,23 @@
> > > >
> > > >  #include <common.h>
> > > >  #include <asm/arch/pinmux.h>
> > > >  #include <asm/arch/dwmmc.h>
> > > >
> > > > +#include <asm/arch/gpio.h>
> > > >
> > > >  #include <asm/arch/power.h>
> > > >
> > > >  DECLARE_GLOBAL_DATA_PTR;
> > > >
> > > > +#ifdef CONFIG_USB_EHCI_EXYNOS
> > > > +void board_usb_init(int value)
> > > > +{
> > > > +     struct exynos5_gpio_part1 *gpio = (struct exynos5_gpio_part1 *)
> > > > +
> > >
> > > samsung_get_base_gpio_part1();
> > >
> > > > +
> > > > +     /* Configure gpios for usb 3503 hub's reset and connect */
> > > > +     s5p_gpio_direction_output(&gpio->x3, 5, value);
> > > > +     s5p_gpio_direction_output(&gpio->d1, 7, value);
> > > > +}
> > > > +#endif
> > > > +
> > > >
> > > >  int board_init(void)
> > > >  {
> > > >
> > > >       gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
> > > >
> > > > @@ -91,6 +104,16 @@ int board_early_init_f(void)
> > > >
> > > >  }
> > > >  #endif
> > > >
> > > > +#ifdef CONFIG_BOARD_LATE_INIT
> > > > +int board_late_init(void)
> > > > +{
> > > > +#ifdef CONFIG_PREBOOT
> > > > +     setenv("preboot", CONFIG_PREBOOT);
> > > > +     setenv("usbethaddr", "00:40:5c:26:0a:5b");
> > >
> > > Why do you need these 'setenv' calls ? This logic seems completely
> > > broken. The
> > > 'preboot' env variable is set already by defining the CONFIG_PREBOOT
> and
> > > the
> > > usbethaddr shall be set by user.
> >
> > Since arndale is a development board so this was done so that user
> > (developer) does not has to set usbethaddr on every boot. If its
> redundant
> > then I will remove this in the next version of the patchset.
>
> Can the user/developer/ ... just run:
>
> => setenv usbethaddr 00:11:22:33:44:fg
> => saveenv
>
> on the U-Boot command line?
>
> setenv("preboot", CONFIG_PREBOOT); is broken, the user might want to
> override
> this variable, yet you don't allow him to as you always reset it back to
> default
> value. If the board not loaded with a valid environment, a default env
> will be
> used and if CONFIG_PREBOOT is defined in your include/configs/<board>.h ,
> then
> the 'preboot' variable will also be set to the default value so no need to
> set
> it like so explicitly. You can reset a variable using "env default -f
> preboot'.
>

Thanks a lot Marek for the explanation.
Will remove this in the next patchset.


Thanks,
Inder
Marek Vasut - Dec. 14, 2013, 5:14 p.m.
On Saturday, December 14, 2013 at 03:28:57 PM, Inderpal Singh wrote:
> On 14 December 2013 23:20, Marek Vasut <marex@denx.de> wrote:
> > On Saturday, December 14, 2013 at 03:00:39 PM, Inderpal Singh wrote:
> > > Hi Marek,
> > > 
> > > Thanks for the review.
> > > 
> > > On 12 December 2013 19:03, Marek Vasut <marex@denx.de> wrote:
> > > > On Saturday, October 19, 2013 at 08:49:27 AM, Inderpal Singh wrote:
> > > > > From: Chander Kashyap <chander.kashyap@linaro.org>
> > > > > 
> > > > > Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet
> > > > > Combo controller, connected to HSIC Phy of USB host controller via
> > > > > USB3503 hub.
> > > > > 
> > > > > This patch implements a board specific board_usb_init function in
> > 
> > ehci
> > 
> > > > > driver to perform reset sequence for USB3503 hub and enables the
> > > > > relevant config options for network to work.
> > > > > 
> > > > > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> > > > > Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
> > > > > ---
> > > > > 
> > > > >  board/samsung/arndale/arndale.c |   23 +++++++++++++++++++++++
> > > > >  drivers/usb/host/ehci-exynos.c  |    9 +++++++++
> > > > >  include/configs/arndale.h       |    6 ++++++
> > > > >  3 files changed, 38 insertions(+)
> > > > > 
> > > > > diff --git a/board/samsung/arndale/arndale.c
> > > > > b/board/samsung/arndale/arndale.c index 052fecd..44f20b9 100644
> > > > > --- a/board/samsung/arndale/arndale.c
> > > > > +++ b/board/samsung/arndale/arndale.c
> > > > > @@ -7,10 +7,23 @@
> > > > > 
> > > > >  #include <common.h>
> > > > >  #include <asm/arch/pinmux.h>
> > > > >  #include <asm/arch/dwmmc.h>
> > > > > 
> > > > > +#include <asm/arch/gpio.h>
> > > > > 
> > > > >  #include <asm/arch/power.h>
> > > > >  
> > > > >  DECLARE_GLOBAL_DATA_PTR;
> > > > > 
> > > > > +#ifdef CONFIG_USB_EHCI_EXYNOS
> > > > > +void board_usb_init(int value)
> > > > > +{
> > > > > +     struct exynos5_gpio_part1 *gpio = (struct exynos5_gpio_part1
> > > > > *) +
> > > > 
> > > > samsung_get_base_gpio_part1();
> > > > 
> > > > > +
> > > > > +     /* Configure gpios for usb 3503 hub's reset and connect */
> > > > > +     s5p_gpio_direction_output(&gpio->x3, 5, value);
> > > > > +     s5p_gpio_direction_output(&gpio->d1, 7, value);
> > > > > +}
> > > > > +#endif
> > > > > +
> > > > > 
> > > > >  int board_init(void)
> > > > >  {
> > > > >  
> > > > >       gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
> > > > > 
> > > > > @@ -91,6 +104,16 @@ int board_early_init_f(void)
> > > > > 
> > > > >  }
> > > > >  #endif
> > > > > 
> > > > > +#ifdef CONFIG_BOARD_LATE_INIT
> > > > > +int board_late_init(void)
> > > > > +{
> > > > > +#ifdef CONFIG_PREBOOT
> > > > > +     setenv("preboot", CONFIG_PREBOOT);
> > > > > +     setenv("usbethaddr", "00:40:5c:26:0a:5b");
> > > > 
> > > > Why do you need these 'setenv' calls ? This logic seems completely
> > > > broken. The
> > > > 'preboot' env variable is set already by defining the CONFIG_PREBOOT
> > 
> > and
> > 
> > > > the
> > > > usbethaddr shall be set by user.
> > > 
> > > Since arndale is a development board so this was done so that user
> > > (developer) does not has to set usbethaddr on every boot. If its
> > 
> > redundant
> > 
> > > then I will remove this in the next version of the patchset.
> > 
> > Can the user/developer/ ... just run:
> > 
> > => setenv usbethaddr 00:11:22:33:44:fg
> > => saveenv
> > 
> > on the U-Boot command line?
> > 
> > setenv("preboot", CONFIG_PREBOOT); is broken, the user might want to
> > override
> > this variable, yet you don't allow him to as you always reset it back to
> > default
> > value. If the board not loaded with a valid environment, a default env
> > will be
> > used and if CONFIG_PREBOOT is defined in your include/configs/<board>.h ,
> > then
> > the 'preboot' variable will also be set to the default value so no need
> > to set
> > it like so explicitly. You can reset a variable using "env default -f
> > preboot'.
> 
> Thanks a lot Marek for the explanation.
> Will remove this in the next patchset.

Sure, HTH. Sorry I didn't review your patch, next time please at least add me to 
the CC or add 'usb:' tag to the patch.

Patch

diff --git a/board/samsung/arndale/arndale.c b/board/samsung/arndale/arndale.c
index 052fecd..44f20b9 100644
--- a/board/samsung/arndale/arndale.c
+++ b/board/samsung/arndale/arndale.c
@@ -7,10 +7,23 @@ 
 #include <common.h>
 #include <asm/arch/pinmux.h>
 #include <asm/arch/dwmmc.h>
+#include <asm/arch/gpio.h>
 #include <asm/arch/power.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
+#ifdef CONFIG_USB_EHCI_EXYNOS
+void board_usb_init(int value)
+{
+	struct exynos5_gpio_part1 *gpio = (struct exynos5_gpio_part1 *)
+						samsung_get_base_gpio_part1();
+
+	/* Configure gpios for usb 3503 hub's reset and connect */
+	s5p_gpio_direction_output(&gpio->x3, 5, value);
+	s5p_gpio_direction_output(&gpio->d1, 7, value);
+}
+#endif
+
 int board_init(void)
 {
 	gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
@@ -91,6 +104,16 @@  int board_early_init_f(void)
 }
 #endif
 
+#ifdef CONFIG_BOARD_LATE_INIT
+int board_late_init(void)
+{
+#ifdef CONFIG_PREBOOT
+	setenv("preboot", CONFIG_PREBOOT);
+	setenv("usbethaddr", "00:40:5c:26:0a:5b");
+#endif
+}
+#endif
+
 #ifdef CONFIG_DISPLAY_BOARDINFO
 int checkboard(void)
 {
diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c
index 50fbf36..cba450e 100644
--- a/drivers/usb/host/ehci-exynos.c
+++ b/drivers/usb/host/ehci-exynos.c
@@ -170,6 +170,11 @@  static void reset_usb_phy(struct exynos_usb_phy *usb)
 	set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_DISABLE);
 }
 
+inline void __board_usb_init(int value)
+{
+}
+void board_usb_init(int) __attribute__((weak, alias("__board_usb_init")));
+
 /*
  * EHCI-initialization
  * Create the appropriate control structures to manage
@@ -189,8 +194,12 @@  int ehci_hcd_init(int index, struct ehci_hccr **hccr, struct ehci_hcor **hcor)
 	ctx->hcd = (struct ehci_hccr *)samsung_get_base_usb_ehci();
 #endif
 
+	board_usb_init(0);
+
 	setup_usb_phy(ctx->usb);
 
+	board_usb_init(1);
+
 	*hccr = ctx->hcd;
 	*hcor = (struct ehci_hcor *)((uint32_t) *hccr
 				+ HC_LENGTH(ehci_readl(&(*hccr)->cr_capbase)));
diff --git a/include/configs/arndale.h b/include/configs/arndale.h
index ed44a04..ea24661 100644
--- a/include/configs/arndale.h
+++ b/include/configs/arndale.h
@@ -116,6 +116,10 @@ 
 #define CONFIG_USB_EHCI_EXYNOS
 #define CONFIG_USB_STORAGE
 
+#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS	3
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_PREBOOT                 "usb start"
 /* MMC SPL */
 #define CONFIG_SPL
 #define COPY_BL2_FNPTR_ADDR	0x02020030
@@ -179,6 +183,8 @@ 
 #define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SECURE_BL1_ONLY
 
+#define CONFIG_BOARD_LATE_INIT
+
 /* Secure FW size configuration */
 #ifdef	CONFIG_SECURE_BL1_ONLY
 #define	CONFIG_SEC_FW_SIZE		(8 << 10)	/* 8KB */