diff options
Diffstat (limited to 'arch/arm/mach-socfpga/include')
20 files changed, 451 insertions, 746 deletions
| diff --git a/arch/arm/mach-socfpga/include/mach/base_addr_s10.h b/arch/arm/mach-socfpga/include/mach/base_addr_s10.h index 1f549d7e70f..d3eca65e97c 100644 --- a/arch/arm/mach-socfpga/include/mach/base_addr_s10.h +++ b/arch/arm/mach-socfpga/include/mach/base_addr_s10.h @@ -10,7 +10,11 @@  #define SOCFPGA_SDR_SCHEDULER_ADDRESS		0xf8000400  #define SOCFPGA_HMC_MMR_IO48_ADDRESS		0xf8010000  #define SOCFPGA_SDR_ADDRESS			0xf8011000 +#ifdef CONFIG_TARGET_SOCFPGA_AGILEX +#define SOCFPGA_FW_MPU_DDR_SCR_ADDRESS		0xf8020200 +#else  #define SOCFPGA_FW_MPU_DDR_SCR_ADDRESS		0xf8020100 +#endif  #define SOCFPGA_SMMU_ADDRESS			0xfa000000  #define SOCFPGA_MAILBOX_ADDRESS			0xffa30000  #define SOCFPGA_UART0_ADDRESS			0xffc02000 diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager.h b/arch/arm/mach-socfpga/include/mach/clock_manager.h index dd80e3a7672..c6830582a5a 100644 --- a/arch/arm/mach-socfpga/include/mach/clock_manager.h +++ b/arch/arm/mach-socfpga/include/mach/clock_manager.h @@ -6,6 +6,8 @@  #ifndef _CLOCK_MANAGER_H_  #define _CLOCK_MANAGER_H_ +phys_addr_t socfpga_get_clkmgr_addr(void); +  #ifndef __ASSEMBLER__  void cm_wait_for_lock(u32 mask);  int cm_wait_for_fsm(void); @@ -18,6 +20,8 @@ void cm_print_clock_quick_summary(void);  #include <asm/arch/clock_manager_arria10.h>  #elif defined(CONFIG_TARGET_SOCFPGA_STRATIX10)  #include <asm/arch/clock_manager_s10.h> +#elif defined(CONFIG_TARGET_SOCFPGA_AGILEX) +#include <asm/arch/clock_manager_agilex.h>  #endif  #endif /* _CLOCK_MANAGER_H_ */ diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_agilex.h b/arch/arm/mach-socfpga/include/mach/clock_manager_agilex.h new file mode 100644 index 00000000000..386e82a4e32 --- /dev/null +++ b/arch/arm/mach-socfpga/include/mach/clock_manager_agilex.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2019 Intel Corporation <www.intel.com> + */ + +#ifndef _CLOCK_MANAGER_AGILEX_ +#define _CLOCK_MANAGER_AGILEX_ + +unsigned long cm_get_mpu_clk_hz(void); + +#include <asm/arch/clock_manager_soc64.h> +#include "../../../../../drivers/clk/altera/clk-agilex.h" + +#endif /* _CLOCK_MANAGER_AGILEX_ */ diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h index de8c22540f3..23f280df1b9 100644 --- a/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h +++ b/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h @@ -8,86 +8,57 @@  #ifndef __ASSEMBLER__ -struct socfpga_clock_manager_main_pll { -	u32  vco0; -	u32  vco1; -	u32  en; -	u32  ens; -	u32  enr; -	u32  bypass; -	u32  bypasss; -	u32  bypassr; -	u32  mpuclk; -	u32  nocclk; -	u32  cntr2clk; -	u32  cntr3clk; -	u32  cntr4clk; -	u32  cntr5clk; -	u32  cntr6clk; -	u32  cntr7clk; -	u32  cntr8clk; -	u32  cntr9clk; -	u32  pad_0x48_0x5b[5]; -	u32  cntr15clk; -	u32  outrst; -	u32  outrststat; -	u32  nocdiv; -	u32  pad_0x6c_0x80[5]; -}; - -struct socfpga_clock_manager_per_pll { -	u32  vco0; -	u32  vco1; -	u32  en; -	u32  ens; -	u32  enr; -	u32  bypass; -	u32  bypasss; -	u32  bypassr; -	u32  pad_0x20_0x27[2]; -	u32  cntr2clk; -	u32  cntr3clk; -	u32  cntr4clk; -	u32  cntr5clk; -	u32  cntr6clk; -	u32  cntr7clk; -	u32  cntr8clk; -	u32  cntr9clk; -	u32  pad_0x48_0x5f[6]; -	u32  outrst; -	u32  outrststat; -	u32  emacctl; -	u32  gpiodiv; -	u32  pad_0x70_0x80[4]; -}; - -struct socfpga_clock_manager_altera { -	u32	mpuclk; -	u32	nocclk; -	u32	mainmisc0; -	u32	mainmisc1; -	u32	perimisc0; -	u32	perimisc1; -}; - -struct socfpga_clock_manager { -	/* clkmgr */ -	u32  ctrl; -	u32  intr; -	u32  intrs; -	u32  intrr; -	u32  intren; -	u32  intrens; -	u32  intrenr; -	u32  stat; -	u32  testioctrl; -	u32  _pad_0x24_0x40[7]; -	/* mainpllgrp */ -	struct socfpga_clock_manager_main_pll main_pll; -	/* perpllgrp */ -	struct socfpga_clock_manager_per_pll per_pll; -	struct socfpga_clock_manager_altera altera; -}; +/* Clock manager group */ +#define CLKMGR_A10_CTRL				0x00 +#define CLKMGR_A10_INTR				0x04 +#define CLKMGR_A10_STAT				0x1c +/* MainPLL group */ +#define CLKMGR_A10_MAINPLL_VCO0			0x40 +#define CLKMGR_A10_MAINPLL_VCO1			0x44 +#define CLKMGR_A10_MAINPLL_EN			0x48 +#define CLKMGR_A10_MAINPLL_ENS			0x4c +#define CLKMGR_A10_MAINPLL_ENR			0x50 +#define CLKMGR_A10_MAINPLL_BYPASS		0x54 +#define CLKMGR_A10_MAINPLL_BYPASSS		0x58 +#define CLKMGR_A10_MAINPLL_BYPASSR		0x5c +#define CLKMGR_A10_MAINPLL_MPUCLK		0x60 +#define CLKMGR_A10_MAINPLL_NOCCLK		0x64 +#define CLKMGR_A10_MAINPLL_CNTR2CLK		0x68 +#define CLKMGR_A10_MAINPLL_CNTR3CLK		0x6c +#define CLKMGR_A10_MAINPLL_CNTR4CLK		0x70 +#define CLKMGR_A10_MAINPLL_CNTR5CLK		0x74 +#define CLKMGR_A10_MAINPLL_CNTR6CLK		0x78 +#define CLKMGR_A10_MAINPLL_CNTR7CLK		0x7c +#define CLKMGR_A10_MAINPLL_CNTR8CLK		0x80 +#define CLKMGR_A10_MAINPLL_CNTR9CLK		0x84 +#define CLKMGR_A10_MAINPLL_CNTR15CLK		0x9c +#define CLKMGR_A10_MAINPLL_NOCDIV		0xa8 +/* Peripheral PLL group */ +#define CLKMGR_A10_PERPLL_VCO0			0xc0 +#define CLKMGR_A10_PERPLL_VCO1			0xc4 +#define CLKMGR_A10_PERPLL_EN			0xc8 +#define CLKMGR_A10_PERPLL_ENS			0xcc +#define CLKMGR_A10_PERPLL_ENR			0xd0 +#define CLKMGR_A10_PERPLL_BYPASS		0xd4 +#define CLKMGR_A10_PERPLL_BYPASSS		0xd8 +#define CLKMGR_A10_PERPLL_BYPASSR		0xdc +#define CLKMGR_A10_PERPLL_CNTR2CLK		0xe8 +#define CLKMGR_A10_PERPLL_CNTR3CLK		0xec +#define CLKMGR_A10_PERPLL_CNTR4CLK		0xf0 +#define CLKMGR_A10_PERPLL_CNTR5CLK		0xf4 +#define CLKMGR_A10_PERPLL_CNTR6CLK		0xf8 +#define CLKMGR_A10_PERPLL_CNTR7CLK		0xfc +#define CLKMGR_A10_PERPLL_CNTR8CLK		0x100 +#define CLKMGR_A10_PERPLL_CNTR9CLK		0x104 +#define CLKMGR_A10_PERPLL_EMACCTL		0x128 +#define CLKMGR_A10_PERPLL_GPIOFIV		0x12c +/* Altera group */ +#define CLKMGR_A10_ALTR_MPUCLK			0x140 +#define CLKMGR_A10_ALTR_NOCCLK			0x144 + +#define CLKMGR_STAT				CLKMGR_A10_STAT +#define CLKMGR_INTER				CLKMGR_A10_INTER +#define CLKMGR_PERPLL_EN			CLKMGR_A10_PERPLL_EN  #ifdef CONFIG_SPL_BUILD  int cm_basic_init(const void *blob); @@ -100,8 +71,6 @@ unsigned int cm_get_qspi_controller_clk_hz(void);  #endif /* __ASSEMBLER__ */ -#define CLKMGR_ALTERAGRP_MPU_CLK_OFFSET			0x140 -#define CLKMGR_MAINPLL_NOC_CLK_OFFSET			0x144  #define LOCKED_MASK	(CLKMGR_CLKMGR_STAT_MAINPLLLOCKED_SET_MSK | \  			 CLKMGR_CLKMGR_STAT_PERPLLLOCKED_SET_MSK) diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h index 5bedf28cf1a..08655094ca3 100644 --- a/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h +++ b/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h @@ -45,71 +45,53 @@ struct cm_config {  	u32 altera_grp_mpuclk;  }; -struct socfpga_clock_manager_main_pll { -	u32	vco; -	u32	misc; -	u32	mpuclk; -	u32	mainclk; -	u32	dbgatclk; -	u32	mainqspiclk; -	u32	mainnandsdmmcclk; -	u32	cfgs2fuser0clk; -	u32	en; -	u32	maindiv; -	u32	dbgdiv; -	u32	tracediv; -	u32	l4src; -	u32	stat; -	u32	_pad_0x38_0x40[2]; -}; - -struct socfpga_clock_manager_per_pll { -	u32	vco; -	u32	misc; -	u32	emac0clk; -	u32	emac1clk; -	u32	perqspiclk; -	u32	pernandsdmmcclk; -	u32	perbaseclk; -	u32	s2fuser1clk; -	u32	en; -	u32	div; -	u32	gpiodiv; -	u32	src; -	u32	stat; -	u32	_pad_0x34_0x40[3]; -}; - -struct socfpga_clock_manager_sdr_pll { -	u32	vco; -	u32	ctrl; -	u32	ddrdqsclk; -	u32	ddr2xdqsclk; -	u32	ddrdqclk; -	u32	s2fuser2clk; -	u32	en; -	u32	stat; -}; - -struct socfpga_clock_manager_altera { -	u32	mpuclk; -	u32	mainclk; -}; - -struct socfpga_clock_manager { -	u32	ctrl; -	u32	bypass; -	u32	inter; -	u32	intren; -	u32	dbctrl; -	u32	stat; -	u32	_pad_0x18_0x3f[10]; -	struct socfpga_clock_manager_main_pll main_pll; -	struct socfpga_clock_manager_per_pll per_pll; -	struct socfpga_clock_manager_sdr_pll sdr_pll; -	struct socfpga_clock_manager_altera altera; -	u32	_pad_0xe8_0x200[70]; -}; +/* Clock manager group */ +#define CLKMGR_GEN5_CTRL			0x00 +#define CLKMGR_GEN5_BYPASS			0x04 +#define CLKMGR_GEN5_INTER			0x08 +#define CLKMGR_GEN5_STAT			0x14 +/* MainPLL group */ +#define CLKMGR_GEN5_MAINPLL_VCO			0x40 +#define CLKMGR_GEN5_MAINPLL_MISC		0x44 +#define CLKMGR_GEN5_MAINPLL_MPUCLK		0x48 +#define CLKMGR_GEN5_MAINPLL_MAINCLK		0x4c +#define CLKMGR_GEN5_MAINPLL_DBGATCLK		0x50 +#define CLKMGR_GEN5_MAINPLL_MAINQSPICLK		0x54 +#define CLKMGR_GEN5_MAINPLL_MAINNANDSDMMCCLK	0x58 +#define CLKMGR_GEN5_MAINPLL_CFGS2FUSER0CLK	0x5c +#define CLKMGR_GEN5_MAINPLL_EN			0x60 +#define CLKMGR_GEN5_MAINPLL_MAINDIV		0x64 +#define CLKMGR_GEN5_MAINPLL_DBGDIV		0x68 +#define CLKMGR_GEN5_MAINPLL_TRACEDIV		0x6c +#define CLKMGR_GEN5_MAINPLL_L4SRC		0x70 +/* Peripheral PLL group */ +#define CLKMGR_GEN5_PERPLL_VCO			0x80 +#define CLKMGR_GEN5_PERPLL_MISC			0x84 +#define CLKMGR_GEN5_PERPLL_EMAC0CLK		0x88 +#define CLKMGR_GEN5_PERPLL_EMAC1CLK		0x8c +#define CLKMGR_GEN5_PERPLL_PERQSPICLK		0x90 +#define CLKMGR_GEN5_PERPLL_PERNANDSDMMCCLK	0x94 +#define CLKMGR_GEN5_PERPLL_PERBASECLK		0x98 +#define CLKMGR_GEN5_PERPLL_S2FUSER1CLK		0x9c +#define CLKMGR_GEN5_PERPLL_EN			0xa0 +#define CLKMGR_GEN5_PERPLL_DIV			0xa4 +#define CLKMGR_GEN5_PERPLL_GPIODIV		0xa8 +#define CLKMGR_GEN5_PERPLL_SRC			0xac +/* SDRAM PLL group */ +#define CLKMGR_GEN5_SDRPLL_VCO			0xc0 +#define CLKMGR_GEN5_SDRPLL_CTRL			0xc4 +#define CLKMGR_GEN5_SDRPLL_DDRDQSCLK		0xc8 +#define CLKMGR_GEN5_SDRPLL_DDR2XDQSCLK		0xcc +#define CLKMGR_GEN5_SDRPLL_DDRDQCLK		0xd0 +#define CLKMGR_GEN5_SDRPLL_S2FUSER2CLK		0xd4 +#define CLKMGR_GEN5_SDRPLL_EN			0xd8 +/* Altera group */ +#define CLKMGR_GEN5_ALTR_MPUCLK			0xe0 +#define CLKMGR_GEN5_ALTR_MAINCLK		0xe4 + +#define CLKMGR_STAT				CLKMGR_GEN5_STAT +#define CLKMGR_INTER				CLKMGR_GEN5_INTER +#define CLKMGR_PERPLL_EN			CLKMGR_GEN5_PERPLL_EN  /* Clock speed accessors */  unsigned long cm_get_mpu_clk_hz(void); diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h b/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h index 24b20de011d..e710aa2f94f 100644 --- a/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h +++ b/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h @@ -1,12 +1,14 @@  /* SPDX-License-Identifier: GPL-2.0   * - * Copyright (C) 2016-2018 Intel Corporation <www.intel.com> + * Copyright (C) 2016-2019 Intel Corporation <www.intel.com>   *   */  #ifndef	_CLOCK_MANAGER_S10_  #define	_CLOCK_MANAGER_S10_ +#include <asm/arch/clock_manager_soc64.h> +  /* Clock speed accessors */  unsigned long cm_get_mpu_clk_hz(void);  unsigned long cm_get_sdram_clk_hz(void); @@ -14,18 +16,6 @@ unsigned int cm_get_l4_sp_clk_hz(void);  unsigned int cm_get_mmc_controller_clk_hz(void);  unsigned int cm_get_qspi_controller_clk_hz(void);  unsigned int cm_get_spi_controller_clk_hz(void); -const unsigned int cm_get_osc_clk_hz(void); -const unsigned int cm_get_f2s_per_ref_clk_hz(void); -const unsigned int cm_get_f2s_sdr_ref_clk_hz(void); -const unsigned int cm_get_intosc_clk_hz(void); -const unsigned int cm_get_fpga_clk_hz(void); - -#define CLKMGR_EOSC1_HZ		25000000 -#define CLKMGR_INTOSC_HZ	460000000 -#define CLKMGR_FPGA_CLK_HZ	50000000 - -/* Clock configuration accessors */ -const struct cm_config * const cm_get_default_config(void);  struct cm_config {  	/* main group */ @@ -69,75 +59,54 @@ struct cm_config {  void cm_basic_init(const struct cm_config * const cfg); -struct socfpga_clock_manager_main_pll { -	u32	en; -	u32	ens; -	u32	enr; -	u32	bypass; -	u32	bypasss; -	u32	bypassr; -	u32	mpuclk; -	u32	nocclk; -	u32	cntr2clk; -	u32	cntr3clk; -	u32	cntr4clk; -	u32	cntr5clk; -	u32	cntr6clk; -	u32	cntr7clk; -	u32	cntr8clk; -	u32	cntr9clk; -	u32	nocdiv; -	u32	pllglob; -	u32	fdbck; -	u32	mem; -	u32	memstat; -	u32	pllc0; -	u32	pllc1; -	u32	vcocalib; -	u32	_pad_0x90_0xA0[5]; -}; +/* Control status */ +#define CLKMGR_S10_CTRL					0x00 +#define CLKMGR_S10_STAT					0x04 +#define CLKMGR_S10_INTRCLR				0x14 +/* Mainpll group */ +#define CLKMGR_S10_MAINPLL_EN				0x30 +#define CLKMGR_S10_MAINPLL_BYPASS			0x3c +#define CLKMGR_S10_MAINPLL_MPUCLK			0x48 +#define CLKMGR_S10_MAINPLL_NOCCLK			0x4c +#define CLKMGR_S10_MAINPLL_CNTR2CLK			0x50 +#define CLKMGR_S10_MAINPLL_CNTR3CLK			0x54 +#define CLKMGR_S10_MAINPLL_CNTR4CLK			0x58 +#define CLKMGR_S10_MAINPLL_CNTR5CLK			0x5c +#define CLKMGR_S10_MAINPLL_CNTR6CLK			0x60 +#define CLKMGR_S10_MAINPLL_CNTR7CLK			0x64 +#define CLKMGR_S10_MAINPLL_CNTR8CLK			0x68 +#define CLKMGR_S10_MAINPLL_CNTR9CLK			0x6c +#define CLKMGR_S10_MAINPLL_NOCDIV			0x70 +#define CLKMGR_S10_MAINPLL_PLLGLOB			0x74 +#define CLKMGR_S10_MAINPLL_FDBCK			0x78 +#define CLKMGR_S10_MAINPLL_MEMSTAT			0x80 +#define CLKMGR_S10_MAINPLL_PLLC0			0x84 +#define CLKMGR_S10_MAINPLL_PLLC1			0x88 +#define CLKMGR_S10_MAINPLL_VCOCALIB			0x8c +/* Periphpll group */ +#define CLKMGR_S10_PERPLL_EN				0xa4 +#define CLKMGR_S10_PERPLL_BYPASS			0xac +#define CLKMGR_S10_PERPLL_CNTR2CLK			0xbc +#define CLKMGR_S10_PERPLL_CNTR3CLK			0xc0 +#define CLKMGR_S10_PERPLL_CNTR4CLK			0xc4 +#define CLKMGR_S10_PERPLL_CNTR5CLK			0xc8 +#define CLKMGR_S10_PERPLL_CNTR6CLK			0xcc +#define CLKMGR_S10_PERPLL_CNTR7CLK			0xd0 +#define CLKMGR_S10_PERPLL_CNTR8CLK			0xd4 +#define CLKMGR_S10_PERPLL_CNTR9CLK			0xd8 +#define CLKMGR_S10_PERPLL_EMACCTL			0xdc +#define CLKMGR_S10_PERPLL_GPIODIV			0xe0 +#define CLKMGR_S10_PERPLL_PLLGLOB			0xe4 +#define CLKMGR_S10_PERPLL_FDBCK				0xe8 +#define CLKMGR_S10_PERPLL_MEMSTAT			0xf0 +#define CLKMGR_S10_PERPLL_PLLC0				0xf4 +#define CLKMGR_S10_PERPLL_PLLC1				0xf8 +#define CLKMGR_S10_PERPLL_VCOCALIB			0xfc + +#define CLKMGR_STAT					CLKMGR_S10_STAT +#define CLKMGR_INTER					CLKMGR_S10_INTER +#define CLKMGR_PERPLL_EN				CLKMGR_S10_PERPLL_EN -struct socfpga_clock_manager_per_pll { -	u32	en; -	u32	ens; -	u32	enr; -	u32	bypass; -	u32	bypasss; -	u32	bypassr; -	u32	cntr2clk; -	u32	cntr3clk; -	u32	cntr4clk; -	u32	cntr5clk; -	u32	cntr6clk; -	u32	cntr7clk; -	u32	cntr8clk; -	u32	cntr9clk; -	u32	emacctl; -	u32	gpiodiv; -	u32	pllglob; -	u32	fdbck; -	u32	mem; -	u32	memstat; -	u32	pllc0; -	u32	pllc1; -	u32	vcocalib; -	u32	_pad_0x100_0x124[10]; -}; - -struct socfpga_clock_manager { -	u32	ctrl; -	u32	stat; -	u32	testioctrl; -	u32	intrgen; -	u32	intrmsk; -	u32	intrclr; -	u32	intrsts; -	u32	intrstk; -	u32	intrraw; -	u32	_pad_0x24_0x2c[3]; -	struct socfpga_clock_manager_main_pll main_pll; -	struct socfpga_clock_manager_per_pll per_pll; -};  #define CLKMGR_CTRL_SAFEMODE				BIT(0)  #define CLKMGR_BYPASS_MAINPLL_ALL			0x00000007 diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_soc64.h b/arch/arm/mach-socfpga/include/mach/clock_manager_soc64.h new file mode 100644 index 00000000000..71fbaa76678 --- /dev/null +++ b/arch/arm/mach-socfpga/include/mach/clock_manager_soc64.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0 + * + * Copyright (C) 2016-2019 Intel Corporation <www.intel.com> + * + */ + +#ifndef _CLOCK_MANAGER_SOC64_ +#define _CLOCK_MANAGER_SOC64_ + +const unsigned int cm_get_osc_clk_hz(void); +const unsigned int cm_get_f2s_per_ref_clk_hz(void); +const unsigned int cm_get_f2s_sdr_ref_clk_hz(void); +const unsigned int cm_get_intosc_clk_hz(void); +const unsigned int cm_get_fpga_clk_hz(void); + +#define CLKMGR_INTOSC_HZ	400000000 + +/* Clock configuration accessors */ +const struct cm_config * const cm_get_default_config(void); + +#endif /* _CLOCK_MANAGER_SOC64_ */ diff --git a/arch/arm/mach-socfpga/include/mach/firewall_s10.h b/arch/arm/mach-socfpga/include/mach/firewall.h index b96f779f148..430341bea14 100644 --- a/arch/arm/mach-socfpga/include/mach/firewall_s10.h +++ b/arch/arm/mach-socfpga/include/mach/firewall.h @@ -1,11 +1,11 @@  /* SPDX-License-Identifier: GPL-2.0   * - * Copyright (C) 2017-2018 Intel Corporation <www.intel.com> + * Copyright (C) 2017-2019 Intel Corporation <www.intel.com>   *   */ -#ifndef	_FIREWALL_S10_ -#define	_FIREWALL_S10_ +#ifndef	_FIREWALL_H_ +#define	_FIREWALL_H_  struct socfpga_firwall_l4_per {  	u32	nand;		/* 0x00 */ @@ -95,6 +95,13 @@ struct socfpga_firwall_l4_sys {  #define CCU_IOM_MPRT_ADMASK_MEM_RAM0		0x18628 +#define CCU_TCU_MPRT_ADBASE_MEMSPACE0		0x2c520 +#define CCU_TCU_MPRT_ADBASE_MEMSPACE1A		0x2c540 +#define CCU_TCU_MPRT_ADBASE_MEMSPACE1B		0x2c560 +#define CCU_TCU_MPRT_ADBASE_MEMSPACE1C		0x2c580 +#define CCU_TCU_MPRT_ADBASE_MEMSPACE1D		0x2c5a0 +#define CCU_TCU_MPRT_ADBASE_MEMSPACE1E		0x2c5c0 +  #define CCU_ADMASK_P_MASK			BIT(0)  #define CCU_ADMASK_NS_MASK			BIT(1) @@ -117,4 +124,6 @@ struct socfpga_firwall_l4_sys {  #define FW_MPU_DDR_SCR_WRITEL(data, reg)		\  	writel(data, SOCFPGA_FW_MPU_DDR_SCR_ADDRESS + (reg)) -#endif /* _FIREWALL_S10_ */ +void firewall_setup(void); + +#endif /* _FIREWALL_H_ */ diff --git a/arch/arm/mach-socfpga/include/mach/handoff_s10.h b/arch/arm/mach-socfpga/include/mach/handoff_s10.h index ba0f1fd1b2c..3e9b606ce20 100644 --- a/arch/arm/mach-socfpga/include/mach/handoff_s10.h +++ b/arch/arm/mach-socfpga/include/mach/handoff_s10.h @@ -26,8 +26,13 @@  #define S10_HANDOFF_OFFSET_LENGTH	0x4  #define S10_HANDOFF_OFFSET_DATA	0x10 -#define S10_HANDOFF_CLOCK_OSC	(S10_HANDOFF_BASE + 0x608) -#define S10_HANDOFF_CLOCK_FPGA	(S10_HANDOFF_BASE + 0x60C) +#ifdef CONFIG_TARGET_SOCFPGA_STRATIX10 +#define HANDOFF_CLOCK_OSC	(S10_HANDOFF_BASE + 0x608) +#define HANDOFF_CLOCK_FPGA	(S10_HANDOFF_BASE + 0x60C) +#else +#define HANDOFF_CLOCK_OSC	(S10_HANDOFF_BASE + 0x5fc) +#define HANDOFF_CLOCK_FPGA	(S10_HANDOFF_BASE + 0x600) +#endif  #define S10_HANDOFF_SIZE	4096 diff --git a/arch/arm/mach-socfpga/include/mach/misc.h b/arch/arm/mach-socfpga/include/mach/misc.h index f11f907e1ce..f6de1ccb4a0 100644 --- a/arch/arm/mach-socfpga/include/mach/misc.h +++ b/arch/arm/mach-socfpga/include/mach/misc.h @@ -41,5 +41,6 @@ void socfpga_sdram_remap_zero(void);  void do_bridge_reset(int enable, unsigned int mask);  void socfpga_pl310_clear(void); +void socfpga_get_managers_addr(void);  #endif /* _SOCFPGA_MISC_H_ */ diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager.h b/arch/arm/mach-socfpga/include/mach/reset_manager.h index 6ad037e325d..7844ad14cb6 100644 --- a/arch/arm/mach-socfpga/include/mach/reset_manager.h +++ b/arch/arm/mach-socfpga/include/mach/reset_manager.h @@ -6,6 +6,8 @@  #ifndef _RESET_MANAGER_H_  #define _RESET_MANAGER_H_ +phys_addr_t socfpga_get_rstmgr_addr(void); +  void reset_cpu(ulong addr);  void socfpga_per_reset(u32 reset, int set); @@ -41,8 +43,9 @@ void socfpga_per_reset_all(void);  #include <asm/arch/reset_manager_gen5.h>  #elif defined(CONFIG_TARGET_SOCFPGA_ARRIA10)  #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_STRATIX10) || \ +	defined(CONFIG_TARGET_SOCFPGA_AGILEX) +#include <asm/arch/reset_manager_soc64.h>  #endif  #endif /* _RESET_MANAGER_H_ */ diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h index 6623ebee65f..22e4eb33de8 100644 --- a/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h +++ b/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h @@ -14,40 +14,15 @@ int socfpga_reset_deassert_bridges_handoff(void);  void socfpga_reset_deassert_osc1wd0(void);  int socfpga_bridges_reset(void); -struct socfpga_reset_manager { -	u32	stat; -	u32	ramstat; -	u32	miscstat; -	u32	ctrl; -	u32	hdsken; -	u32	hdskreq; -	u32	hdskack; -	u32	counts; -	u32	mpumodrst; -	u32	per0modrst; -	u32	per1modrst; -	u32	brgmodrst; -	u32	sysmodrst; -	u32	coldmodrst; -	u32	nrstmodrst; -	u32	dbgmodrst; -	u32	mpuwarmmask; -	u32	per0warmmask; -	u32	per1warmmask; -	u32	brgwarmmask; -	u32	syswarmmask; -	u32	nrstwarmmask; -	u32	l3warmmask; -	u32	tststa; -	u32	tstscratch; -	u32	hdsktimeout; -	u32	hmcintr; -	u32	hmcintren; -	u32	hmcintrens; -	u32	hmcintrenr; -	u32	hmcgpout; -	u32	hmcgpin; -}; +#define RSTMGR_A10_STATUS	0x00 +#define RSTMGR_A10_CTRL		0x0c +#define RSTMGR_A10_MPUMODRST	0x20 +#define RSTMGR_A10_PER0MODRST	0x24 +#define RSTMGR_A10_PER1MODRST	0x28 +#define RSTMGR_A10_BRGMODRST	0x2c +#define RSTMGR_A10_SYSMODRST	0x30 + +#define RSTMGR_CTRL		RSTMGR_A10_CTRL  /*   * SocFPGA Arria10 reset IDs, bank mapping is as follows: diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h index f4dcb146230..d108eac1e21 100644 --- a/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h +++ b/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h @@ -11,19 +11,15 @@  void socfpga_bridges_set_handoff_regs(bool h2f, bool lwh2f, bool f2h);  void socfpga_bridges_reset(int enable); -struct socfpga_reset_manager { -	u32	status; -	u32	ctrl; -	u32	counts; -	u32	padding1; -	u32	mpu_mod_reset; -	u32	per_mod_reset; -	u32	per2_mod_reset; -	u32	brg_mod_reset; -	u32	misc_mod_reset; -	u32	padding2[12]; -	u32	tstscratch; -}; +#define RSTMGR_GEN5_STATUS	0x00 +#define RSTMGR_GEN5_CTRL	0x04 +#define RSTMGR_GEN5_MPUMODRST	0x10 +#define RSTMGR_GEN5_PERMODRST	0x14 +#define RSTMGR_GEN5_PER2MODRST	0x18 +#define RSTMGR_GEN5_BRGMODRST	0x1c +#define RSTMGR_GEN5_MISCMODRST	0x20 + +#define RSTMGR_CTRL		RSTMGR_GEN5_CTRL  /*   * SocFPGA Cyclone V/Arria V reset IDs, bank mapping is as follows: diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h b/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h deleted file mode 100644 index 452147b0173..00000000000 --- a/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h +++ /dev/null @@ -1,118 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 - * - * Copyright (C) 2016-2018 Intel Corporation <www.intel.com> - * - */ - -#ifndef	_RESET_MANAGER_S10_ -#define	_RESET_MANAGER_S10_ - -void reset_cpu(ulong addr); -int cpu_has_been_warmreset(void); - -void socfpga_bridges_reset(int enable); - -void socfpga_per_reset(u32 reset, int set); -void socfpga_per_reset_all(void); - -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; -	u32     tap_mod_reset; -	u32	padding4; -	u32	padding5; -	u32     brg_warm_mask; -	u32	padding6[3]; -	u32     tst_stat; -	u32	padding7; -	u32     hdsk_timeout; -	u32     mpul2flushtimeout; -	u32     dbghdsktimeout; -}; - -#define RSTMGR_MPUMODRST_CORE0		0 -#define RSTMGR_PER0MODRST_OCP_MASK	0x0020bf00 -#define RSTMGR_BRGMODRST_DDRSCH_MASK	0X00000040 -#define RSTMGR_BRGMODRST_FPGA2SOC_MASK	0x00000004 - -/* Watchdogs and MPU warm reset mask */ -#define RSTMGR_L4WD_MPU_WARMRESET_MASK	0x000F0F00 - -/* - * Define a reset identifier, from which a permodrst bank ID - * and reset ID can be extracted using the subsequent macros - * RSTMGR_RESET() and RSTMGR_BANK(). - */ -#define RSTMGR_BANK_OFFSET	8 -#define RSTMGR_BANK_MASK	0x7 -#define RSTMGR_RESET_OFFSET	0 -#define RSTMGR_RESET_MASK	0x1f -#define RSTMGR_DEFINE(_bank, _offset)		\ -	((_bank) << RSTMGR_BANK_OFFSET) | ((_offset) << RSTMGR_RESET_OFFSET) - -/* Extract reset ID from the reset identifier. */ -#define RSTMGR_RESET(_reset)			\ -	(((_reset) >> RSTMGR_RESET_OFFSET) & RSTMGR_RESET_MASK) - -/* Extract bank ID from the reset identifier. */ -#define RSTMGR_BANK(_reset)			\ -	(((_reset) >> RSTMGR_BANK_OFFSET) & RSTMGR_BANK_MASK) - -/* - * SocFPGA Stratix10 reset IDs, bank mapping is as follows: - * 0 ... mpumodrst - * 1 ... per0modrst - * 2 ... per1modrst - * 3 ... brgmodrst - */ -#define RSTMGR_EMAC0		RSTMGR_DEFINE(1, 0) -#define RSTMGR_EMAC1		RSTMGR_DEFINE(1, 1) -#define RSTMGR_EMAC2		RSTMGR_DEFINE(1, 2) -#define RSTMGR_USB0		RSTMGR_DEFINE(1, 3) -#define RSTMGR_USB1		RSTMGR_DEFINE(1, 4) -#define RSTMGR_NAND		RSTMGR_DEFINE(1, 5) -#define RSTMGR_SDMMC		RSTMGR_DEFINE(1, 7) -#define RSTMGR_EMAC0_OCP	RSTMGR_DEFINE(1, 8) -#define RSTMGR_EMAC1_OCP	RSTMGR_DEFINE(1, 9) -#define RSTMGR_EMAC2_OCP	RSTMGR_DEFINE(1, 10) -#define RSTMGR_USB0_OCP		RSTMGR_DEFINE(1, 11) -#define RSTMGR_USB1_OCP		RSTMGR_DEFINE(1, 12) -#define RSTMGR_NAND_OCP		RSTMGR_DEFINE(1, 13) -#define RSTMGR_SDMMC_OCP	RSTMGR_DEFINE(1, 15) -#define RSTMGR_DMA		RSTMGR_DEFINE(1, 16) -#define RSTMGR_SPIM0		RSTMGR_DEFINE(1, 17) -#define RSTMGR_SPIM1		RSTMGR_DEFINE(1, 18) -#define RSTMGR_L4WD0		RSTMGR_DEFINE(2, 0) -#define RSTMGR_L4WD1		RSTMGR_DEFINE(2, 1) -#define RSTMGR_L4WD2		RSTMGR_DEFINE(2, 2) -#define RSTMGR_L4WD3		RSTMGR_DEFINE(2, 3) -#define RSTMGR_OSC1TIMER0	RSTMGR_DEFINE(2, 4) -#define RSTMGR_I2C0		RSTMGR_DEFINE(2, 8) -#define RSTMGR_I2C1		RSTMGR_DEFINE(2, 9) -#define RSTMGR_I2C2		RSTMGR_DEFINE(2, 10) -#define RSTMGR_I2C3		RSTMGR_DEFINE(2, 11) -#define RSTMGR_I2C4		RSTMGR_DEFINE(2, 12) -#define RSTMGR_UART0		RSTMGR_DEFINE(2, 16) -#define RSTMGR_UART1		RSTMGR_DEFINE(2, 17) -#define RSTMGR_GPIO0		RSTMGR_DEFINE(2, 24) -#define RSTMGR_GPIO1		RSTMGR_DEFINE(2, 25) -#define RSTMGR_SDR		RSTMGR_DEFINE(3, 6) - -/* Create a human-readable reference to SoCFPGA reset. */ -#define SOCFPGA_RESET(_name)	RSTMGR_##_name - -#endif /* _RESET_MANAGER_S10_ */ diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_soc64.h b/arch/arm/mach-socfpga/include/mach/reset_manager_soc64.h new file mode 100644 index 00000000000..3f952bcc6e8 --- /dev/null +++ b/arch/arm/mach-socfpga/include/mach/reset_manager_soc64.h @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + *  Copyright (C) 2016-2019 Intel Corporation <www.intel.com> + */ + +#ifndef _RESET_MANAGER_SOC64_H_ +#define _RESET_MANAGER_SOC64_H_ + +void reset_deassert_peripherals_handoff(void); +int cpu_has_been_warmreset(void); +void socfpga_bridges_reset(int enable); + +#define RSTMGR_SOC64_STATUS	0x00 +#define RSTMGR_SOC64_MPUMODRST	0x20 +#define RSTMGR_SOC64_PER0MODRST	0x24 +#define RSTMGR_SOC64_PER1MODRST	0x28 +#define RSTMGR_SOC64_BRGMODRST	0x2c + +#define RSTMGR_MPUMODRST_CORE0		0 +#define RSTMGR_PER0MODRST_OCP_MASK	0x0020bf00 +#define RSTMGR_BRGMODRST_DDRSCH_MASK	0X00000040 +#define RSTMGR_BRGMODRST_FPGA2SOC_MASK	0x00000004 + +/* Watchdogs and MPU warm reset mask */ +#define RSTMGR_L4WD_MPU_WARMRESET_MASK	0x000F0F00 + +/* + * SocFPGA Stratix10 reset IDs, bank mapping is as follows: + * 0 ... mpumodrst + * 1 ... per0modrst + * 2 ... per1modrst + * 3 ... brgmodrst + */ +#define RSTMGR_L4WD0		RSTMGR_DEFINE(2, 0) +#define RSTMGR_OSC1TIMER0	RSTMGR_DEFINE(2, 4) +#define RSTMGR_UART0		RSTMGR_DEFINE(2, 16) + +#endif /* _RESET_MANAGER_SOC64_H_ */ diff --git a/arch/arm/mach-socfpga/include/mach/system_manager.h b/arch/arm/mach-socfpga/include/mach/system_manager.h index 7e76df74b7f..6de0a081317 100644 --- a/arch/arm/mach-socfpga/include/mach/system_manager.h +++ b/arch/arm/mach-socfpga/include/mach/system_manager.h @@ -6,8 +6,11 @@  #ifndef _SYSTEM_MANAGER_H_  #define _SYSTEM_MANAGER_H_ -#if defined(CONFIG_TARGET_SOCFPGA_STRATIX10) -#include <asm/arch/system_manager_s10.h> +phys_addr_t socfpga_get_sysmgr_addr(void); + +#if defined(CONFIG_TARGET_SOCFPGA_STRATIX10) || \ +	defined(CONFIG_TARGET_SOCFPGA_AGILEX) +#include <asm/arch/system_manager_soc64.h>  #else  #define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGPINMUX	BIT(0)  #define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO	BIT(1) diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h index 14052b957ca..e4fc6d2e55c 100644 --- a/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h +++ b/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h @@ -6,73 +6,33 @@  #ifndef _SYSTEM_MANAGER_ARRIA10_H_  #define _SYSTEM_MANAGER_ARRIA10_H_ -struct socfpga_system_manager { -	u32  siliconid1; -	u32  siliconid2; -	u32  wddbg; -	u32  bootinfo; -	u32  mpu_ctrl_l2_ecc; -	u32  _pad_0x14_0x1f[3]; -	u32  dma; -	u32  dma_periph; -	u32  sdmmcgrp_ctrl; -	u32  sdmmc_l3master; -	u32  nand_bootstrap; -	u32  nand_l3master; -	u32  usb0_l3master; -	u32  usb1_l3master; -	u32  emac_global; -	u32  emac[3]; -	u32  _pad_0x50_0x5f[4]; -	u32  fpgaintf_en_global; -	u32  fpgaintf_en_0; -	u32  fpgaintf_en_1; -	u32  fpgaintf_en_2; -	u32  fpgaintf_en_3; -	u32  _pad_0x74_0x7f[3]; -	u32  noc_addr_remap_value; -	u32  noc_addr_remap_set; -	u32  noc_addr_remap_clear; -	u32  _pad_0x8c_0x8f; -	u32  ecc_intmask_value; -	u32  ecc_intmask_set; -	u32  ecc_intmask_clr; -	u32  ecc_intstatus_serr; -	u32  ecc_intstatus_derr; -	u32  mpu_status_l2_ecc; -	u32  mpu_clear_l2_ecc; -	u32  mpu_status_l1_parity; -	u32  mpu_clear_l1_parity; -	u32  mpu_set_l1_parity; -	u32  _pad_0xb8_0xbf[2]; -	u32  noc_timeout; -	u32  noc_idlereq_set; -	u32  noc_idlereq_clr; -	u32  noc_idlereq_value; -	u32  noc_idleack; -	u32  noc_idlestatus; -	u32  fpga2soc_ctrl; -	u32  _pad_0xdc_0xff[9]; -	u32  tsmc_tsel_0; -	u32  tsmc_tsel_1; -	u32  tsmc_tsel_2; -	u32  tsmc_tsel_3; -	u32  _pad_0x110_0x200[60]; -	u32  romhw_ctrl; -	u32  romcode_ctrl; -	u32  romcode_cpu1startaddr; -	u32  romcode_initswstate; -	u32  romcode_initswlastld; -	u32  _pad_0x214_0x217; -	u32  warmram_enable; -	u32  warmram_datastart; -	u32  warmram_length; -	u32  warmram_execution; -	u32  warmram_crc; -	u32  _pad_0x22c_0x22f; -	u32  isw_handoff[8]; -	u32  romcode_bootromswstate[8]; -}; +#define SYSMGR_A10_WDDBG			0x08 +#define SYSMGR_A10_BOOTINFO			0x0c +#define SYSMGR_A10_DMA				0x20 +#define SYSMGR_A10_DMA_PERIPH			0x24 +#define SYSMGR_A10_SDMMC			0x28 +#define SYSMGR_A10_SDMMC_L3MASTER		0x2c +#define SYSMGR_A10_EMAC_GLOBAL			0x40 +#define SYSMGR_A10_EMAC0			0x44 +#define SYSMGR_A10_EMAC1			0x48 +#define SYSMGR_A10_EMAC2			0x4c +#define SYSMGR_A10_FPGAINTF_EN_GLOBAL		0x60 +#define SYSMGR_A10_FPGAINTF_EN0			0x64 +#define SYSMGR_A10_FPGAINTF_EN1			0x68 +#define SYSMGR_A10_FPGAINTF_EN2			0x6c +#define SYSMGR_A10_FPGAINTF_EN3			0x70 +#define SYSMGR_A10_ECC_INTMASK_VAL		0x90 +#define SYSMGR_A10_ECC_INTMASK_SET		0x94 +#define SYSMGR_A10_ECC_INTMASK_CLR		0x98 +#define SYSMGR_A10_NOC_TIMEOUT			0xc0 +#define SYSMGR_A10_NOC_IDLEREQ_SET		0xc4 +#define SYSMGR_A10_NOC_IDLEREQ_CLR		0xc8 +#define SYSMGR_A10_NOC_IDLEREQ_VAL		0xcc +#define SYSMGR_A10_NOC_IDLEACK			0xd0 +#define SYSMGR_A10_NOC_IDLESTATUS		0xd4 +#define SYSMGR_A10_FPGA2SOC_CTRL		0xd8 + +#define SYSMGR_SDMMC				SYSMGR_A10_SDMMC  #define SYSMGR_SDMMC_SMPLSEL_SHIFT	4  #define SYSMGR_BOOTINFO_BSEL_SHIFT	12 diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h index 52e59df5132..90cb465d137 100644 --- a/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h +++ b/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h @@ -13,106 +13,29 @@ void sysmgr_config_warmrstcfgio(int enable);  void sysmgr_get_pinmux_table(const u8 **table, unsigned int *table_len); -struct socfpga_system_manager { -	/* System Manager Module */ -	u32	siliconid1;			/* 0x00 */ -	u32	siliconid2; -	u32	_pad_0x8_0xf[2]; -	u32	wddbg;				/* 0x10 */ -	u32	bootinfo; -	u32	hpsinfo; -	u32	parityinj; -	/* FPGA Interface Group */ -	u32	fpgaintfgrp_gbl;		/* 0x20 */ -	u32	fpgaintfgrp_indiv; -	u32	fpgaintfgrp_module; -	u32	_pad_0x2c_0x2f; -	/* Scan Manager Group */ -	u32	scanmgrgrp_ctrl;		/* 0x30 */ -	u32	_pad_0x34_0x3f[3]; -	/* Freeze Control Group */ -	u32	frzctrl_vioctrl;		/* 0x40 */ -	u32	_pad_0x44_0x4f[3]; -	u32	frzctrl_hioctrl;		/* 0x50 */ -	u32	frzctrl_src; -	u32	frzctrl_hwctrl; -	u32	_pad_0x5c_0x5f; -	/* EMAC Group */ -	u32	emacgrp_ctrl;			/* 0x60 */ -	u32	emacgrp_l3master; -	u32	_pad_0x68_0x6f[2]; -	/* DMA Controller Group */ -	u32	dmagrp_ctrl;			/* 0x70 */ -	u32	dmagrp_persecurity; -	u32	_pad_0x78_0x7f[2]; -	/* Preloader (initial software) Group */ -	u32	iswgrp_handoff[8];		/* 0x80 */ -	u32	_pad_0xa0_0xbf[8];		/* 0xa0 */ -	/* Boot ROM Code Register Group */ -	u32	romcodegrp_ctrl;		/* 0xc0 */ -	u32	romcodegrp_cpu1startaddr; -	u32	romcodegrp_initswstate; -	u32	romcodegrp_initswlastld; -	u32	romcodegrp_bootromswstate;	/* 0xd0 */ -	u32	__pad_0xd4_0xdf[3]; -	/* Warm Boot from On-Chip RAM Group */ -	u32	romcodegrp_warmramgrp_enable;	/* 0xe0 */ -	u32	romcodegrp_warmramgrp_datastart; -	u32	romcodegrp_warmramgrp_length; -	u32	romcodegrp_warmramgrp_execution; -	u32	romcodegrp_warmramgrp_crc;	/* 0xf0 */ -	u32	__pad_0xf4_0xff[3]; -	/* Boot ROM Hardware Register Group */ -	u32	romhwgrp_ctrl;			/* 0x100 */ -	u32	_pad_0x104_0x107; -	/* SDMMC Controller Group */ -	u32	sdmmcgrp_ctrl; -	u32	sdmmcgrp_l3master; -	/* NAND Flash Controller Register Group */ -	u32	nandgrp_bootstrap;		/* 0x110 */ -	u32	nandgrp_l3master; -	/* USB Controller Group */ -	u32	usbgrp_l3master; -	u32	_pad_0x11c_0x13f[9]; -	/* ECC Management Register Group */ -	u32	eccgrp_l2;			/* 0x140 */ -	u32	eccgrp_ocram; -	u32	eccgrp_usb0; -	u32	eccgrp_usb1; -	u32	eccgrp_emac0;			/* 0x150 */ -	u32	eccgrp_emac1; -	u32	eccgrp_dma; -	u32	eccgrp_can0; -	u32	eccgrp_can1;			/* 0x160 */ -	u32	eccgrp_nand; -	u32	eccgrp_qspi; -	u32	eccgrp_sdmmc; -	u32	_pad_0x170_0x3ff[164]; -	/* Pin Mux Control Group */ -	u32	emacio[20];			/* 0x400 */ -	u32	flashio[12];			/* 0x450 */ -	u32	generalio[28];			/* 0x480 */ -	u32	_pad_0x4f0_0x4ff[4]; -	u32	mixed1io[22];			/* 0x500 */ -	u32	mixed2io[8];			/* 0x558 */ -	u32	gplinmux[23];			/* 0x578 */ -	u32	gplmux[71];			/* 0x5d4 */ -	u32	nandusefpga;			/* 0x6f0 */ -	u32	_pad_0x6f4; -	u32	rgmii1usefpga;			/* 0x6f8 */ -	u32	_pad_0x6fc_0x700[2]; -	u32	i2c0usefpga;			/* 0x704 */ -	u32	sdmmcusefpga;			/* 0x708 */ -	u32	_pad_0x70c_0x710[2]; -	u32	rgmii0usefpga;			/* 0x714 */ -	u32	_pad_0x718_0x720[3]; -	u32	i2c3usefpga;			/* 0x724 */ -	u32	i2c2usefpga;			/* 0x728 */ -	u32	i2c1usefpga;			/* 0x72c */ -	u32	spim1usefpga;			/* 0x730 */ -	u32	_pad_0x734; -	u32	spim0usefpga;			/* 0x738 */ -}; +#define SYSMGR_GEN5_WDDBG			0x10 +#define SYSMGR_GEN5_BOOTINFO			0x14 +#define SYSMGR_GEN5_FPGAINFGRP_GBL		0x20 +#define SYSMGR_GEN5_FPGAINFGRP_INDIV		0x24 +#define SYSMGR_GEN5_FPGAINFGRP_MODULE		0x28 +#define SYSMGR_GEN5_SCANMGRGRP_CTRL		0x30 +#define SYSMGR_GEN5_ISWGRP_HANDOFF		0x80 +#define SYSMGR_GEN5_ROMCODEGRP_CTRL		0xc0 +#define SYSMGR_GEN5_WARMRAMGRP_EN		0xe0 +#define SYSMGR_GEN5_SDMMC			0x108 +#define SYSMGR_GEN5_ECCGRP_OCRAM		0x144 +#define SYSMGR_GEN5_EMACIO			0x400 +#define SYSMGR_GEN5_NAND_USEFPGA		0x6f0 +#define SYSMGR_GEN5_RGMII0_USEFPGA		0x6f8 +#define SYSMGR_GEN5_SDMMC_USEFPGA		0x708 +#define SYSMGR_GEN5_RGMII1_USEFPGA		0x704 +#define SYSMGR_GEN5_SPIM1_USEFPGA		0x730 +#define SYSMGR_GEN5_SPIM0_USEFPGA		0x738 + +#define SYSMGR_SDMMC				SYSMGR_GEN5_SDMMC + +#define SYSMGR_ISWGRP_HANDOFF_OFFSET(i)	\ +	SYSMGR_GEN5_ISWGRP_HANDOFF + ((i) * sizeof(u32))  #endif  #define SYSMGR_SDMMC_SMPLSEL_SHIFT	3 diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_s10.h b/arch/arm/mach-socfpga/include/mach/system_manager_s10.h deleted file mode 100644 index 297f9e1999d..00000000000 --- a/arch/arm/mach-socfpga/include/mach/system_manager_s10.h +++ /dev/null @@ -1,176 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 - * - * Copyright (C) 2016-2018 Intel Corporation <www.intel.com> - * - */ - -#ifndef	_SYSTEM_MANAGER_S10_ -#define	_SYSTEM_MANAGER_S10_ - -void sysmgr_pinmux_init(void); -void populate_sysmgr_fpgaintf_module(void); -void populate_sysmgr_pinmux(void); -void sysmgr_pinmux_table_sel(const u32 **table, unsigned int *table_len); -void sysmgr_pinmux_table_ctrl(const u32 **table, unsigned int *table_len); -void sysmgr_pinmux_table_fpga(const u32 **table, unsigned int *table_len); -void sysmgr_pinmux_table_delay(const u32 **table, unsigned int *table_len); - -struct socfpga_system_manager { -	/* System Manager Module */ -	u32	siliconid1;			/* 0x00 */ -	u32	siliconid2; -	u32	wddbg; -	u32	_pad_0xc; -	u32	mpu_status;			/* 0x10 */ -	u32	mpu_ace; -	u32	_pad_0x18_0x1c[2]; -	u32	dma;				/* 0x20 */ -	u32	dma_periph; -	/* SDMMC Controller Group */ -	u32	sdmmcgrp_ctrl; -	u32	sdmmcgrp_l3master; -	/* NAND Flash Controller Register Group */ -	u32	nandgrp_bootstrap;		/* 0x30 */ -	u32	nandgrp_l3master; -	/* USB Controller Group */ -	u32	usb0_l3master; -	u32	usb1_l3master; -	/* EMAC Group */ -	u32	emac_gbl;			/* 0x40 */ -	u32	emac0; -	u32	emac1; -	u32	emac2; -	u32	emac0_ace;			/* 0x50 */ -	u32	emac1_ace; -	u32	emac2_ace; -	u32	nand_axuser; -	u32	_pad_0x60_0x64[2];		/* 0x60 */ -	/* FPGA interface Group */ -	u32	fpgaintf_en_1; -	u32	fpgaintf_en_2; -	u32	fpgaintf_en_3;			/* 0x70 */ -	u32	dma_l3master; -	u32	etr_l3master; -	u32	_pad_0x7c; -	u32	sec_ctrl_slt;			/* 0x80 */ -	u32	osc_trim; -	u32	_pad_0x88_0x8c[2]; -	/* ECC Group */ -	u32	ecc_intmask_value;		/* 0x90 */ -	u32	ecc_intmask_set; -	u32	ecc_intmask_clr; -	u32	ecc_intstatus_serr; -	u32	ecc_intstatus_derr;		/* 0xa0 */ -	u32	_pad_0xa4_0xac[3]; -	u32	noc_addr_remap;			/* 0xb0 */ -	u32	hmc_clk; -	u32	io_pa_ctrl; -	u32	_pad_0xbc; -	/* NOC Group */ -	u32	noc_timeout;			/* 0xc0 */ -	u32	noc_idlereq_set; -	u32	noc_idlereq_clr; -	u32	noc_idlereq_value; -	u32	noc_idleack;			/* 0xd0 */ -	u32	noc_idlestatus; -	u32	fpga2soc_ctrl; -	u32	fpga_config; -	u32	iocsrclk_gate;			/* 0xe0 */ -	u32	gpo; -	u32	gpi; -	u32	_pad_0xec; -	u32	mpu;				/* 0xf0 */ -	u32	sdm_hps_spare; -	u32	hps_sdm_spare; -	u32	_pad_0xfc_0x1fc[65]; -	/* Boot scratch register group */ -	u32	boot_scratch_cold0;		/* 0x200 */ -	u32	boot_scratch_cold1; -	u32	boot_scratch_cold2; -	u32	boot_scratch_cold3; -	u32	boot_scratch_cold4;		/* 0x210 */ -	u32	boot_scratch_cold5; -	u32	boot_scratch_cold6; -	u32	boot_scratch_cold7; -	u32	boot_scratch_cold8;		/* 0x220 */ -	u32	boot_scratch_cold9; -	u32	_pad_0x228_0xffc[886]; -	/* Pin select and pin control group */ -	u32	pinsel0[40];			/* 0x1000 */ -	u32	_pad_0x10a0_0x10fc[24]; -	u32	pinsel40[8]; -	u32	_pad_0x1120_0x112c[4]; -	u32	ioctrl0[28]; -	u32	_pad_0x11a0_0x11fc[24]; -	u32	ioctrl28[20]; -	u32	_pad_0x1250_0x12fc[44]; -	/* Use FPGA mux */ -	u32	rgmii0usefpga;			/* 0x1300 */ -	u32	rgmii1usefpga; -	u32	rgmii2usefpga; -	u32	i2c0usefpga; -	u32	i2c1usefpga; -	u32	i2c_emac0_usefpga; -	u32	i2c_emac1_usefpga; -	u32	i2c_emac2_usefpga; -	u32	nandusefpga; -	u32	_pad_0x1324; -	u32	spim0usefpga; -	u32	spim1usefpga; -	u32	spis0usefpga; -	u32	spis1usefpga; -	u32	uart0usefpga; -	u32	uart1usefpga; -	u32	mdio0usefpga; -	u32	mdio1usefpga; -	u32	mdio2usefpga; -	u32	_pad_0x134c; -	u32	jtagusefpga; -	u32	sdmmcusefpga; -	u32	hps_osc_clk; -	u32	_pad_0x135c_0x13fc[41]; -	u32	iodelay0[40]; -	u32	_pad_0x14a0_0x14fc[24]; -	u32	iodelay40[8]; - -}; - -#define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGPINMUX	BIT(0) -#define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO	BIT(1) -#define SYSMGR_ECC_OCRAM_EN	BIT(0) -#define SYSMGR_ECC_OCRAM_SERR	BIT(3) -#define SYSMGR_ECC_OCRAM_DERR	BIT(4) -#define SYSMGR_FPGAINTF_USEFPGA	0x1 - -#define SYSMGR_FPGAINTF_NAND	BIT(4) -#define SYSMGR_FPGAINTF_SDMMC	BIT(8) -#define SYSMGR_FPGAINTF_SPIM0	BIT(16) -#define SYSMGR_FPGAINTF_SPIM1	BIT(24) -#define SYSMGR_FPGAINTF_EMAC0	BIT(0) -#define SYSMGR_FPGAINTF_EMAC1	BIT(8) -#define SYSMGR_FPGAINTF_EMAC2	BIT(16) - -#define SYSMGR_SDMMC_SMPLSEL_SHIFT	4 -#define SYSMGR_SDMMC_DRVSEL_SHIFT	0 - -/* EMAC Group Bit definitions */ -#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII	0x0 -#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII		0x1 -#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RMII		0x2 - -#define SYSMGR_EMACGRP_CTRL_PHYSEL0_LSB			0 -#define SYSMGR_EMACGRP_CTRL_PHYSEL1_LSB			2 -#define SYSMGR_EMACGRP_CTRL_PHYSEL_MASK			0x3 - -#define SYSMGR_NOC_H2F_MSK		0x00000001 -#define SYSMGR_NOC_LWH2F_MSK		0x00000010 -#define SYSMGR_HMC_CLK_STATUS_MSK	0x00000001 - -#define SYSMGR_DMA_IRQ_NS		0xFF000000 -#define SYSMGR_DMA_MGR_NS		0x00010000 - -#define SYSMGR_DMAPERIPH_ALL_NS		0xFFFFFFFF - -#define SYSMGR_WDDBG_PAUSE_ALL_CPU	0x0F0F0F0F - -#endif /* _SYSTEM_MANAGER_S10_ */ diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_soc64.h b/arch/arm/mach-socfpga/include/mach/system_manager_soc64.h new file mode 100644 index 00000000000..3a6c9515c64 --- /dev/null +++ b/arch/arm/mach-socfpga/include/mach/system_manager_soc64.h @@ -0,0 +1,123 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2019 Intel Corporation <www.intel.com> + */ + +#ifndef _SYSTEM_MANAGER_SOC64_H_ +#define _SYSTEM_MANAGER_SOC64_H_ + +void sysmgr_pinmux_init(void); +void populate_sysmgr_fpgaintf_module(void); +void populate_sysmgr_pinmux(void); +void sysmgr_pinmux_table_sel(const u32 **table, unsigned int *table_len); +void sysmgr_pinmux_table_ctrl(const u32 **table, unsigned int *table_len); +void sysmgr_pinmux_table_fpga(const u32 **table, unsigned int *table_len); +void sysmgr_pinmux_table_delay(const u32 **table, unsigned int *table_len); + +#define SYSMGR_SOC64_WDDBG			0x08 +#define SYSMGR_SOC64_DMA			0x20 +#define SYSMGR_SOC64_DMA_PERIPH			0x24 +#define SYSMGR_SOC64_SDMMC			0x28 +#define SYSMGR_SOC64_SDMMC_L3MASTER		0x2c +#define SYSMGR_SOC64_EMAC_GLOBAL		0x40 +#define SYSMGR_SOC64_EMAC0			0x44 +#define SYSMGR_SOC64_EMAC1			0x48 +#define SYSMGR_SOC64_EMAC2			0x4c +#define SYSMGR_SOC64_EMAC0_ACE			0x50 +#define SYSMGR_SOC64_EMAC1_ACE			0x54 +#define SYSMGR_SOC64_EMAC2_ACE			0x58 +#define SYSMGR_SOC64_NAND_AXUSER		0x5c +#define SYSMGR_SOC64_FPGAINTF_EN1		0x68 +#define SYSMGR_SOC64_FPGAINTF_EN2		0x6c +#define SYSMGR_SOC64_FPGAINTF_EN3		0x70 +#define SYSMGR_SOC64_DMA_L3MASTER		0x74 +#define SYSMGR_SOC64_HMC_CLK			0xb4 +#define SYSMGR_SOC64_IO_PA_CTRL			0xb8 +#define SYSMGR_SOC64_NOC_TIMEOUT		0xc0 +#define SYSMGR_SOC64_NOC_IDLEREQ_SET		0xc4 +#define SYSMGR_SOC64_NOC_IDLEREQ_CLR		0xc8 +#define SYSMGR_SOC64_NOC_IDLEREQ_VAL		0xcc +#define SYSMGR_SOC64_NOC_IDLEACK		0xd0 +#define SYSMGR_SOC64_NOC_IDLESTATUS		0xd4 +#define SYSMGR_SOC64_FPGA2SOC_CTRL		0xd8 +#define SYSMGR_SOC64_FPGA_CONFIG		0xdc +#define SYSMGR_SOC64_IOCSRCLK_GATE		0xe0 +#define SYSMGR_SOC64_GPO			0xe4 +#define SYSMGR_SOC64_GPI			0xe8 +#define SYSMGR_SOC64_MPU			0xf0 +#define SYSMGR_SOC64_BOOT_SCRATCH_COLD0		0x200 +#define SYSMGR_SOC64_BOOT_SCRATCH_COLD1		0x204 +#define SYSMGR_SOC64_BOOT_SCRATCH_COLD2		0x208 +#define SYSMGR_SOC64_BOOT_SCRATCH_COLD3		0x20c +#define SYSMGR_SOC64_BOOT_SCRATCH_COLD4		0x210 +#define SYSMGR_SOC64_BOOT_SCRATCH_COLD5		0x214 +#define SYSMGR_SOC64_BOOT_SCRATCH_COLD6		0x218 +#define SYSMGR_SOC64_BOOT_SCRATCH_COLD7		0x21c +#define SYSMGR_SOC64_BOOT_SCRATCH_COLD8		0x220 +#define SYSMGR_SOC64_BOOT_SCRATCH_COLD9		0x224 +#define SYSMGR_SOC64_PINSEL0			0x1000 +#define SYSMGR_SOC64_IOCTRL0			0x1130 +#define SYSMGR_SOC64_EMAC0_USEFPGA		0x1300 +#define SYSMGR_SOC64_EMAC1_USEFPGA		0x1304 +#define SYSMGR_SOC64_EMAC2_USEFPGA		0x1308 +#define SYSMGR_SOC64_I2C0_USEFPGA		0x130c +#define SYSMGR_SOC64_I2C1_USEFPGA		0x1310 +#define SYSMGR_SOC64_I2C_EMAC0_USEFPGA		0x1314 +#define SYSMGR_SOC64_I2C_EMAC1_USEFPGA		0x1318 +#define SYSMGR_SOC64_I2C_EMAC2_USEFPGA		0x131c +#define SYSMGR_SOC64_NAND_USEFPGA		0x1320 +#define SYSMGR_SOC64_SPIM0_USEFPGA		0x1328 +#define SYSMGR_SOC64_SPIM1_USEFPGA		0x132c +#define SYSMGR_SOC64_SPIS0_USEFPGA		0x1330 +#define SYSMGR_SOC64_SPIS1_USEFPGA		0x1334 +#define SYSMGR_SOC64_UART0_USEFPGA		0x1338 +#define SYSMGR_SOC64_UART1_USEFPGA		0x133c +#define SYSMGR_SOC64_MDIO0_USEFPGA		0x1340 +#define SYSMGR_SOC64_MDIO1_USEFPGA		0x1344 +#define SYSMGR_SOC64_MDIO2_USEFPGA		0x1348 +#define SYSMGR_SOC64_JTAG_USEFPGA		0x1350 +#define SYSMGR_SOC64_SDMMC_USEFPGA		0x1354 +#define SYSMGR_SOC64_HPS_OSC_CLK		0x1358 +#define SYSMGR_SOC64_IODELAY0			0x1400 + +#define SYSMGR_SDMMC				SYSMGR_SOC64_SDMMC + +#define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGPINMUX	BIT(0) +#define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO	BIT(1) +#define SYSMGR_ECC_OCRAM_EN	BIT(0) +#define SYSMGR_ECC_OCRAM_SERR	BIT(3) +#define SYSMGR_ECC_OCRAM_DERR	BIT(4) +#define SYSMGR_FPGAINTF_USEFPGA	0x1 + +#define SYSMGR_FPGAINTF_NAND	BIT(4) +#define SYSMGR_FPGAINTF_SDMMC	BIT(8) +#define SYSMGR_FPGAINTF_SPIM0	BIT(16) +#define SYSMGR_FPGAINTF_SPIM1	BIT(24) +#define SYSMGR_FPGAINTF_EMAC0	BIT(0) +#define SYSMGR_FPGAINTF_EMAC1	BIT(8) +#define SYSMGR_FPGAINTF_EMAC2	BIT(16) + +#define SYSMGR_SDMMC_SMPLSEL_SHIFT	4 +#define SYSMGR_SDMMC_DRVSEL_SHIFT	0 + +/* EMAC Group Bit definitions */ +#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII	0x0 +#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII		0x1 +#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RMII		0x2 + +#define SYSMGR_EMACGRP_CTRL_PHYSEL0_LSB			0 +#define SYSMGR_EMACGRP_CTRL_PHYSEL1_LSB			2 +#define SYSMGR_EMACGRP_CTRL_PHYSEL_MASK			0x3 + +#define SYSMGR_NOC_H2F_MSK		0x00000001 +#define SYSMGR_NOC_LWH2F_MSK		0x00000010 +#define SYSMGR_HMC_CLK_STATUS_MSK	0x00000001 + +#define SYSMGR_DMA_IRQ_NS		0xFF000000 +#define SYSMGR_DMA_MGR_NS		0x00010000 + +#define SYSMGR_DMAPERIPH_ALL_NS		0xFFFFFFFF + +#define SYSMGR_WDDBG_PAUSE_ALL_CPU	0x0F0F0F0F + +#endif /* _SYSTEM_MANAGER_SOC64_H_ */ | 
