[Armadeus-commitlog] armadeus branch, master, updated. armadeus-5.3-226-g8e8fe7b
Brought to you by:
sszy
|
From: Julien B a. A. <ar...@us...> - 2014-04-23 10:02:48
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 8e8fe7be8c0ac4a4ac78e6bfe7d94b7289d30c81 (commit)
via b90933a172098a002685827abfb4b640decc5e59 (commit)
via 438166aa1a788e0ae5d72e146bc40b202eea2bd6 (commit)
from 6845a28396b7db9bec99983e2226725b3d576d0a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 8e8fe7be8c0ac4a4ac78e6bfe7d94b7289d30c81
Author: Julien Boibessot <jul...@ar...>
Date: Wed Apr 23 12:02:21 2014 +0200
[LINUX] 3.4: Add watchdog driver for i.MX28 (vanilla/mainline backport)
commit b90933a172098a002685827abfb4b640decc5e59
Author: Julien Boibessot <jul...@ar...>
Date: Wed Apr 23 11:58:29 2014 +0200
[BUILDROOT] Add gnash package (Flash player, Work In Progress)
commit 438166aa1a788e0ae5d72e146bc40b202eea2bd6
Author: Julien Boibessot <jul...@ar...>
Date: Sun Mar 30 18:25:28 2014 +0200
[BUILDROOT] Add agg package
-----------------------------------------------------------------------
Summary of changes:
.../2013.11/007-armadeus-add-agg-package.patch | 74 +++++
.../2013.11/008-armadeus-add-gnash-package.patch | 155 +++++++++
.../buildroot/2013.11/097-adds_flite_package.patch | 2 +-
patches/buildroot/2013.11/cleanup_buildroot.sh | 2 +
...nx-add-simple-binding-for-the-stmp3xx-rtc.patch | 71 ++++
...linaro-drivers-rtc-use-of-match-ptr-macro.patch | 62 ++++
...ix-rtc-stmp3xxx-add-wdt-accessor-function.patch | 147 +++++++++
...rtc-stmp3xxx-use-stmp-reset-block-instead.patch | 47 +++
...-add-new-driver-for-STMP3xxx-and-iMX23-28.patch | 171 ++++++++++
...ronix-watchdog-remove-old-STMP3xxx-driver.patch | 339 ++++++++++++++++++++
10 files changed, 1069 insertions(+), 1 deletions(-)
create mode 100644 patches/buildroot/2013.11/007-armadeus-add-agg-package.patch
create mode 100644 patches/buildroot/2013.11/008-armadeus-add-gnash-package.patch
create mode 100644 patches/linux/3.4/803-denx-add-simple-binding-for-the-stmp3xx-rtc.patch
create mode 100644 patches/linux/3.4/804-linaro-drivers-rtc-use-of-match-ptr-macro.patch
create mode 100644 patches/linux/3.4/805-pengutronix-rtc-stmp3xxx-add-wdt-accessor-function.patch
create mode 100644 patches/linux/3.4/806-linaro-rtc-stmp3xxx-use-stmp-reset-block-instead.patch
create mode 100644 patches/linux/3.4/807-pengutronix-watchdog-add-new-driver-for-STMP3xxx-and-iMX23-28.patch
create mode 100644 patches/linux/3.4/808-pengutronix-watchdog-remove-old-STMP3xxx-driver.patch
diff --git a/patches/buildroot/2013.11/007-armadeus-add-agg-package.patch b/patches/buildroot/2013.11/007-armadeus-add-agg-package.patch
new file mode 100644
index 0000000..bd7c9f8
--- /dev/null
+++ b/patches/buildroot/2013.11/007-armadeus-add-agg-package.patch
@@ -0,0 +1,74 @@
+Needed by Gnash.
+
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: buildroot/package/agg/Config.in
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ buildroot/package/agg/Config.in 2014-03-20 15:17:04.490514039 +0100
+@@ -0,0 +1,8 @@
++config BR2_PACKAGE_AGG
++ bool "agg"
++ help
++ The Anti-Grain Geometry project. A High Quality 2D Graphics Rendering
++ Engine for C++.
++ We use the SDL backend by default.
++
++ http://www.antigrain.com/index.html
+Index: buildroot/package/agg/agg.mk
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ buildroot/package/agg/agg.mk 2014-03-20 15:20:47.779621260 +0100
+@@ -0,0 +1,40 @@
++###############################################################################
++#
++# agg
++#
++###############################################################################
++
++AGG_VERSION = 2.5
++AGG_SITE = http://www.antigrain.com/
++AGG_LICENSE = GPLv3+
++AGG_LICENSE_FILES = COPYING
++AGG_INSTALL_STAGING = YES
++AGG_AUTORECONF = YES
++
++AGG_DEPENDENCIES = sdl
++
++AGG_CONF_OPT = \
++ --with-sdl-prefix=$(STAGING_DIR)/usr \
++ --disable-sdltest
++
++ifeq ($(BR2_PACKAGE_SDL_X11),)
++AGG_CONF_OPT += \
++ --with-x=NO \
++ --disable-examples # examples require X11
++endif
++
++ifeq ($(BR2_PACKAGE_FREETYPE),y)
++AGG_DEPENDENCIES += freetype
++AGG_CONF_OPT += --enable-freetype
++else
++AGG_CONF_OPT += --disable-freetype
++endif
++
++define AGG_CREATE_MISSING_FILES
++ touch $(@D)/NEWS $(@D)/AUTHORS $(@D)/README
++# Fixes reconfiguring with recent automake:
++ $(SED) 's/AM_C_PROTOTYPES//' $(@D)/configure.in
++endef
++AGG_POST_EXTRACT_HOOKS += AGG_CREATE_MISSING_FILES
++
++$(eval $(autotools-package))
+Index: buildroot/package/Config.in
+===================================================================
+--- buildroot.orig/package/Config.in 2014-03-20 15:12:38.513195116 +0100
++++ buildroot/package/Config.in 2014-03-20 15:13:46.937534410 +0100
+@@ -517,6 +517,7 @@
+ endmenu
+
+ menu "Graphics"
++source "package/agg/Config.in"
+ source "package/atk/Config.in"
+ source "package/cairo/Config.in"
+ source "package/fltk/Config.in"
diff --git a/patches/buildroot/2013.11/008-armadeus-add-gnash-package.patch b/patches/buildroot/2013.11/008-armadeus-add-gnash-package.patch
new file mode 100644
index 0000000..328cf62
--- /dev/null
+++ b/patches/buildroot/2013.11/008-armadeus-add-gnash-package.patch
@@ -0,0 +1,155 @@
+WIP.
+
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: buildroot/package/gnash/Config.in
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ buildroot/package/gnash/Config.in 2014-03-19 15:36:25.255835492 +0100
+@@ -0,0 +1,11 @@
++config BR2_PACKAGE_GNASH
++ bool "gnash"
++ select BR2_PACKAGE_BOOST
++ select BR2_PACKAGE_BOOST_IOSTREAMS
++ select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
++ select BR2_PACKAGE_BOOST_THREAD
++
++ help
++ GNU Gnash is the GNU Flash movie player.
++
++ http://www.gnu.org/software/gnash/
+Index: buildroot/package/gnash/gnash.mk
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ buildroot/package/gnash/gnash.mk 2014-03-19 16:26:28.838729457 +0100
+@@ -0,0 +1,118 @@
++###############################################################################
++#
++# gnash
++#
++###############################################################################
++
++# inspired from LFS
++
++GNASH_VERSION = 0.8.10
++GNASH_SOURCE = gnash-$(GNASH_VERSION).tar.bz2
++GNASH_SITE = http://ftp.gnu.org/pub/gnu/gnash/$(GNASH_VERSION)/
++GNASH_LICENSE = LGPLv2.1+
++GNASH_LICENSE_FILES = COPYING
++
++GNASH_CONF_OPT = --without-gconf --disable-extensions --disable-jemalloc --disable-cygnal
++GNASH_CONF_OPT += --disable-nls # To fix
++GNASH_DEPENDENCIES += gettext # even if NLS disabled...
++
++GNASH_CONF_OPT += --with-ltdl-incl=$(STAGING_DIR)/usr/include/ --with-ltdl-lib=$(STAGING_DIR)/usr/lib
++GNASH_DEPENDENCIES += libtool
++
++define GNASH_FIXES_BOOST_LINK
++ $(SED) '/^LIBS/s/\(.*\)/\1 -lboost_system/' \
++ $(@D)/gui/Makefile.in $(@D)/utilities/Makefile.in
++endef
++GNASH_POST_CONFIGURE_HOOKS += GNASH_FIXES_BOOST_LINK
++
++ifeq ($(BR2_PACKAGE_GNASH_SHOW_PROPERTIES),y)
++# to check
++GNASH_DEPENDENCIES += pango
++GNASH_CONF_OPT += --with-pango-incl=$(STAGING_DIR)/usr/include/pango --with-pango-lib=$(STAGING_DIR)/usr/lib \
++else
++GNASH_CONF_OPT += --disable-swftree
++endif
++
++ifeq ($(BR2_PACKAGE_QT),)
++#(accept: gtk|kde3|qt4|fltk|sdl|aqua|fb|qtopia3|qtopia4|dump|aos4|haiku)
++#GNASH_CONF_OPT += --disable-gui ??
++GNASH_CONF_OPT += --enable-gui=sdl
++GNASH_CONF_OPT += --with-sdl-incl=$(STAGING_DIR)/usr/include/SDL --with-sdl-lib=$(STAGING_DIR)/usr/lib
++GNASH_DEPENDENCIES += sdl
++else
++GNASH_CONF_OPT += --enable-gui=qt4
++GNASH_DEPENDENCIES += qt
++endif
++
++GNASH_CONF_OPT += --enable-media=none
++
++GNASH_CONF_OPT += --enable-sound=none
++
++GNASH_CONF_OPT += --enable-renderer=agg
++GNASH_CONF_OPT += --with-agg-incl=$(STAGING_DIR)/usr/include/agg2 --with-agg-lib=$(STAGING_DIR)/usr/lib
++GNASH_DEPENDENCIES += agg
++
++GNASH_CONF_OPT += --with-curl-incl=$(STAGING_DIR)/usr/include
++GNASH_DEPENDENCIES += libcurl
++
++GNASH_CONF_OPT += --with-boost-incl=$(STAGING_DIR)/usr/include/boost --with-boost-lib=$(STAGING_DIR)/usr/lib
++GNASH_DEPENDENCIES += boost
++
++# What for ?
++GNASH_CONF_OPT += --with-jpeg-incl=$(STAGING_DIR)/usr/include --with-jpeg-lib=$(STAGING_DIR)/usr/lib
++GNASH_DEPENDENCIES += libjpeg
++
++# What for ?
++GNASH_CONF_OPT += --with-ungif-incl=$(STAGING_DIR)/usr/include --with-ungif-lib=$(STAGING_DIR)/usr/lib
++GNASH_DEPENDENCIES += libungif
++
++# Needed otherwise utilities/ fails to build
++GNASH_CONF_OPT += --with-png-incl=$(STAGING_DIR)/usr/include --with-png-lib=$(STAGING_DIR)/usr/lib
++GNASH_DEPENDENCIES += libpng
++
++# Otherwise build fails in FreetypeGlyphsProvider.cpp
++GNASH_DEPENDENCIES += freetype
++GNASH_CONF_OPT += --with-freetype-incl=$(STAGING_DIR)/usr/include/freetype2 --with-freetype-lib=$(STAGING_DIR)/usr/lib
++
++# --enable-sound=sdl|ahi|mkit
++# Use the specified sound handler (default=sdl)
++# --enable-media=handler Enable media handling support using the specified
++# handler: gst, ffmpeg or none (no sound) [gst]
++# --enable-input Enable support for the specified input devices for
++# the framebuffer GUI
++# (default=ps2mouse|ps2keyboard|events|touchscreen)
++# --enable-renderer Enable support for the specified renderers
++# (agg|cairo|opengl|openvg|all, default=all)
++
++
++$(eval $(autotools-package))
++
++# RECOMMENDED: No PNG library development package installed!
++# Gnash will be built without support for dynamic loading of
++# PNG files.
++# Install it from http://www.libpng.org
++# or .deb users: apt-get install libpng12-dev
++# or .rpm users: yum install libpng-devel
++# RECOMMENDED: If you install the CURL library, Gnash will be able to
++# display remote content (streaming from URLs) using CURL.
++# Install libcurl from http://curl.haxx.se/libcurl
++# or .deb users: apt-get install libcurl4-gnutls-dev
++# or maybe : apt-get install libcurl-dev
++# or .rpm users: yum install curl-devel
++# RECOMMENDED: If you install the Speex library, Gnash will be able to
++# decoded Speex encoded audio in FLV files.
++# Install libspeex from http://speex.org
++# or .deb users: apt-get install libspeex-dev
++# or .rpm users: yum install speex-devel
++# RECOMMENDED: If you install the Speex DSP library, Gnash will be able to
++# resample Speex encoded audio in FLV files.
++# Install libspeexdsp from http://speex.org
++# or .deb users: apt-get install libspeexdsp-dev
++# or .rpm users: yum install speex-devel
++# RECOMMENDED: You need to have the fontconfig development packages
++# installed to use device fonts.
++# Install it from http://fontconfig.org
++# or .deb users: apt-get install libfontconfig1-dev
++# or .rpm users: yum install fontconfig-devel
++# It may still be possible to configure without fontconfig.
++
+Index: buildroot/package/Config.in
+===================================================================
+--- buildroot.orig/package/Config.in 2014-03-19 15:31:54.782494289 +0100
++++ buildroot/package/Config.in 2014-03-19 15:32:23.326635847 +0100
+@@ -13,6 +13,7 @@
+ source "package/faad2/Config.in"
+ source "package/ffmpeg/Config.in"
+ source "package/flac/Config.in"
++source "package/gnash/Config.in"
+ source "package/gstreamer/Config.in"
+ source "package/gstreamer1/Config.in"
+ source "package/lame/Config.in"
diff --git a/patches/buildroot/2013.11/097-adds_flite_package.patch b/patches/buildroot/2013.11/097-adds_flite_package.patch
index a90dc58..9ad19bc 100644
--- a/patches/buildroot/2013.11/097-adds_flite_package.patch
+++ b/patches/buildroot/2013.11/097-adds_flite_package.patch
@@ -20,9 +20,9 @@ index 273d9bc..3ca0531 100644
source "package/ffmpeg/Config.in"
source "package/flac/Config.in"
+source "package/flite/Config.in"
+ source "package/gnash/Config.in"
source "package/gstreamer/Config.in"
source "package/gstreamer1/Config.in"
- source "package/lame/Config.in"
diff --git a/package/flite/Config.in b/package/flite/Config.in
new file mode 100644
index 0000000..bef989c
diff --git a/patches/buildroot/2013.11/cleanup_buildroot.sh b/patches/buildroot/2013.11/cleanup_buildroot.sh
index 6e53b5a..70352f8 100755
--- a/patches/buildroot/2013.11/cleanup_buildroot.sh
+++ b/patches/buildroot/2013.11/cleanup_buildroot.sh
@@ -83,3 +83,5 @@ rm -rf buildroot/package/mmc-utils/
rm -rf buildroot/package/uclibc/0.9.33.2/uclibc-0055-accept4-declaration-fix.patch
rm -rf buildroot/package/uclibc/0.9.33.2/uclibc-0056-assume-accept4-in-recent-arm-kernels.patch
rm -rf buildroot/package/owfs/
+rm -rf buildroot/package/agg/
+rm -rf buildroot/package/gnash/
diff --git a/patches/linux/3.4/803-denx-add-simple-binding-for-the-stmp3xx-rtc.patch b/patches/linux/3.4/803-denx-add-simple-binding-for-the-stmp3xx-rtc.patch
new file mode 100644
index 0000000..d76f241
--- /dev/null
+++ b/patches/linux/3.4/803-denx-add-simple-binding-for-the-stmp3xx-rtc.patch
@@ -0,0 +1,71 @@
+From dd8d20a3f32a7ba37526f5b4dfd4d35a93e5342f Mon Sep 17 00:00:00 2001
+From: Marek Vasut <ma...@de...>
+Date: Tue, 26 Jun 2012 16:29:27 +0800
+Subject: rtc: stmp3xxx: Add simple binding for the stmp3xxx-rtc
+
+Signed-off-by: Marek Vasut <ma...@de...>
+Cc: Alessandro Zummo <a....@to...>
+Cc: dev...@li...
+Cc: Grant Likely <gra...@se...>
+Cc: rtc...@go...
+Acked-by: Rob Herring <rob...@ca...>
+Signed-off-by: Shawn Guo <sha...@li...>
+
+diff --git a/Documentation/devicetree/bindings/rtc/stmp3xxx-rtc.txt b/Documentation/devicetree/bindings/rtc/stmp3xxx-rtc.txt
+new file mode 100644
+index 0000000..b800070
+--- /dev/null
++++ b/Documentation/devicetree/bindings/rtc/stmp3xxx-rtc.txt
+@@ -0,0 +1,16 @@
++* STMP3xxx/i.MX28 Time Clock controller
++
++Required properties:
++- compatible: should be one of the following.
++ * "fsl,stmp3xxx-rtc"
++- reg: physical base address of the controller and length of memory mapped
++ region.
++- interrupts: rtc alarm interrupt
++
++Example:
++
++rtc@80056000 {
++ compatible = "fsl,imx28-rtc", "fsl,stmp3xxx-rtc";
++ reg = <0x80056000 2000>;
++ interrupts = <29>;
++};
+diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c
+index 1028786..739ef556 100644
+--- a/drivers/rtc/rtc-stmp3xxx.c
++++ b/drivers/rtc/rtc-stmp3xxx.c
+@@ -25,6 +25,7 @@
+ #include <linux/interrupt.h>
+ #include <linux/rtc.h>
+ #include <linux/slab.h>
++#include <linux/of_device.h>
+
+ #include <mach/common.h>
+
+@@ -265,6 +266,12 @@ static int stmp3xxx_rtc_resume(struct platform_device *dev)
+ #define stmp3xxx_rtc_resume NULL
+ #endif
+
++static const struct of_device_id rtc_dt_ids[] = {
++ { .compatible = "fsl,stmp3xxx-rtc", },
++ { /* sentinel */ }
++};
++MODULE_DEVICE_TABLE(of, rtc_dt_ids);
++
+ static struct platform_driver stmp3xxx_rtcdrv = {
+ .probe = stmp3xxx_rtc_probe,
+ .remove = stmp3xxx_rtc_remove,
+@@ -273,6 +280,7 @@ static struct platform_driver stmp3xxx_rtcdrv = {
+ .driver = {
+ .name = "stmp3xxx-rtc",
+ .owner = THIS_MODULE,
++ .of_match_table = rtc_dt_ids,
+ },
+ };
+
+--
+cgit v0.10.1
+
diff --git a/patches/linux/3.4/804-linaro-drivers-rtc-use-of-match-ptr-macro.patch b/patches/linux/3.4/804-linaro-drivers-rtc-use-of-match-ptr-macro.patch
new file mode 100644
index 0000000..d9c8d4e
--- /dev/null
+++ b/patches/linux/3.4/804-linaro-drivers-rtc-use-of-match-ptr-macro.patch
@@ -0,0 +1,62 @@
+JB: I have removed the stuff concerning other RTC drivers than i.MX23/28
+that didn't apply...
+
+
+From c8a6046e1e0bb03406e4fc6c0a204ef58a1868e4 Mon Sep 17 00:00:00 2001
+From: Sachin Kamat <sac...@li...>
+Date: Thu, 21 Feb 2013 16:44:28 -0800
+Subject: drivers/rtc: use of_match_ptr() macro
+
+This eliminates having an #ifdef returning NULL for the case when OF is
+disabled. Maintains consistency in cases where OF is always selected.
+
+Signed-off-by: Sachin Kamat <sac...@li...>
+Cc: Alessandro Zummo <a....@to...>
+Signed-off-by: Andrew Morton <ak...@li...>
+Signed-off-by: Linus Torvalds <tor...@li...>
+
+diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
+index 16630aa..9deb9e4 100644
+--- a/drivers/rtc/rtc-cmos.c
++++ b/drivers/rtc/rtc-cmos.c
+@@ -1098,7 +1098,6 @@ static __init void cmos_of_init(struct platform_device *pdev)
+ }
+ #else
+ static inline void cmos_of_init(struct platform_device *pdev) {}
+-#define of_cmos_match NULL
+ #endif
+ /*----------------------------------------------------------------*/
+
+@@ -1140,7 +1139,7 @@ static struct platform_driver cmos_platform_driver = {
+ #ifdef CONFIG_PM
+ .pm = &cmos_pm_ops,
+ #endif
+- .of_match_table = of_cmos_match,
++ .of_match_table = of_match_ptr(of_cmos_match),
+ }
+ };
+
+diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c
+index 739ef556..b2a8ed9 100644
+--- a/drivers/rtc/rtc-stmp3xxx.c
++++ b/drivers/rtc/rtc-stmp3xxx.c
+@@ -26,6 +26,7 @@
+ #include <linux/rtc.h>
+ #include <linux/slab.h>
+ #include <linux/of_device.h>
++#include <linux/of.h>
+
+ #include <mach/common.h>
+
+@@ -280,7 +281,7 @@ static struct platform_driver stmp3xxx_rtcdrv = {
+ .driver = {
+ .name = "stmp3xxx-rtc",
+ .owner = THIS_MODULE,
+- .of_match_table = rtc_dt_ids,
++ .of_match_table = of_match_ptr(rtc_dt_ids),
+ },
+ };
+
+--
+cgit v0.10.1
+
diff --git a/patches/linux/3.4/805-pengutronix-rtc-stmp3xxx-add-wdt-accessor-function.patch b/patches/linux/3.4/805-pengutronix-rtc-stmp3xxx-add-wdt-accessor-function.patch
new file mode 100644
index 0000000..b0ba7f9
--- /dev/null
+++ b/patches/linux/3.4/805-pengutronix-rtc-stmp3xxx-add-wdt-accessor-function.patch
@@ -0,0 +1,147 @@
+From 1a71fb84fda651105e1e194c2d3a3a13a38210a9 Mon Sep 17 00:00:00 2001
+From: Wolfram Sang <w....@pe...>
+Date: Tue, 27 Sep 2011 22:21:37 +0200
+Subject: rtc: stmp3xxx: add wdt-accessor function
+
+This RTC also includes a watchdog timer. Provide an accessor function
+for setting the watchdog timeout value which will be picked up by a
+watchdog driver. Also register the platform_device for the watchdog here
+to get the boot-time dependencies right.
+
+Signed-off-by: Wolfram Sang <w....@pe...>
+Acked-by: Andrew Morton <ak...@li...>
+Signed-off-by: Wim Van Sebroeck <wi...@ig...>
+
+diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c
+index b2a8ed9..98f0d3c 100644
+--- a/drivers/rtc/rtc-stmp3xxx.c
++++ b/drivers/rtc/rtc-stmp3xxx.c
+@@ -27,6 +27,8 @@
+ #include <linux/slab.h>
+ #include <linux/of_device.h>
+ #include <linux/of.h>
++#include <linux/stmp_device.h>
++#include <linux/stmp3xxx_rtc_wdt.h>
+
+ #include <mach/common.h>
+
+@@ -36,6 +38,7 @@
+ #define STMP3XXX_RTC_CTRL_ALARM_IRQ_EN 0x00000001
+ #define STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN 0x00000002
+ #define STMP3XXX_RTC_CTRL_ALARM_IRQ 0x00000004
++#define STMP3XXX_RTC_CTRL_WATCHDOGEN 0x00000010
+
+ #define STMP3XXX_RTC_STAT 0x10
+ #define STMP3XXX_RTC_STAT_STALE_SHIFT 16
+@@ -45,6 +48,8 @@
+
+ #define STMP3XXX_RTC_ALARM 0x40
+
++#define STMP3XXX_RTC_WATCHDOG 0x50
++
+ #define STMP3XXX_RTC_PERSISTENT0 0x60
+ #define STMP3XXX_RTC_PERSISTENT0_SET 0x64
+ #define STMP3XXX_RTC_PERSISTENT0_CLR 0x68
+@@ -52,12 +57,70 @@
+ #define STMP3XXX_RTC_PERSISTENT0_ALARM_EN 0x00000004
+ #define STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE 0x00000080
+
++#define STMP3XXX_RTC_PERSISTENT1 0x70
++/* missing bitmask in headers */
++#define STMP3XXX_RTC_PERSISTENT1_FORCE_UPDATER 0x80000000
++
+ struct stmp3xxx_rtc_data {
+ struct rtc_device *rtc;
+ void __iomem *io;
+ int irq_alarm;
+ };
+
++#if IS_ENABLED(CONFIG_STMP3XXX_RTC_WATCHDOG)
++/**
++ * stmp3xxx_wdt_set_timeout - configure the watchdog inside the STMP3xxx RTC
++ * @dev: the parent device of the watchdog (= the RTC)
++ * @timeout: the desired value for the timeout register of the watchdog.
++ * 0 disables the watchdog
++ *
++ * The watchdog needs one register and two bits which are in the RTC domain.
++ * To handle the resource conflict, the RTC driver will create another
++ * platform_device for the watchdog driver as a child of the RTC device.
++ * The watchdog driver is passed the below accessor function via platform_data
++ * to configure the watchdog. Locking is not needed because accessing SET/CLR
++ * registers is atomic.
++ */
++
++static void stmp3xxx_wdt_set_timeout(struct device *dev, u32 timeout)
++{
++ struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
++
++ if (timeout) {
++ writel(timeout, rtc_data->io + STMP3XXX_RTC_WATCHDOG);
++ writel(STMP3XXX_RTC_CTRL_WATCHDOGEN,
++ rtc_data->io + STMP3XXX_RTC_CTRL + STMP_OFFSET_REG_SET);
++ writel(STMP3XXX_RTC_PERSISTENT1_FORCE_UPDATER,
++ rtc_data->io + STMP3XXX_RTC_PERSISTENT1 + STMP_OFFSET_REG_SET);
++ } else {
++ writel(STMP3XXX_RTC_CTRL_WATCHDOGEN,
++ rtc_data->io + STMP3XXX_RTC_CTRL + STMP_OFFSET_REG_CLR);
++ writel(STMP3XXX_RTC_PERSISTENT1_FORCE_UPDATER,
++ rtc_data->io + STMP3XXX_RTC_PERSISTENT1 + STMP_OFFSET_REG_CLR);
++ }
++}
++
++static struct stmp3xxx_wdt_pdata wdt_pdata = {
++ .wdt_set_timeout = stmp3xxx_wdt_set_timeout,
++};
++
++static void stmp3xxx_wdt_register(struct platform_device *rtc_pdev)
++{
++ struct platform_device *wdt_pdev =
++ platform_device_alloc("stmp3xxx_rtc_wdt", rtc_pdev->id);
++
++ if (wdt_pdev) {
++ wdt_pdev->dev.parent = &rtc_pdev->dev;
++ wdt_pdev->dev.platform_data = &wdt_pdata;
++ platform_device_add(wdt_pdev);
++ }
++}
++#else
++static void stmp3xxx_wdt_register(struct platform_device *rtc_pdev)
++{
++}
++#endif /* CONFIG_STMP3XXX_RTC_WATCHDOG */
++
+ static void stmp3xxx_wait_time(struct stmp3xxx_rtc_data *rtc_data)
+ {
+ /*
+@@ -233,6 +296,7 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
+ goto out_irq_alarm;
+ }
+
++ stmp3xxx_wdt_register(pdev);
+ return 0;
+
+ out_irq_alarm:
+diff --git a/include/linux/stmp3xxx_rtc_wdt.h b/include/linux/stmp3xxx_rtc_wdt.h
+new file mode 100644
+index 0000000..1dd12c9
+--- /dev/null
++++ b/include/linux/stmp3xxx_rtc_wdt.h
+@@ -0,0 +1,15 @@
++/*
++ * stmp3xxx_rtc_wdt.h
++ *
++ * Copyright (C) 2011 Wolfram Sang, Pengutronix e.K.
++ *
++ * This file is released under the GPLv2.
++ */
++#ifndef __LINUX_STMP3XXX_RTC_WDT_H
++#define __LINUX_STMP3XXX_RTC_WDT_H
++
++struct stmp3xxx_wdt_pdata {
++ void (*wdt_set_timeout)(struct device *dev, u32 timeout);
++};
++
++#endif /* __LINUX_STMP3XXX_RTC_WDT_H */
+--
+cgit v0.10.1
+
diff --git a/patches/linux/3.4/806-linaro-rtc-stmp3xxx-use-stmp-reset-block-instead.patch b/patches/linux/3.4/806-linaro-rtc-stmp3xxx-use-stmp-reset-block-instead.patch
new file mode 100644
index 0000000..c585545
--- /dev/null
+++ b/patches/linux/3.4/806-linaro-rtc-stmp3xxx-use-stmp-reset-block-instead.patch
@@ -0,0 +1,47 @@
+From 36d1da1d15743e8d25e2699a2edb19d7c492bec8 Mon Sep 17 00:00:00 2001
+From: Shawn Guo <sha...@li...>
+Date: Thu, 28 Mar 2013 23:13:14 +0800
+Subject: rtc: stmp3xxx: use stmp_reset_block() instead
+
+The function stmp_reset_block() provides the exactly same functionality
+as mxs_reset_block(). So use stmp_reset_block() instead, so that
+<mach/common.h> inclusion can be removed.
+
+Signed-off-by: Shawn Guo <sha...@li...>
+Cc: Andrew Morton <ak...@li...>
+Cc: rtc...@go...
+
+diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c
+index 98f0d3c..67d2612 100644
+--- a/drivers/rtc/rtc-stmp3xxx.c
++++ b/drivers/rtc/rtc-stmp3xxx.c
+@@ -30,8 +30,6 @@
+ #include <linux/stmp_device.h>
+ #include <linux/stmp3xxx_rtc_wdt.h>
+
+-#include <mach/common.h>
+-
+ #define STMP3XXX_RTC_CTRL 0x0
+ #define STMP3XXX_RTC_CTRL_SET 0x4
+ #define STMP3XXX_RTC_CTRL_CLR 0x8
+@@ -271,7 +269,7 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
+
+ platform_set_drvdata(pdev, rtc_data);
+
+- mxs_reset_block(rtc_data->io);
++ stmp_reset_block(rtc_data->io);
+ writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN |
+ STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE,
+@@ -319,7 +317,7 @@ static int stmp3xxx_rtc_resume(struct platform_device *dev)
+ {
+ struct stmp3xxx_rtc_data *rtc_data = platform_get_drvdata(dev);
+
+- mxs_reset_block(rtc_data->io);
++ stmp_reset_block(rtc_data->io);
+ writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN |
+ STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE,
+--
+cgit v0.10.1
+
diff --git a/patches/linux/3.4/807-pengutronix-watchdog-add-new-driver-for-STMP3xxx-and-iMX23-28.patch b/patches/linux/3.4/807-pengutronix-watchdog-add-new-driver-for-STMP3xxx-and-iMX23-28.patch
new file mode 100644
index 0000000..6a67339
--- /dev/null
+++ b/patches/linux/3.4/807-pengutronix-watchdog-add-new-driver-for-STMP3xxx-and-iMX23-28.patch
@@ -0,0 +1,171 @@
+From de6303ab934b1386cad1f62ea6e2200ab7be7d78 Mon Sep 17 00:00:00 2001
+From: Wolfram Sang <w....@pe...>
+Date: Tue, 27 Sep 2011 22:35:40 +0200
+Subject: watchdog: add new driver for STMP3xxx and i.MX23/28
+
+Replace the existing STMP3xxx driver because it has enough drawbacks
+that a rewrite is apropriate. The new driver is designed to use the
+watchdog framework which makes it a lot smaller and avoids open coding
+the watchdog API again. It also uses now an explicitly exported function
+from the RTC driver to set up its registers (the old driver silently
+reused the hopefully(!) already remapped RTC registers). Also, this
+driver is mach independent, while the old one depends on a mach replaced
+by another one a year ago. Since the user interface is still the
+standard watchdog API, users don't need to adapt.
+
+Signed-off-by: Wolfram Sang <w....@pe...>
+Signed-off-by: Wim Van Sebroeck <wi...@ig...>
+
+diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
+index 7f61687..8792321 100644
+--- a/drivers/watchdog/Kconfig
++++ b/drivers/watchdog/Kconfig
+@@ -326,6 +326,16 @@ config STMP3XXX_WATCHDOG
+ To compile this driver as a module, choose M here: the
+ module will be called stmp3xxx_wdt.
+
++config STMP3XXX_RTC_WATCHDOG
++ tristate "Freescale STMP3XXX & i.MX23/28 watchdog"
++ depends on RTC_DRV_STMP
++ select WATCHDOG_CORE
++ help
++ Say Y here to include support for the watchdog timer inside
++ the RTC for the STMP37XX/378X or i.MX23/28 SoC.
++ To compile this driver as a module, choose M here: the
++ module will be called stmp3xxx_rtc_wdt.
++
+ config NUC900_WATCHDOG
+ tristate "Nuvoton NUC900 watchdog"
+ depends on ARCH_W90X900
+diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
+index f7a612c..f1fc6a1 100644
+--- a/drivers/watchdog/Makefile
++++ b/drivers/watchdog/Makefile
+@@ -49,6 +49,7 @@ obj-$(CONFIG_DAVINCI_WATCHDOG) += davinci_wdt.o
+ obj-$(CONFIG_ORION_WATCHDOG) += orion_wdt.o
+ obj-$(CONFIG_COH901327_WATCHDOG) += coh901327_wdt.o
+ obj-$(CONFIG_STMP3XXX_WATCHDOG) += stmp3xxx_wdt.o
++obj-$(CONFIG_STMP3XXX_RTC_WATCHDOG) += stmp3xxx_rtc_wdt.o
+ obj-$(CONFIG_NUC900_WATCHDOG) += nuc900_wdt.o
+ obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_wdt.o
+ obj-$(CONFIG_IMX2_WDT) += imx2_wdt.o
+diff --git a/drivers/watchdog/stmp3xxx_rtc_wdt.c b/drivers/watchdog/stmp3xxx_rtc_wdt.c
+new file mode 100644
+index 0000000..c97e98d
+--- /dev/null
++++ b/drivers/watchdog/stmp3xxx_rtc_wdt.c
+@@ -0,0 +1,111 @@
++/*
++ * Watchdog driver for the RTC based watchdog in STMP3xxx and i.MX23/28
++ *
++ * Author: Wolfram Sang <w....@pe...>
++ *
++ * Copyright (C) 2011-12 Wolfram Sang, Pengutronix
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 as published by
++ * the Free Software Foundation.
++ */
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/miscdevice.h>
++#include <linux/watchdog.h>
++#include <linux/platform_device.h>
++#include <linux/stmp3xxx_rtc_wdt.h>
++
++#define WDOG_TICK_RATE 1000 /* 1 kHz clock */
++#define STMP3XXX_DEFAULT_TIMEOUT 19
++#define STMP3XXX_MAX_TIMEOUT (UINT_MAX / WDOG_TICK_RATE)
++
++static int heartbeat = STMP3XXX_DEFAULT_TIMEOUT;
++module_param(heartbeat, uint, 0);
++MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat period in seconds from 1 to "
++ __MODULE_STRING(STMP3XXX_MAX_TIMEOUT) ", default "
++ __MODULE_STRING(STMP3XXX_DEFAULT_TIMEOUT));
++
++static int wdt_start(struct watchdog_device *wdd)
++{
++ struct device *dev = watchdog_get_drvdata(wdd);
++ struct stmp3xxx_wdt_pdata *pdata = dev->platform_data;
++
++ pdata->wdt_set_timeout(dev->parent, wdd->timeout * WDOG_TICK_RATE);
++ return 0;
++}
++
++static int wdt_stop(struct watchdog_device *wdd)
++{
++ struct device *dev = watchdog_get_drvdata(wdd);
++ struct stmp3xxx_wdt_pdata *pdata = dev->platform_data;
++
++ pdata->wdt_set_timeout(dev->parent, 0);
++ return 0;
++}
++
++static int wdt_set_timeout(struct watchdog_device *wdd, unsigned new_timeout)
++{
++ wdd->timeout = new_timeout;
++ return wdt_start(wdd);
++}
++
++static const struct watchdog_info stmp3xxx_wdt_ident = {
++ .options = WDIOF_MAGICCLOSE | WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING,
++ .identity = "STMP3XXX RTC Watchdog",
++};
++
++static const struct watchdog_ops stmp3xxx_wdt_ops = {
++ .owner = THIS_MODULE,
++ .start = wdt_start,
++ .stop = wdt_stop,
++ .set_timeout = wdt_set_timeout,
++};
++
++static struct watchdog_device stmp3xxx_wdd = {
++ .info = &stmp3xxx_wdt_ident,
++ .ops = &stmp3xxx_wdt_ops,
++ .min_timeout = 1,
++ .max_timeout = STMP3XXX_MAX_TIMEOUT,
++ .status = WATCHDOG_NOWAYOUT_INIT_STATUS,
++};
++
++static int stmp3xxx_wdt_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ watchdog_set_drvdata(&stmp3xxx_wdd, &pdev->dev);
++
++ stmp3xxx_wdd.timeout = clamp_t(unsigned, heartbeat, 1, STMP3XXX_MAX_TIMEOUT);
++
++ ret = watchdog_register_device(&stmp3xxx_wdd);
++ if (ret < 0) {
++ dev_err(&pdev->dev, "cannot register watchdog device\n");
++ return ret;
++ }
++
++ dev_info(&pdev->dev, "initialized watchdog with heartbeat %ds\n",
++ stmp3xxx_wdd.timeout);
++ return 0;
++}
++
++static int stmp3xxx_wdt_remove(struct platform_device *pdev)
++{
++ watchdog_unregister_device(&stmp3xxx_wdd);
++ return 0;
++}
++
++static struct platform_driver stmp3xxx_wdt_driver = {
++ .driver = {
++ .name = "stmp3xxx_rtc_wdt",
++ },
++ .probe = stmp3xxx_wdt_probe,
++ .remove = stmp3xxx_wdt_remove,
++};
++module_platform_driver(stmp3xxx_wdt_driver);
++
++MODULE_DESCRIPTION("STMP3XXX RTC Watchdog Driver");
++MODULE_LICENSE("GPL v2");
++MODULE_AUTHOR("Wolfram Sang <w....@pe...>");
++MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
+--
+cgit v0.10.1
+
diff --git a/patches/linux/3.4/808-pengutronix-watchdog-remove-old-STMP3xxx-driver.patch b/patches/linux/3.4/808-pengutronix-watchdog-remove-old-STMP3xxx-driver.patch
new file mode 100644
index 0000000..bfc24a9
--- /dev/null
+++ b/patches/linux/3.4/808-pengutronix-watchdog-remove-old-STMP3xxx-driver.patch
@@ -0,0 +1,339 @@
+From e4504daba1d9391968df4698406bb81318b340a0 Mon Sep 17 00:00:00 2001
+From: Wolfram Sang <w....@pe...>
+Date: Tue, 27 Sep 2011 22:53:15 +0200
+Subject: watchdog: remove old STMP3xxx driver
+
+Now that the new driver is in place, we can remove the old one.
+
+Signed-off-by: Wolfram Sang <w....@pe...>
+Signed-off-by: Wim Van Sebroeck <wi...@ig...>
+
+diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
+index 8792321..100caabf 100644
+--- a/drivers/watchdog/Kconfig
++++ b/drivers/watchdog/Kconfig
+@@ -317,15 +317,6 @@ config TWL4030_WATCHDOG
+ Support for TI TWL4030 watchdog. Say 'Y' here to enable the
+ watchdog timer support for TWL4030 chips.
+
+-config STMP3XXX_WATCHDOG
+- tristate "Freescale STMP3XXX watchdog"
+- depends on ARCH_STMP3XXX
+- help
+- Say Y here if to include support for the watchdog timer
+- for the Sigmatel STMP37XX/378X SoC.
+- To compile this driver as a module, choose M here: the
+- module will be called stmp3xxx_wdt.
+-
+ config STMP3XXX_RTC_WATCHDOG
+ tristate "Freescale STMP3XXX & i.MX23/28 watchdog"
+ depends on RTC_DRV_STMP
+diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
+index f1fc6a1..a300b94 100644
+--- a/drivers/watchdog/Makefile
++++ b/drivers/watchdog/Makefile
+@@ -48,7 +48,6 @@ obj-$(CONFIG_IOP_WATCHDOG) += iop_wdt.o
+ obj-$(CONFIG_DAVINCI_WATCHDOG) += davinci_wdt.o
+ obj-$(CONFIG_ORION_WATCHDOG) += orion_wdt.o
+ obj-$(CONFIG_COH901327_WATCHDOG) += coh901327_wdt.o
+-obj-$(CONFIG_STMP3XXX_WATCHDOG) += stmp3xxx_wdt.o
+ obj-$(CONFIG_STMP3XXX_RTC_WATCHDOG) += stmp3xxx_rtc_wdt.o
+ obj-$(CONFIG_NUC900_WATCHDOG) += nuc900_wdt.o
+ obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_wdt.o
+diff --git a/drivers/watchdog/stmp3xxx_wdt.c b/drivers/watchdog/stmp3xxx_wdt.c
+deleted file mode 100644
+index 1f4f697..0000000
+--- a/drivers/watchdog/stmp3xxx_wdt.c
++++ /dev/null
+@@ -1,288 +0,0 @@
+-/*
+- * Watchdog driver for Freescale STMP37XX/STMP378X
+- *
+- * Author: Vitaly Wool <vi...@em...>
+- *
+- * Copyright 2008 Freescale Semiconductor, Inc. All Rights Reserved.
+- * Copyright 2008 Embedded Alley Solutions, Inc All Rights Reserved.
+- */
+-
+-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+-
+-#include <linux/init.h>
+-#include <linux/kernel.h>
+-#include <linux/fs.h>
+-#include <linux/miscdevice.h>
+-#include <linux/watchdog.h>
+-#include <linux/platform_device.h>
+-#include <linux/spinlock.h>
+-#include <linux/uaccess.h>
+-#include <linux/module.h>
+-
+-#include <mach/platform.h>
+-#include <mach/regs-rtc.h>
+-
+-#define DEFAULT_HEARTBEAT 19
+-#define MAX_HEARTBEAT (0x10000000 >> 6)
+-
+-/* missing bitmask in headers */
+-#define BV_RTC_PERSISTENT1_GENERAL__RTC_FORCE_UPDATER 0x80000000
+-
+-#define WDT_IN_USE 0
+-#define WDT_OK_TO_CLOSE 1
+-
+-#define WDOG_COUNTER_RATE 1000 /* 1 kHz clock */
+-
+-static DEFINE_SPINLOCK(stmp3xxx_wdt_io_lock);
+-static unsigned long wdt_status;
+-static const bool nowayout = WATCHDOG_NOWAYOUT;
+-static int heartbeat = DEFAULT_HEARTBEAT;
+-static unsigned long boot_status;
+-
+-static void wdt_enable(u32 value)
+-{
+- spin_lock(&stmp3xxx_wdt_io_lock);
+- __raw_writel(value, REGS_RTC_BASE + HW_RTC_WATCHDOG);
+- stmp3xxx_setl(BM_RTC_CTRL_WATCHDOGEN, REGS_RTC_BASE + HW_RTC_CTRL);
+- stmp3xxx_setl(BV_RTC_PERSISTENT1_GENERAL__RTC_FORCE_UPDATER,
+- REGS_RTC_BASE + HW_RTC_PERSISTENT1);
+- spin_unlock(&stmp3xxx_wdt_io_lock);
+-}
+-
+-static void wdt_disable(void)
+-{
+- spin_lock(&stmp3xxx_wdt_io_lock);
+- stmp3xxx_clearl(BV_RTC_PERSISTENT1_GENERAL__RTC_FORCE_UPDATER,
+- REGS_RTC_BASE + HW_RTC_PERSISTENT1);
+- stmp3xxx_clearl(BM_RTC_CTRL_WATCHDOGEN, REGS_RTC_BASE + HW_RTC_CTRL);
+- spin_unlock(&stmp3xxx_wdt_io_lock);
+-}
+-
+-static void wdt_ping(void)
+-{
+- wdt_enable(heartbeat * WDOG_COUNTER_RATE);
+-}
+-
+-static int stmp3xxx_wdt_open(struct inode *inode, struct file *file)
+-{
+- if (test_and_set_bit(WDT_IN_USE, &wdt_status))
+- return -EBUSY;
+-
+- clear_bit(WDT_OK_TO_CLOSE, &wdt_status);
+- wdt_ping();
+-
+- return nonseekable_open(inode, file);
+-}
+-
+-static ssize_t stmp3xxx_wdt_write(struct file *file, const char __user *data,
+- size_t len, loff_t *ppos)
+-{
+- if (len) {
+- if (!nowayout) {
+- size_t i;
+-
+- clear_bit(WDT_OK_TO_CLOSE, &wdt_status);
+-
+- for (i = 0; i != len; i++) {
+- char c;
+-
+- if (get_user(c, data + i))
+- return -EFAULT;
+- if (c == 'V')
+- set_bit(WDT_OK_TO_CLOSE, &wdt_status);
+- }
+- }
+- wdt_ping();
+- }
+-
+- return len;
+-}
+-
+-static const struct watchdog_info ident = {
+- .options = WDIOF_CARDRESET |
+- WDIOF_MAGICCLOSE |
+- WDIOF_SETTIMEOUT |
+- WDIOF_KEEPALIVEPING,
+- .identity = "STMP3XXX Watchdog",
+-};
+-
+-static long stmp3xxx_wdt_ioctl(struct file *file, unsigned int cmd,
+- unsigned long arg)
+-{
+- void __user *argp = (void __user *)arg;
+- int __user *p = argp;
+- int new_heartbeat, opts;
+- int ret = -ENOTTY;
+-
+- switch (cmd) {
+- case WDIOC_GETSUPPORT:
+- ret = copy_to_user(argp, &ident, sizeof(ident)) ? -EFAULT : 0;
+- break;
+-
+- case WDIOC_GETSTATUS:
+- ret = put_user(0, p);
+- break;
+-
+- case WDIOC_GETBOOTSTATUS:
+- ret = put_user(boot_status, p);
+- break;
+-
+- case WDIOC_SETOPTIONS:
+- if (get_user(opts, p)) {
+- ret = -EFAULT;
+- break;
+- }
+- if (opts & WDIOS_DISABLECARD)
+- wdt_disable();
+- else if (opts & WDIOS_ENABLECARD)
+- wdt_ping();
+- else {
+- pr_debug("%s: unknown option 0x%x\n", __func__, opts);
+- ret = -EINVAL;
+- break;
+- }
+- ret = 0;
+- break;
+-
+- case WDIOC_KEEPALIVE:
+- wdt_ping();
+- ret = 0;
+- break;
+-
+- case WDIOC_SETTIMEOUT:
+- if (get_user(new_heartbeat, p)) {
+- ret = -EFAULT;
+- break;
+- }
+- if (new_heartbeat <= 0 || new_heartbeat > MAX_HEARTBEAT) {
+- ret = -EINVAL;
+- break;
+- }
+-
+- heartbeat = new_heartbeat;
+- wdt_ping();
+- /* Fall through */
+-
+- case WDIOC_GETTIMEOUT:
+- ret = put_user(heartbeat, p);
+- break;
+- }
+- return ret;
+-}
+-
+-static int stmp3xxx_wdt_release(struct inode *inode, struct file *file)
+-{
+- int ret = 0;
+-
+- if (!nowayout) {
+- if (!test_bit(WDT_OK_TO_CLOSE, &wdt_status)) {
+- wdt_ping();
+- pr_debug("%s: Device closed unexpectedly\n", __func__);
+- ret = -EINVAL;
+- } else {
+- wdt_disable();
+- clear_bit(WDT_OK_TO_CLOSE, &wdt_status);
+- }
+- }
+- clear_bit(WDT_IN_USE, &wdt_status);
+-
+- return ret;
+-}
+-
+-static const struct file_operations stmp3xxx_wdt_fops = {
+- .owner = THIS_MODULE,
+- .llseek = no_llseek,
+- .write = stmp3xxx_wdt_write,
+- .unlocked_ioctl = stmp3xxx_wdt_ioctl,
+- .open = stmp3xxx_wdt_open,
+- .release = stmp3xxx_wdt_release,
+-};
+-
+-static struct miscdevice stmp3xxx_wdt_miscdev = {
+- .minor = WATCHDOG_MINOR,
+- .name = "watchdog",
+- .fops = &stmp3xxx_wdt_fops,
+-};
+-
+-static int __devinit stmp3xxx_wdt_probe(struct platform_device *pdev)
+-{
+- int ret = 0;
+-
+- if (heartbeat < 1 || heartbeat > MAX_HEARTBEAT)
+- heartbeat = DEFAULT_HEARTBEAT;
+-
+- boot_status = __raw_readl(REGS_RTC_BASE + HW_RTC_PERSISTENT1) &
+- BV_RTC_PERSISTENT1_GENERAL__RTC_FORCE_UPDATER;
+- boot_status = !!boot_status;
+- stmp3xxx_clearl(BV_RTC_PERSISTENT1_GENERAL__RTC_FORCE_UPDATER,
+- REGS_RTC_BASE + HW_RTC_PERSISTENT1);
+- wdt_disable(); /* disable for now */
+-
+- ret = misc_register(&stmp3xxx_wdt_miscdev);
+- if (ret < 0) {
+- dev_err(&pdev->dev, "cannot register misc device\n");
+- return ret;
+- }
+-
+- pr_info("initialized, heartbeat %d sec\n", heartbeat);
+-
+- return ret;
+-}
+-
+-static int __devexit stmp3xxx_wdt_remove(struct platform_device *pdev)
+-{
+- misc_deregister(&stmp3xxx_wdt_miscdev);
+- return 0;
+-}
+-
+-#ifdef CONFIG_PM
+-static int wdt_suspended;
+-static u32 wdt_saved_time;
+-
+-static int stmp3xxx_wdt_suspend(struct platform_device *pdev,
+- pm_message_t state)
+-{
+- if (__raw_readl(REGS_RTC_BASE + HW_RTC_CTRL) &
+- BM_RTC_CTRL_WATCHDOGEN) {
+- wdt_suspended = 1;
+- wdt_saved_time = __raw_readl(REGS_RTC_BASE + HW_RTC_WATCHDOG);
+- wdt_disable();
+- }
+- return 0;
+-}
+-
+-static int stmp3xxx_wdt_resume(struct platform_device *pdev)
+-{
+- if (wdt_suspended) {
+- wdt_enable(wdt_saved_time);
+- wdt_suspended = 0;
+- }
+- return 0;
+-}
+-#else
+-#define stmp3xxx_wdt_suspend NULL
+-#define stmp3xxx_wdt_resume NULL
+-#endif
+-
+-static struct platform_driver platform_wdt_driver = {
+- .driver = {
+- .name = "stmp3xxx_wdt",
+- },
+- .probe = stmp3xxx_wdt_probe,
+- .remove = __devexit_p(stmp3xxx_wdt_remove),
+- .suspend = stmp3xxx_wdt_suspend,
+- .resume = stmp3xxx_wdt_resume,
+-};
+-
+-module_platform_driver(platform_wdt_driver);
+-
+-MODULE_DESCRIPTION("STMP3XXX Watchdog Driver");
+-MODULE_LICENSE("GPL");
+-
+-module_param(heartbeat, int, 0);
+-MODULE_PARM_DESC(heartbeat,
+- "Watchdog heartbeat period in seconds from 1 to "
+- __MODULE_STRING(MAX_HEARTBEAT) ", default "
+- __MODULE_STRING(DEFAULT_HEARTBEAT));
+-
+-MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
+--
+cgit v0.10.1
+
hooks/post-receive
--
armadeus
|