All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 2/2] nios2: Split timer code into timer.c
Date: Fri,  4 Sep 2015 11:51:16 +0200	[thread overview]
Message-ID: <1441360276-4792-2-git-send-email-marex@denx.de> (raw)
In-Reply-To: <1441360276-4792-1-git-send-email-marex@denx.de>

Move the timer code from interrupts.c into timer.c . Eliminate the
installation of timer interrupt handler, which is no longer used.

Signed-off-by: Marek Vasut <marex@denx.de>
---
 arch/nios2/cpu/Makefile         |  2 +-
 arch/nios2/cpu/interrupts.c     | 84 +----------------------------------------
 arch/nios2/cpu/timer.c          | 69 +++++++++++++++++++++++++++++++++
 include/configs/nios2-generic.h |  3 +-
 4 files changed, 72 insertions(+), 86 deletions(-)
 create mode 100644 arch/nios2/cpu/timer.c

diff --git a/arch/nios2/cpu/Makefile b/arch/nios2/cpu/Makefile
index 3fe7847..c85e261 100644
--- a/arch/nios2/cpu/Makefile
+++ b/arch/nios2/cpu/Makefile
@@ -7,5 +7,5 @@
 
 extra-y	= start.o
 obj-y	= exceptions.o
-obj-y	+= cpu.o interrupts.o sysid.o traps.o
+obj-y	+= cpu.o interrupts.o sysid.o timer.o traps.o
 obj-y	+= fdt.o
diff --git a/arch/nios2/cpu/interrupts.c b/arch/nios2/cpu/interrupts.c
index 36d3ef7..9d85eb0 100644
--- a/arch/nios2/cpu/interrupts.c
+++ b/arch/nios2/cpu/interrupts.c
@@ -14,36 +14,8 @@
 #include <asm/ptrace.h>
 #include <common.h>
 #include <command.h>
-#include <watchdog.h>
-#ifdef CONFIG_STATUS_LED
-#include <status_led.h>
-#endif
-
-struct nios_timer {
-	u32	status;		/* Timer status reg */
-	u32	control;	/* Timer control reg */
-	u32	periodl;	/* Timeout period low */
-	u32	periodh;	/* Timeout period high */
-	u32	snapl;		/* Snapshot low */
-	u32	snaph;		/* Snapshot high */
-};
-
-/* status register */
-#define NIOS_TIMER_TO		(1 << 0)	/* Timeout */
-#define NIOS_TIMER_RUN		(1 << 1)	/* Timer running */
-
-/* control register */
-#define NIOS_TIMER_ITO		(1 << 0)	/* Timeout int ena */
-#define NIOS_TIMER_CONT		(1 << 1)	/* Continuous mode */
-#define NIOS_TIMER_START	(1 << 2)	/* Start timer */
-#define NIOS_TIMER_STOP		(1 << 3)	/* Stop timer */
-
-#if defined(CONFIG_SYS_TIMER_BASE) && !defined(CONFIG_SYS_TIMER_IRQ)
-#error CONFIG_SYS_TIMER_IRQ not defined (see documentation)
-#endif
-
-/****************************************************************************/
 
