Message ID | 20220722093014.3850165-2-foss+uboot@0leil.net |
---|---|
State | Accepted |
Delegated to: | Kever Yang |
Headers | show |
Series | [v3,1/2] rockchip: rk3399: fix incorrect ifdef check on SPL_DM_REGULATOR | expand |
On 2022/7/22 17:30, Quentin Schulz wrote: > From: Quentin Schulz <quentin.schulz@theobroma-systems.com> > > The check to perform is on CONFIG_SPL_GPIO and not SPL_GPIO. > Because this was never compiled in, it missed an include of cru.h that > was not detected before. Let's include it too. > > Also switch to IS_ENABLED in-code check as it is the preferred > inclusion/exclusion mechanism. > > Fixes: 07586ee4322a ("rockchip: rk3399: Support common spl_board_init") > Cc: Quentin Schulz <foss+uboot@0leil.net> > Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com> Reviewed-by: Kever Yang <kever.yang@rock-chips.com> Thanks, - Kever > --- > > v3: > - always include header to fix compilation for boards with > CONFIG_SPL_GPIO disabled, > - always define rk3399_force_power_on_reset function by using an > in-code IS_ENABLED check instead of an ifdef to fix compilation for > boards with CONFIG_SPL_GPIO disabled, > > v2: > - use IS_ENABLED checks, > > arch/arm/mach-rockchip/rk3399/rk3399.c | 50 ++++++++++++++------------ > 1 file changed, 28 insertions(+), 22 deletions(-) > > diff --git a/arch/arm/mach-rockchip/rk3399/rk3399.c b/arch/arm/mach-rockchip/rk3399/rk3399.c > index 8205511c25..fc1acaf4bd 100644 > --- a/arch/arm/mach-rockchip/rk3399/rk3399.c > +++ b/arch/arm/mach-rockchip/rk3399/rk3399.c > @@ -15,6 +15,7 @@ > #include <asm/io.h> > #include <asm/arch-rockchip/bootrom.h> > #include <asm/arch-rockchip/clock.h> > +#include <asm/arch-rockchip/cru.h> > #include <asm/arch-rockchip/gpio.h> > #include <asm/arch-rockchip/grf_rk3399.h> > #include <asm/arch-rockchip/hardware.h> > @@ -221,12 +222,17 @@ void spl_perform_fixups(struct spl_image_info *spl_image) > "u-boot,spl-boot-device", boot_ofpath); > } > > -#if defined(SPL_GPIO) > static void rk3399_force_power_on_reset(void) > { > ofnode node; > struct gpio_desc sysreset_gpio; > > + if (!IS_ENABLED(CONFIG_SPL_GPIO)) { > + debug("%s: trying to force a power-on reset but no GPIO " > + "support in SPL!\n", __func__); > + return; > + } > + > debug("%s: trying to force a power-on reset\n", __func__); > > node = ofnode_path("/config"); > @@ -243,7 +249,6 @@ static void rk3399_force_power_on_reset(void) > > dm_gpio_set_value(&sysreset_gpio, 1); > } > -#endif > > void __weak led_setup(void) > { > @@ -253,27 +258,28 @@ void spl_board_init(void) > { > led_setup(); > > -#if defined(SPL_GPIO) > - struct rockchip_cru *cru = rockchip_get_cru(); > + if (IS_ENABLED(CONFIG_SPL_GPIO)) { > + struct rockchip_cru *cru = rockchip_get_cru(); > > - /* > - * The RK3399 resets only 'almost all logic' (see also in the TRM > - * "3.9.4 Global software reset"), when issuing a software reset. > - * This may cause issues during boot-up for some configurations of > - * the application software stack. > - * > - * To work around this, we test whether the last reset reason was > - * a power-on reset and (if not) issue an overtemp-reset to reset > - * the entire module. > - * > - * While this was previously fixed by modifying the various places > - * that could generate a software reset (e.g. U-Boot's sysreset > - * driver, the ATF or Linux), we now have it here to ensure that > - * we no longer have to track this through the various components. > - */ > - if (cru->glb_rst_st != 0) > - rk3399_force_power_on_reset(); > -#endif > + /* > + * The RK3399 resets only 'almost all logic' (see also in the > + * TRM "3.9.4 Global software reset"), when issuing a software > + * reset. This may cause issues during boot-up for some > + * configurations of the application software stack. > + * > + * To work around this, we test whether the last reset reason > + * was a power-on reset and (if not) issue an overtemp-reset to > + * reset the entire module. > + * > + * While this was previously fixed by modifying the various > + * places that could generate a software reset (e.g. U-Boot's > + * sysreset driver, the ATF or Linux), we now have it here to > + * ensure that we no longer have to track this through the > + * various components. > + */ > + if (cru->glb_rst_st != 0) > + rk3399_force_power_on_reset(); > + } > > if (IS_ENABLED(CONFIG_SPL_DM_REGULATOR)) { > /*
diff --git a/arch/arm/mach-rockchip/rk3399/rk3399.c b/arch/arm/mach-rockchip/rk3399/rk3399.c index 8205511c25..fc1acaf4bd 100644 --- a/arch/arm/mach-rockchip/rk3399/rk3399.c +++ b/arch/arm/mach-rockchip/rk3399/rk3399.c @@ -15,6 +15,7 @@ #include <asm/io.h> #include <asm/arch-rockchip/bootrom.h> #include <asm/arch-rockchip/clock.h> +#include <asm/arch-rockchip/cru.h> #include <asm/arch-rockchip/gpio.h> #include <asm/arch-rockchip/grf_rk3399.h> #include <asm/arch-rockchip/hardware.h> @@ -221,12 +222,17 @@ void spl_perform_fixups(struct spl_image_info *spl_image) "u-boot,spl-boot-device", boot_ofpath); } -#if defined(SPL_GPIO) static void rk3399_force_power_on_reset(void) { ofnode node; struct gpio_desc sysreset_gpio; + if (!IS_ENABLED(CONFIG_SPL_GPIO)) { + debug("%s: trying to force a power-on reset but no GPIO " + "support in SPL!\n", __func__); + return; + } + debug("%s: trying to force a power-on reset\n", __func__); node = ofnode_path("/config"); @@ -243,7 +249,6 @@ static void rk3399_force_power_on_reset(void) dm_gpio_set_value(&sysreset_gpio, 1); } -#endif void __weak led_setup(void) { @@ -253,27 +258,28 @@ void spl_board_init(void) { led_setup(); -#if defined(SPL_GPIO) - struct rockchip_cru *cru = rockchip_get_cru(); + if (IS_ENABLED(CONFIG_SPL_GPIO)) { + struct rockchip_cru *cru = rockchip_get_cru(); - /* - * The RK3399 resets only 'almost all logic' (see also in the TRM - * "3.9.4 Global software reset"), when issuing a software reset. - * This may cause issues during boot-up for some configurations of - * the application software stack. - * - * To work around this, we test whether the last reset reason was - * a power-on reset and (if not) issue an overtemp-reset to reset - * the entire module. - * - * While this was previously fixed by modifying the various places - * that could generate a software reset (e.g. U-Boot's sysreset - * driver, the ATF or Linux), we now have it here to ensure that - * we no longer have to track this through the various components. - */ - if (cru->glb_rst_st != 0) - rk3399_force_power_on_reset(); -#endif + /* + * The RK3399 resets only 'almost all logic' (see also in the + * TRM "3.9.4 Global software reset"), when issuing a software + * reset. This may cause issues during boot-up for some + * configurations of the application software stack. + * + * To work around this, we test whether the last reset reason + * was a power-on reset and (if not) issue an overtemp-reset to + * reset the entire module. + * + * While this was previously fixed by modifying the various + * places that could generate a software reset (e.g. U-Boot's + * sysreset driver, the ATF or Linux), we now have it here to + * ensure that we no longer have to track this through the + * various components. + */ + if (cru->glb_rst_st != 0) + rk3399_force_power_on_reset(); + } if (IS_ENABLED(CONFIG_SPL_DM_REGULATOR)) { /*