[U-Boot] [RESEND PATCH v2 04/15] arm: socfpga: agilex: Add reset manager support

Simon Goldschmidt simon.k.r.goldschmidt at gmail.com
Tue Jul 9 20:01:55 UTC 2019


Am 04.07.2019 um 10:56 schrieb Ley Foon Tan:
> Add reset manager support for Agilex.
> 
> Signed-off-by: Ley Foon Tan <ley.foon.tan at intel.com>
> ---
>   .../mach-socfpga/include/mach/reset_manager.h |  5 ++-
>   .../include/mach/reset_manager_agilex.h       | 38 +++++++++++++++++++
>   arch/arm/mach-socfpga/reset_manager.c         |  9 +++--
>   3 files changed, 48 insertions(+), 4 deletions(-)
>   create mode 100644 arch/arm/mach-socfpga/include/mach/reset_manager_agilex.h
> 
> diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager.h b/arch/arm/mach-socfpga/include/mach/reset_manager.h
> index e2dce4b4fb..f752f7abb8 100644
> --- a/arch/arm/mach-socfpga/include/mach/reset_manager.h
> +++ b/arch/arm/mach-socfpga/include/mach/reset_manager.h
> @@ -36,7 +36,8 @@ void socfpga_per_reset_all(void);
>   /* Create a human-readable reference to SoCFPGA reset. */
>   #define SOCFPGA_RESET(_name)	RSTMGR_##_name
>   
> -#if defined(CONFIG_TARGET_SOCFPGA_STRATIX10)
> +#if defined(CONFIG_TARGET_SOCFPGA_STRATIX10) || \
> +	defined(CONFIG_TARGET_SOCFPGA_AGILEX)
>   
>   void reset_deassert_peripherals_handoff(void);
>   int cpu_has_been_warmreset(void);
> @@ -68,6 +69,8 @@ void socfpga_bridges_reset(int enable);
>   #include <asm/arch/reset_manager_arria10.h>
>   #elif defined(CONFIG_TARGET_SOCFPGA_STRATIX10)
>   #include <asm/arch/reset_manager_s10.h>
> +#elif defined(CONFIG_TARGET_SOCFPGA_AGILEX)
> +#include <asm/arch/reset_manager_agilex.h>
>   #endif
>   
>   #endif /* _RESET_MANAGER_H_ */
> diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_agilex.h b/arch/arm/mach-socfpga/include/mach/reset_manager_agilex.h
> new file mode 100644
> index 0000000000..c209fb439b
> --- /dev/null
> +++ b/arch/arm/mach-socfpga/include/mach/reset_manager_agilex.h
> @@ -0,0 +1,38 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * Copyright (C) 2019 Intel Corporation <www.intel.com>
> + */
> +
> +#ifndef	_RESET_MANAGER_AGILEX_
> +#define	_RESET_MANAGER_AGILEX_
> +
> +struct socfpga_reset_manager {
> +	u32	status;
> +	u32	mpu_rst_stat;
> +	u32	misc_stat;
> +	u32	padding1;
> +	u32	hdsk_en;
> +	u32	hdsk_req;
> +	u32	hdsk_ack;
> +	u32	hdsk_stall;
> +	u32	mpumodrst;
> +	u32	per0modrst;
> +	u32	per1modrst;
> +	u32	brgmodrst;
> +	u32	padding2;
> +	u32	cold_mod_reset;
> +	u32	padding3;
> +	u32	dbg_mod_reset;

So the only difference is that 'padding4' got renamed to 
'tap_mod_reset'? Do you even use 'tap_mod_reset' in U-Boot?

This looks like another file to be combined for S10 and Agilex?

> +	u32	padding4;
> +	u32	padding5;
> +	u32	padding6;
> +	u32	brg_warm_mask;
> +	u32	padding7[3];
> +	u32	tst_stat;
> +	u32	padding8;
> +	u32	hdsk_timeout;
> +	u32	mpul2flushtimeout;
> +	u32	dbghdsktimeout;
> +};
> +
> +#endif /* _RESET_MANAGER_AGILEX_ */
> diff --git a/arch/arm/mach-socfpga/reset_manager.c b/arch/arm/mach-socfpga/reset_manager.c
> index e0a01ed07a..5dfe303940 100644
> --- a/arch/arm/mach-socfpga/reset_manager.c
> +++ b/arch/arm/mach-socfpga/reset_manager.c
> @@ -8,13 +8,15 @@
>   #include <asm/io.h>
>   #include <asm/arch/reset_manager.h>
>   
> -#if defined(CONFIG_TARGET_SOCFPGA_STRATIX10)
> +#if defined(CONFIG_TARGET_SOCFPGA_STRATIX10) || \
> +	defined(CONFIG_TARGET_SOCFPGA_AGILEX)

If this combination happens more often and you can come up with a code 
name standing for "S10 or Agilex", this could be made more readable by 
adding a preprocessor define for this codename...

Regards,
Simon

>   #include <asm/arch/mailbox_s10.h>
>   #endif
>   
>   DECLARE_GLOBAL_DATA_PTR;
>   
> -#if !defined(CONFIG_TARGET_SOCFPGA_STRATIX10)
> +#if !defined(CONFIG_TARGET_SOCFPGA_STRATIX10) && \
> +	!defined(CONFIG_TARGET_SOCFPGA_AGILEX)
>   static const struct socfpga_reset_manager *reset_manager_base =
>   		(void *)SOCFPGA_RSTMGR_ADDRESS;
>   #endif
> @@ -25,7 +27,8 @@ static const struct socfpga_reset_manager *reset_manager_base =
>   void reset_cpu(ulong addr)
>   {
>   	/* request a warm reset */
> -#if defined(CONFIG_TARGET_SOCFPGA_STRATIX10)
> +#if defined(CONFIG_TARGET_SOCFPGA_STRATIX10) || \
> +	defined(CONFIG_TARGET_SOCFPGA_AGILEX)
>   	puts("Mailbox: Issuing mailbox cmd REBOOT_HPS\n");
>   	mbox_reset_cold();
>   #else
> 



More information about the U-Boot mailing list