svn commit: r332002 - in head/sys/arm/mv: . armada

Marcin Wojtas mw at FreeBSD.org
Wed Apr 4 10:14:44 UTC 2018


Author: mw
Date: Wed Apr  4 10:14:43 2018
New Revision: 332002
URL: https://svnweb.freebsd.org/changeset/base/332002

Log:
  Make Marvell Armada reset registers usage generic
  
  Define reset registers for both Armada38X and ArmadaXP and
  choose proper one during runtime based on information from FDT.
  
  Submitted by: Rafal Kozik <rk at semihalf.com>
  Obtained from: Semihalf
  Sponsored by: Stormshield
  Differential Revision: https://reviews.freebsd.org/D14745

Modified:
  head/sys/arm/mv/armada/wdt.c
  head/sys/arm/mv/mv_armv7_machdep.c
  head/sys/arm/mv/mvreg.h
  head/sys/arm/mv/timer.c

Modified: head/sys/arm/mv/armada/wdt.c
==============================================================================
--- head/sys/arm/mv/armada/wdt.c	Wed Apr  4 09:11:15 2018	(r332001)
+++ head/sys/arm/mv/armada/wdt.c	Wed Apr  4 10:14:43 2018	(r332002)
@@ -245,9 +245,9 @@ mv_wdt_enable_armada_38x_xp_helper()
 	val |= (WD_GLOBAL_MASK | WD_CPU0_MASK);
 	write_cpu_mp_clocks(WD_RSTOUTn_MASK, val);
 
-	val = read_cpu_misc(RSTOUTn_MASK);
+	val = read_cpu_misc(RSTOUTn_MASK_ARMV7);
 	val &= ~RSTOUTn_MASK_WD;
-	write_cpu_misc(RSTOUTn_MASK, val);
+	write_cpu_misc(RSTOUTn_MASK_ARMV7, val);
 }
 
 static void
@@ -305,9 +305,9 @@ mv_wdt_disable_armada_38x_xp_helper(void)
 	val &= ~(WD_GLOBAL_MASK | WD_CPU0_MASK);
 	write_cpu_mp_clocks(WD_RSTOUTn_MASK, val);
 
-	val = read_cpu_misc(RSTOUTn_MASK);
+	val = read_cpu_misc(RSTOUTn_MASK_ARMV7);
 	val |= RSTOUTn_MASK_WD;
-	write_cpu_misc(RSTOUTn_MASK, RSTOUTn_MASK_WD);
+	write_cpu_misc(RSTOUTn_MASK_ARMV7, RSTOUTn_MASK_WD);
 }
 
 static void

Modified: head/sys/arm/mv/mv_armv7_machdep.c
==============================================================================
--- head/sys/arm/mv/mv_armv7_machdep.c	Wed Apr  4 09:11:15 2018	(r332001)
+++ head/sys/arm/mv/mv_armv7_machdep.c	Wed Apr  4 10:14:43 2018	(r332002)
@@ -439,8 +439,8 @@ static void
 mv_cpu_reset(platform_t plat)
 {
 
-	write_cpu_misc(RSTOUTn_MASK, SOFT_RST_OUT_EN);
-	write_cpu_misc(SYSTEM_SOFT_RESET, SYS_SOFT_RST);
+	write_cpu_misc(RSTOUTn_MASK_ARMV7, SOFT_RST_OUT_EN_ARMV7);
+	write_cpu_misc(SYSTEM_SOFT_RESET_ARMV7, SYS_SOFT_RST_ARMV7);
 }
 
 #if defined(SOC_MV_ARMADA38X)

Modified: head/sys/arm/mv/mvreg.h
==============================================================================
--- head/sys/arm/mv/mvreg.h	Wed Apr  4 09:11:15 2018	(r332001)
+++ head/sys/arm/mv/mvreg.h	Wed Apr  4 10:14:43 2018	(r332002)
@@ -103,17 +103,15 @@
 /*
  * System reset
  */
-#if defined(SOC_MV_ARMADAXP) || defined(SOC_MV_ARMADA38X)
-#define RSTOUTn_MASK		0x60
-#define SYSTEM_SOFT_RESET	0x64
-#define SOFT_RST_OUT_EN		0x00000001
-#define SYS_SOFT_RST		0x00000001
-#else
+#define	RSTOUTn_MASK_ARMV7	0x60
+#define	SYSTEM_SOFT_RESET_ARMV7	0x64
+#define	SOFT_RST_OUT_EN_ARMV7	0x00000001
+#define	SYS_SOFT_RST_ARMV7	0x00000001
+
 #define RSTOUTn_MASK		0x8
 #define SOFT_RST_OUT_EN		0x00000004
 #define SYSTEM_SOFT_RESET	0xc
 #define SYS_SOFT_RST		0x00000001
-#endif
 #define RSTOUTn_MASK_WD		0x400
 #define WD_RSTOUTn_MASK		0x4
 #define WD_GLOBAL_MASK		0x00000100

Modified: head/sys/arm/mv/timer.c
==============================================================================
--- head/sys/arm/mv/timer.c	Wed Apr  4 09:11:15 2018	(r332001)
+++ head/sys/arm/mv/timer.c	Wed Apr  4 10:14:43 2018	(r332002)
@@ -411,9 +411,9 @@ mv_watchdog_enable_armadaxp(void)
 	val |= (WD_GLOBAL_MASK | WD_CPU0_MASK);
 	write_cpu_mp_clocks(WD_RSTOUTn_MASK, val);
 
-	val = read_cpu_misc(RSTOUTn_MASK);
+	val = read_cpu_misc(RSTOUTn_MASK_ARMV7);
 	val &= ~RSTOUTn_MASK_WD;
-	write_cpu_misc(RSTOUTn_MASK, val);
+	write_cpu_misc(RSTOUTn_MASK_ARMV7, val);
 
 	val = mv_get_timer_control();
 	val |= CPU_TIMER2_EN | CPU_TIMER2_AUTO | CPU_TIMER_WD_25MHZ_EN;
@@ -451,9 +451,9 @@ mv_watchdog_disable_armadaxp(void)
 	val &= ~(WD_GLOBAL_MASK | WD_CPU0_MASK);
 	write_cpu_mp_clocks(WD_RSTOUTn_MASK, val);
 
-	val = read_cpu_misc(RSTOUTn_MASK);
+	val = read_cpu_misc(RSTOUTn_MASK_ARMV7);
 	val |= RSTOUTn_MASK_WD;
-	write_cpu_misc(RSTOUTn_MASK, RSTOUTn_MASK_WD);
+	write_cpu_misc(RSTOUTn_MASK_ARMV7, RSTOUTn_MASK_WD);
 
 	irq_cause = read_cpu_ctrl(BRIDGE_IRQ_CAUSE);
 	irq_cause &= IRQ_TIMER_WD_CLR;


More information about the svn-src-all mailing list