* [U-Boot] [PATCH 1/2] S5P: support generic watchdog timer
@ 2012-01-18 7:21 Minkyu Kang
2012-01-25 2:01 ` Minkyu Kang
0 siblings, 1 reply; 2+ messages in thread
From: Minkyu Kang @ 2012-01-18 7:21 UTC (permalink / raw)
To: u-boot
This patch adds support the generic watchdog timer for s5pc1xx and exynos4
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: HeungJun, Kim <riverful.kim@samsung.com>
---
arch/arm/cpu/armv7/s5p-common/Makefile | 1 +
arch/arm/cpu/armv7/s5p-common/wdt.c | 59 ++++++++++++++++++++++++++
arch/arm/include/asm/arch-exynos/watchdog.h | 6 ++-
arch/arm/include/asm/arch-s5pc1xx/cpu.h | 1 +
arch/arm/include/asm/arch-s5pc1xx/watchdog.h | 58 +++++++++++++++++++++++++
5 files changed, 124 insertions(+), 1 deletions(-)
create mode 100644 arch/arm/cpu/armv7/s5p-common/wdt.c
create mode 100644 arch/arm/include/asm/arch-s5pc1xx/watchdog.h
diff --git a/arch/arm/cpu/armv7/s5p-common/Makefile b/arch/arm/cpu/armv7/s5p-common/Makefile
index 1705399..f975f3f 100644
--- a/arch/arm/cpu/armv7/s5p-common/Makefile
+++ b/arch/arm/cpu/armv7/s5p-common/Makefile
@@ -28,6 +28,7 @@ LIB = $(obj)libs5p-common.o
COBJS-y += cpu_info.o
COBJS-y += timer.o
COBJS-y += sromc.o
+COBJS-y += wdt.o
COBJS-$(CONFIG_PWM) += pwm.o
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
diff --git a/arch/arm/cpu/armv7/s5p-common/wdt.c b/arch/arm/cpu/armv7/s5p-common/wdt.c
new file mode 100644
index 0000000..94acc1e
--- /dev/null
+++ b/arch/arm/cpu/armv7/s5p-common/wdt.c
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics
+ * Minkyu Kang <mk7.kang@samsung.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/watchdog.h>
+
+#define PRESCALER_VAL 255
+
+void wdt_stop(void)
+{
+ struct s5p_watchdog *wdt =
+ (struct s5p_watchdog *)samsung_get_base_watchdog();
+ unsigned int wtcon;
+
+ wtcon = readl(&wdt->wtcon);
+ wtcon &= ~(WTCON_EN | WTCON_INT | WTCON_RESET);
+
+ writel(wtcon, &wdt->wtcon);
+}
+
+void wdt_start(unsigned int timeout)
+{
+ struct s5p_watchdog *wdt =
+ (struct s5p_watchdog *)samsung_get_base_watchdog();
+ unsigned int wtcon;
+
+ wdt_stop();
+
+ wtcon = readl(&wdt->wtcon);
+ wtcon |= (WTCON_EN | WTCON_CLK(WTCON_CLK_128));
+ wtcon &= ~WTCON_INT;
+ wtcon |= WTCON_RESET;
+ wtcon |= WTCON_PRESCALER(PRESCALER_VAL);
+
+ writel(timeout, &wdt->wtdat);
+ writel(timeout, &wdt->wtcnt);
+ writel(wtcon, &wdt->wtcon);
+}
diff --git a/arch/arm/include/asm/arch-exynos/watchdog.h b/arch/arm/include/asm/arch-exynos/watchdog.h
index 3015875..ee0c9c9 100644
--- a/arch/arm/include/asm/arch-exynos/watchdog.h
+++ b/arch/arm/include/asm/arch-exynos/watchdog.h
@@ -42,12 +42,16 @@
#define WTCON_INT (0x1 << WTCON_INTEN_OFFSET)
#ifndef __ASSEMBLY__
-struct exynos4_watchdog {
+struct s5p_watchdog {
unsigned int wtcon;
unsigned int wtdat;
unsigned int wtcnt;
unsigned int wtclrint;
};
+
+/* functions */
+void wdt_stop(void);
+void wdt_start(unsigned int timeout);
#endif /* __ASSEMBLY__ */
#endif
diff --git a/arch/arm/include/asm/arch-s5pc1xx/cpu.h b/arch/arm/include/asm/arch-s5pc1xx/cpu.h
index e699fc4..510ead4 100644
--- a/arch/arm/include/asm/arch-s5pc1xx/cpu.h
+++ b/arch/arm/include/asm/arch-s5pc1xx/cpu.h
@@ -98,6 +98,7 @@ SAMSUNG_BASE(mmc, MMC_BASE)
SAMSUNG_BASE(sromc, SROMC_BASE)
SAMSUNG_BASE(timer, PWMTIMER_BASE)
SAMSUNG_BASE(uart, UART_BASE)
+SAMSUNG_BASE(watchdog, WATCHDOG_BASE)
#endif
#endif /* _S5PC1XX_CPU_H */
diff --git a/arch/arm/include/asm/arch-s5pc1xx/watchdog.h b/arch/arm/include/asm/arch-s5pc1xx/watchdog.h
new file mode 100644
index 0000000..0f80ca5
--- /dev/null
+++ b/arch/arm/include/asm/arch-s5pc1xx/watchdog.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2011 Samsung Electronics
+ * Heungjun Kim <riverful.kim@samsung.com>
+ * Minkyu Kang <mk7.kang@samsung.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __ASM_ARM_ARCH_WATCHDOG_H_
+#define __ASM_ARM_ARCH_WATCHDOG_H_
+
+#define WTCON_RESET_OFFSET 0
+#define WTCON_INTEN_OFFSET 2
+#define WTCON_CLKSEL_OFFSET 3
+#define WTCON_EN_OFFSET 5
+#define WTCON_PRE_OFFSET 8
+
+#define WTCON_CLK_16 0x0
+#define WTCON_CLK_32 0x1
+#define WTCON_CLK_64 0x2
+#define WTCON_CLK_128 0x3
+
+#define WTCON_CLK(x) ((x & 0x3) << WTCON_CLKSEL_OFFSET)
+#define WTCON_PRESCALER(x) ((x) << WTCON_PRE_OFFSET)
+#define WTCON_EN (0x1 << WTCON_EN_OFFSET)
+#define WTCON_RESET (0x1 << WTCON_RESET_OFFSET)
+#define WTCON_INT (0x1 << WTCON_INTEN_OFFSET)
+
+#ifndef __ASSEMBLY__
+struct s5p_watchdog {
+ unsigned int wtcon;
+ unsigned int wtdat;
+ unsigned int wtcnt;
+ unsigned int wtclrint;
+};
+
+/* functions */
+void wdt_stop(void);
+void wdt_start(unsigned int timeout);
+#endif /* __ASSEMBLY__ */
+
+#endif
--
1.7.5.4
^ permalink raw reply related [flat|nested] 2+ messages in thread* [U-Boot] [PATCH 1/2] S5P: support generic watchdog timer
2012-01-18 7:21 [U-Boot] [PATCH 1/2] S5P: support generic watchdog timer Minkyu Kang
@ 2012-01-25 2:01 ` Minkyu Kang
0 siblings, 0 replies; 2+ messages in thread
From: Minkyu Kang @ 2012-01-25 2:01 UTC (permalink / raw)
To: u-boot
On 18 January 2012 16:21, Minkyu Kang <mk7.kang@samsung.com> wrote:
> This patch adds support the generic watchdog timer for s5pc1xx and exynos4
>
> Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: HeungJun, Kim <riverful.kim@samsung.com>
> ---
> ?arch/arm/cpu/armv7/s5p-common/Makefile ? ? ? | ? ?1 +
> ?arch/arm/cpu/armv7/s5p-common/wdt.c ? ? ? ? ?| ? 59 ++++++++++++++++++++++++++
> ?arch/arm/include/asm/arch-exynos/watchdog.h ?| ? ?6 ++-
> ?arch/arm/include/asm/arch-s5pc1xx/cpu.h ? ? ?| ? ?1 +
> ?arch/arm/include/asm/arch-s5pc1xx/watchdog.h | ? 58 +++++++++++++++++++++++++
> ?5 files changed, 124 insertions(+), 1 deletions(-)
> ?create mode 100644 arch/arm/cpu/armv7/s5p-common/wdt.c
> ?create mode 100644 arch/arm/include/asm/arch-s5pc1xx/watchdog.h
>
applied to u-boot-samsung.
Minkyu Kang.
--
from. prom.
www.promsoft.net
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-01-25 2:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-18 7:21 [U-Boot] [PATCH 1/2] S5P: support generic watchdog timer Minkyu Kang
2012-01-25 2:01 ` Minkyu Kang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox