socfpga: Creating driver for Reset Manager
PATCH v6 1/1 socfpga: Creating driver for Reset Manager
Consolidating reset code into reset_manager.c. Also separating reset configuration for virtual target and real hardware Cyclone V development kit
---
Changes for v6:
- Re-shuffle the change list
Changes for v5:
- Updated the license header for reset_manager.c to SPDX Changes for v4:
- Updated the license header for reset_manager.c Changes for v3:
- Added change log for each revision change
- Removed the < > between the date of copyright header Changes for v2:
- Fixed the long subject of the patch
- Consolidated the reset_manager structure between virtual target and dev kit
--- arch/arm/cpu/armv7/socfpga/Makefile | 2 +- arch/arm/cpu/armv7/socfpga/misc.c | 27 -------------- arch/arm/cpu/armv7/socfpga/reset_manager.c | 41 +++++++++++++++++++++ arch/arm/include/asm/arch-socfpga/reset_manager.h | 10 +++-- 4 files changed, 49 insertions(+), 31 deletions(-) create mode 100644 arch/arm/cpu/armv7/socfpga/reset_manager.c
arch/arm/cpu/armv7/socfpga/Makefile +1 -1
@@ -13,7 +13,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(SOC).o SOBJS := lowlevel_init.o -COBJS-y := misc.o timer.o +COBJS-y := misc.o timer.o reset_manager.o COBJS-$(CONFIG_SPL_BUILD) += spl.o COBJS := $(COBJS-y)
arch/arm/cpu/armv7/socfpga/misc.c +0 -27
@@ -6,36 +6,9 @@#include <common.h> #include <asm/io.h> -#include <asm/arch/reset_manager.h> DECLARE_GLOBAL_DATA_PTR ; -static const struct socfpga_reset_manager *reset_manager_base = - (void *)SOCFPGA_RSTMGR_ADDRESS ; - -/* -* Write the reset manager register to cause reset -*/ -void reset_cpu (ulong addr) -{ -/* request a warm reset */ -writel (RSTMGR_CTRL_SWWARMRSTREQ_LSB , &reset_manager_base->ctrl); -/* -* infinite loop here as watchdog will trigger and reset -* the processor -*/ -while (1 ) - ; -} - -/* -* Release peripherals from reset based on handoff -*/ -void reset_deassert_peripherals_handoff (void ) -{ -writel (0 , &reset_manager_base->per_mod_reset); -} -int dram_init (void ) { gd->ram_size =get_ram_size ((long *)PHYS_SDRAM_1 ,PHYS_SDRAM_1_SIZE );
arch/arm/cpu/armv7/socfpga/reset_manager.c new file +41 -0
41 lines not on this page · raw message
arch/arm/include/asm/arch-socfpga/reset_manager.h +7 -3
@@ -11,16 +11,20 @@ void reset_cpu(ulong addr);void reset_deassert_peripherals_handoff (void );struct socfpga_reset_manager { -u32 padding1; +u32 status;u32 ctrl; -u32 padding2; -u32 padding3; +u32 counts; +u32 padding1;u32 mpu_mod_reset;u32 per_mod_reset;u32 per2_mod_reset;u32 brg_mod_reset; }; +#if defined(CONFIG_SOCFPGA_VIRTUAL_TARGET ) +#define RSTMGR_CTRL_SWWARMRSTREQ_LSB 2 +#else #define RSTMGR_CTRL_SWWARMRSTREQ_LSB 1 +#endif #endif /* _RESET_MANAGER_H_ */
Signature · 1 line
1.7.9.5
PATCH v6 1/1 socfpga: Creating driver for Reset Manager
Hi Chin,
Quoted 152 lines · Chin Liang See
Consolidating reset code into
reset_manager.c. Also separating reset configuration for virtual target and real hardware Cyclone V development kitSigned-off-by Chin Liang See <[email protected]>Reviewed-by Pavel Machek <[email protected]>Cc Wolfgang Denk <[email protected]>Cc Pavel Machek <[email protected]>Cc Dinh Nguyen <[email protected]>Cc Tom Rini <[email protected]>Cc Albert Aribaud <[email protected]>---
Changes for v6:
- Re-shuffle the change list
Changes for v5:
- Updated the license header forreset_manager.cto SPDX Changes for v4:
- Updated the license header forreset_manager.cChanges for v3:
- Added change log for each revision change
- Removed the < > between the date of copyright header Changes for v2:
- Fixed the long subject of the patch
- Consolidated thereset_managerstructure between virtual target and dev kit--- arch/arm/cpu/armv7/socfpga/Makefile | 2 +- arch/arm/cpu/armv7/socfpga/misc.c | 27 -------------- arch/arm/cpu/armv7/socfpga/reset_manager.c | 41 +++++++++++++++++++++ arch/arm/include/asm/arch-socfpga/reset_manager.h | 10 +++-- 4 files changed, 49 insertions(+), 31 deletions(-) create mode 100644 arch/arm/cpu/armv7/socfpga/reset_manager.carch/arm/cpu/armv7/socfpga/Makefile +1
-1@@ -13,7 +13,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(SOC).o SOBJS := lowlevel_init.o -COBJS-y := misc.o timer.o +COBJS-y := misc.o timer.o reset_manager.o COBJS-$(CONFIG_SPL_BUILD) += spl.o COBJS := $(COBJS-y)arch/arm/cpu/armv7/socfpga/misc.c +0
-27@@ -6,36 +6,9 @@#include <common.h> #include <asm/io.h> -#include <asm/arch/reset_manager.h> DECLARE_GLOBAL_DATA_PTR ; -static const struct socfpga_reset_manager *reset_manager_base = - (void *)SOCFPGA_RSTMGR_ADDRESS ; - -/* -* Write the reset manager register to cause reset -*/ -void reset_cpu (ulong addr) -{ -/* request a warm reset */ -writel (RSTMGR_CTRL_SWWARMRSTREQ_LSB , &reset_manager_base->ctrl); -/* -* infinite loop here as watchdog will trigger and reset -* the processor -*/ -while (1 ) - ; -} - -/* -* Release peripherals from reset based on handoff -*/ -void reset_deassert_peripherals_handoff (void ) -{ -writel (0 , &reset_manager_base->per_mod_reset); -} -int dram_init (void ) { gd->ram_size =get_ram_size ((long *)PHYS_SDRAM_1 ,PHYS_SDRAM_1_SIZE );arch/arm/cpu/armv7/socfpga/reset_manager.c new file +41
-0@@ -0,0 +1,41 @@ +/* +* Copyright (C) 2013 Altera Corporation <www.altera.com> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + + +#include <common.h> +#include <asm/io.h> +#include <asm/arch/reset_manager.h> + +DECLARE_GLOBAL_DATA_PTR ; + +static const struct socfpga_reset_manager *reset_manager_base = + (void *)SOCFPGA_RSTMGR_ADDRESS ; + +/* +* Write the reset manager register to cause reset +*/ +void reset_cpu (ulong addr) +{ +/* request a warm reset */ +writel ((1 <<RSTMGR_CTRL_SWWARMRSTREQ_LSB ), + &reset_manager_base->ctrl); +/* +* infinite loop here as watchdog will trigger and reset +* the processor +*/ +while (1 ) + ; +} + +/* +* Release peripherals from reset based on handoff +*/ +void reset_deassert_peripherals_handoff (void ) +{ +writel (0 , &reset_manager_base->per_mod_reset); +} + +arch/arm/include/asm/arch-socfpga/reset_manager.h +3
-3@@ -11,16 +11,20 @@ void reset_cpu(ulong addr);void reset_deassert_peripherals_handoff (void );struct socfpga_reset_manager { -u32 padding1; +u32 status;u32 ctrl; -u32 padding2; -u32 padding3; +u32 counts; +u32 padding1;u32 mpu_mod_reset;u32 per_mod_reset;u32 per2_mod_reset;
arch/arm/include/asm/arch-socfpga/reset_manager.h void reset_cpu(ulong addr); · line 30
Quoted 10 lines
arch/arm/include/asm/arch-socfpga/reset_manager.h +4
-0u32 brg_mod_reset; }; +#if defined(CONFIG_SOCFPGA_VIRTUAL_TARGET ) +#define RSTMGR_CTRL_SWWARMRSTREQ_LSB 2 +#else #define RSTMGR_CTRL_SWWARMRSTREQ_LSB 1 +#endif #endif /* _RESET_MANAGER_H_ */
Applied to u-boot-arm/master, thanks!
Amicalement,
Signature · 1 line
Albert.