+/*************************************************************************/
 struct	irq_action {
 	interrupt_handler_t *handler;
 	void *arg;
@@ -52,60 +24,6 @@ struct	irq_action {
 
 static struct irq_action vecs[32];
 
-/*************************************************************************/
-static volatile ulong timestamp;
-
-/*
- * The board must handle this interrupt if a timer is not
- * provided.
- */
-void tmr_isr (void *arg)
-{
-	struct nios_timer *tmr = (struct nios_timer *)arg;
-	/* Interrupt is cleared by writing anything to the
-	 * status register.
-	 */
-	writel (0, &tmr->status);
-	timestamp += CONFIG_SYS_NIOS_TMRMS;
-#ifdef CONFIG_STATUS_LED
-	status_led_tick(timestamp);
-#endif
-}
-
-unsigned long notrace timer_read_counter(void)
-{
-	struct nios_timer *tmr = (struct nios_timer *)CONFIG_SYS_TIMER_BASE;
-	u32 val;
-
-	/* Trigger update */
-	writel(0x0, &tmr->snapl);
-
-	/* Read timer value */
-	val = readl(&tmr->snapl) & 0xffff;
-	val |= (readl(&tmr->snaph) & 0xffff) << 16;
-
-	return ~val;
-}
-
-int timer_init(void)
-{
-	struct nios_timer *tmr = (struct nios_timer *)CONFIG_SYS_TIMER_BASE;
-
-	writel (0, &tmr->status);
-	writel (0, &tmr->control);
-	writel (NIOS_TIMER_STOP, &tmr->control);
-
-	writel (0xffff, &tmr->periodl);
-	writel (0xffff, &tmr->periodh);
-
-	writel (NIOS_TIMER_CONT | NIOS_TIMER_START, &tmr->control);
-	/* FIXME */
-	irq_install_handler(CONFIG_SYS_TIMER_IRQ, tmr_isr, (void *)tmr);
-
-	return 0;
-}
-
-/*************************************************************************/
 int disable_interrupts (void)
 {
 	int val = rdctl (CTL_STATUS);
diff --git a/arch/nios2/cpu/timer.c b/arch/nios2/cpu/timer.c
new file mode 100644
index 0000000..006b19b
--- /dev/null
+++ b/arch/nios2/cpu/timer.c
@@ -0,0 +1,69 @@
+/*
+ * (C) Copyright 2000-2002
+ * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+ *
+ * (C) Copyright 2004, Psyent Corporation <www.psyent.com>
+ * Scott McNutt <smcnutt@psyent.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/nios2.h>
+#include <asm/types.h>
+#include <asm/io.h>
+
+struct nios_timer {
+	u32	status;		/* Timer status reg */
+	u32	control;	/* Timer control reg */
+	u32	periodl;	/* Timeout period low */
+	u32	periodh;	/* Timeout period high */
+	u32	snapl;		/* Snapshot low */
+	u32	snaph;		/* Snapshot high */
+};
+
+/* status register */
+#define NIOS_TIMER_TO		(1 << 0)	/* Timeout */
+#define NIOS_TIMER_RUN		(1 << 1)	/* Timer running */
+
+/* control register */
+#define NIOS_TIMER_ITO		(1 << 0)	/* Timeout int ena */
+#define NIOS_TIMER_CONT		(1 << 1)	/* Continuous mode */
+#define NIOS_TIMER_START	(1 << 2)	/* Start timer */
+#define NIOS_TIMER_STOP		(1 << 3)	/* Stop timer */
+
+#if defined(CONFIG_SYS_TIMER_BASE) && !defined(CONFIG_SYS_TIMER_IRQ)
+#error CONFIG_SYS_TIMER_IRQ not defined (see documentation)
+#endif
+
+/*************************************************************************/
+unsigned long notrace timer_read_counter(void)
+{
+	struct nios_timer *tmr = (struct nios_timer *)CONFIG_SYS_TIMER_BASE;
+	u32 val;
+
+	/* Trigger update */
+	writel(0x0, &tmr->snapl);
+
+	/* Read timer value */
+	val = readl(&tmr->snapl) & 0xffff;
+	val |= (readl(&tmr->snaph) & 0xffff) << 16;
+
+	return ~val;
+}
+
+int timer_init(void)
+{
+	struct nios_timer *tmr = (struct nios_timer *)CONFIG_SYS_TIMER_BASE;
+
+	writel (0, &tmr->status);
+	writel (0, &tmr->control);
+	writel (NIOS_TIMER_STOP, &tmr->control);
+
+	writel (0xffff, &tmr->periodl);
+	writel (0xffff, &tmr->periodh);
+
+	writel (NIOS_TIMER_CONT | NIOS_TIMER_START, &tmr->control);
+
+	return 0;
+}
diff --git a/include/configs/nios2-generic.h b/include/configs/nios2-generic.h
index 1635794..48d56ac 100644
--- a/include/configs/nios2-generic.h
+++ b/include/configs/nios2-generic.h
@@ -40,7 +40,6 @@
  */
 #define CONFIG_SYS_TIMER_COUNTS_DOWN
 #define CONFIG_SYS_TIMER_RATE		CONFIG_SYS_TIMER_FREQ
-#define CONFIG_SYS_NIOS_TMRMS		10	/* FIXME: Desired period (msec)*/
 
 /*
  * STATUS LED
@@ -59,7 +58,7 @@
 
 #define STATUS_LED_BIT			0	/* Bit-0 on GPIO */
 #define STATUS_LED_STATE		1	/* Blinking */
-#define STATUS_LED_PERIOD	(500 / CONFIG_SYS_NIOS_TMRMS) /* 500 msec */
+#define STATUS_LED_PERIOD	(CONFIG_SYS_HZ / 2)	/* 500 msec */
 
 /*
  * BOOTP options
-- 
2.1.4

  reply	other threads:[~2015-09-04  9:51 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-04  9:51 [U-Boot] [PATCH 1/2] nios2: Switch to generic timer Marek Vasut
2015-09-04  9:51 ` Marek Vasut [this message]
2015-09-07  8:00   ` [U-Boot] [PATCH 2/2] nios2: Split timer code into timer.c Thomas Chou
2015-09-04 13:33 ` [U-Boot] [PATCH 1/2] nios2: Switch to generic timer Thomas Chou
2015-09-04 14:08   ` Marek Vasut
2015-09-05  0:10     ` Thomas Chou
2015-09-07 12:33       ` Marek Vasut
2015-09-05 13:04     ` [U-Boot] [PATCH] nios2: configure STATUS_LED_BOOT Thomas Chou
2015-09-05 13:11       ` Marek Vasut
2015-09-06 11:35         ` Thomas Chou
2015-09-06 11:56           ` Marek Vasut
2015-09-15  8:39       ` Thomas Chou
2015-09-07  1:10     ` [U-Boot] [PATCH 1/2] nios2: Switch to generic timer Thomas Chou
2015-09-07  9:32       ` Marek Vasut
2015-09-07 11:15         ` Thomas Chou
  -- strict thread matches above, loose matches on Subject: below --
2015-09-07 12:31 [U-Boot] [PATCH V2 " Marek Vasut
2015-09-07 12:31 ` [U-Boot] [PATCH 2/2] nios2: Split timer code into timer.c Marek Vasut
2015-09-07 14:10   ` Thomas Chou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1441360276-4792-2-git-send-email-marex@denx.de \
    --to=marex@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.