Re: [RESEND PATCH v3 1/6] watchdog: omap_wdt: convert to new watchdog core

2012-12-13 Thread Tony Lindgren
* Sebastian Reichel s...@debian.org [121213 17:26]:
 On Mon, Nov 12, 2012 at 02:47:03PM -0800, Tony Lindgren wrote:
  * Aaro Koskinen aaro.koski...@iki.fi [121112 10:49]:
   Convert omap_wdt to new watchdog core. On OMAP boards, there are usually
   multiple watchdogs. Since the new watchdog core supports multiple
   watchdogs, all watchdog drivers used on OMAP should be converted.
   
   The legacy watchdog device node is still created, so this should not
   break existing users.
   
   Signed-off-by: Aaro Koskinen aaro.koski...@iki.fi
   Tested-by: Jarkko Nikula jarkko.nik...@jollamobile.com
   Tested-by: Lokesh Vutla lokeshvu...@ti.com
   Cc: Wim Van Sebroeck w...@iguana.be
  
  Wim, looks like these will cause merge conflicts with what we
  have already queued in omap-for-v3.8/cleanup-prcm as patch
  watchdog: OMAP: use standard GETBOOTSTATUS interface; use
  platform_data fn ptr along with other ARM multiplatform
  related clean up. If these look ackable to you, I can queue
  these that's OK to you.
 
 What's the status of this patchset? If I'm not mistaken it is
 neither included in linux-omap, nor in linux-watchdog-next.

It should be all linux-watchdog-next with what got merged into
the mainline kernel today. No more arch/arm/*omap*/ dependencies
AFAIK.

Regards,

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RESEND PATCH v3 1/6] watchdog: omap_wdt: convert to new watchdog core

2012-12-13 Thread Sebastian Reichel
On Mon, Nov 12, 2012 at 02:47:03PM -0800, Tony Lindgren wrote:
 * Aaro Koskinen aaro.koski...@iki.fi [121112 10:49]:
  Convert omap_wdt to new watchdog core. On OMAP boards, there are usually
  multiple watchdogs. Since the new watchdog core supports multiple
  watchdogs, all watchdog drivers used on OMAP should be converted.
  
  The legacy watchdog device node is still created, so this should not
  break existing users.
  
  Signed-off-by: Aaro Koskinen aaro.koski...@iki.fi
  Tested-by: Jarkko Nikula jarkko.nik...@jollamobile.com
  Tested-by: Lokesh Vutla lokeshvu...@ti.com
  Cc: Wim Van Sebroeck w...@iguana.be
 
 Wim, looks like these will cause merge conflicts with what we
 have already queued in omap-for-v3.8/cleanup-prcm as patch
 watchdog: OMAP: use standard GETBOOTSTATUS interface; use
 platform_data fn ptr along with other ARM multiplatform
 related clean up. If these look ackable to you, I can queue
 these that's OK to you.

What's the status of this patchset? If I'm not mistaken it is
neither included in linux-omap, nor in linux-watchdog-next.

-- Sebastian


signature.asc
Description: Digital signature


Re: [RESEND PATCH v3 1/6] watchdog: omap_wdt: convert to new watchdog core

2012-12-13 Thread Sebastian Reichel
Hi Tony,

On Thu, Dec 13, 2012 at 05:32:57PM -0800, Tony Lindgren wrote:
 * Sebastian Reichel s...@debian.org [121213 17:26]:
  What's the status of this patchset? If I'm not mistaken it is
  neither included in linux-omap, nor in linux-watchdog-next.
 
 It should be all linux-watchdog-next with what got merged into
 the mainline kernel today. No more arch/arm/*omap*/ dependencies
 AFAIK.

I can see the dependency fixes, but the driver itself is still using
miscdevice instead of the new watchdog core:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=drivers/watchdog/omap_wdt.c;b=master

This patch is not needed for using the watchdog on a multiplatform
kernel, but using multiple watchdogs (i.e. twl4030_wdt and omap_wdt)
at the same time. It also simplifies the driver.

-- Sebastian


signature.asc
Description: Digital signature


Re: [RESEND PATCH v3 1/6] watchdog: omap_wdt: convert to new watchdog core

2012-12-13 Thread Aaro Koskinen
Hi,

On Fri, Dec 14, 2012 at 02:23:36AM +0100, Sebastian Reichel wrote:
 On Mon, Nov 12, 2012 at 02:47:03PM -0800, Tony Lindgren wrote:
  * Aaro Koskinen aaro.koski...@iki.fi [121112 10:49]:
   Convert omap_wdt to new watchdog core. On OMAP boards, there are usually
   multiple watchdogs. Since the new watchdog core supports multiple
   watchdogs, all watchdog drivers used on OMAP should be converted.
   
   The legacy watchdog device node is still created, so this should not
   break existing users.
   
   Signed-off-by: Aaro Koskinen aaro.koski...@iki.fi
   Tested-by: Jarkko Nikula jarkko.nik...@jollamobile.com
   Tested-by: Lokesh Vutla lokeshvu...@ti.com
   Cc: Wim Van Sebroeck w...@iguana.be
  
  Wim, looks like these will cause merge conflicts with what we
  have already queued in omap-for-v3.8/cleanup-prcm as patch
  watchdog: OMAP: use standard GETBOOTSTATUS interface; use
  platform_data fn ptr along with other ARM multiplatform
  related clean up. If these look ackable to you, I can queue
  these that's OK to you.
 
 What's the status of this patchset? If I'm not mistaken it is
 neither included in linux-omap, nor in linux-watchdog-next.

Since it's not in -next, then I guess it won't appear in 3.8. Once
the 3.8-rc1 is out, I will continue rebasing/retesting/resending the
patch set...

A.
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[RESEND PATCH v3 1/6] watchdog: omap_wdt: convert to new watchdog core

2012-11-12 Thread Aaro Koskinen
Convert omap_wdt to new watchdog core. On OMAP boards, there are usually
multiple watchdogs. Since the new watchdog core supports multiple
watchdogs, all watchdog drivers used on OMAP should be converted.

The legacy watchdog device node is still created, so this should not
break existing users.

Signed-off-by: Aaro Koskinen aaro.koski...@iki.fi
Tested-by: Jarkko Nikula jarkko.nik...@jollamobile.com
Tested-by: Lokesh Vutla lokeshvu...@ti.com
Cc: Wim Van Sebroeck w...@iguana.be
---
 drivers/watchdog/Kconfig|1 +
 drivers/watchdog/omap_wdt.c |  274 ++-
 2 files changed, 118 insertions(+), 157 deletions(-)

diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index ad1bb93..a7f5590 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -232,6 +232,7 @@ config EP93XX_WATCHDOG
 config OMAP_WATCHDOG
tristate OMAP Watchdog
depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS
+   select WATCHDOG_CORE
help
  Support for TI OMAP1610/OMAP1710/OMAP2420/OMAP3430/OMAP4430 watchdog. 
 Say 'Y'
  here to enable the OMAP1610/OMAP1710/OMAP2420/OMAP3430/OMAP4430 
watchdog timer.
diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c
index f5db18db..d28ad5e 100644
--- a/drivers/watchdog/omap_wdt.c
+++ b/drivers/watchdog/omap_wdt.c
@@ -31,18 +31,14 @@
 #include linux/module.h
 #include linux/types.h
 #include linux/kernel.h
-#include linux/fs.h
 #include linux/mm.h
-#include linux/miscdevice.h
 #include linux/watchdog.h
 #include linux/reboot.h
 #include linux/init.h
 #include linux/err.h
 #include linux/platform_device.h
 #include linux/moduleparam.h
-#include linux/bitops.h
 #include linux/io.h
-#include linux/uaccess.h
 #include linux/slab.h
 #include linux/pm_runtime.h
 #include mach/hardware.h
@@ -51,24 +47,20 @@
 
 #include omap_wdt.h
 
-static struct platform_device *omap_wdt_dev;
-
 static unsigned timer_margin;
 module_param(timer_margin, uint, 0);
 MODULE_PARM_DESC(timer_margin, initial watchdog timeout (in seconds));
 
-static unsigned int wdt_trgr_pattern = 0x1234;
-static DEFINE_SPINLOCK(wdt_lock);
-
 struct omap_wdt_dev {
void __iomem*base;  /* physical */
struct device   *dev;
-   int omap_wdt_users;
+   boolomap_wdt_users;
struct resource *mem;
-   struct miscdevice omap_wdt_miscdev;
+   int wdt_trgr_pattern;
+   struct mutexlock;   /* to avoid races with PM */
 };
 
-static void omap_wdt_ping(struct omap_wdt_dev *wdev)
+static void __omap_wdt_ping(struct omap_wdt_dev *wdev)
 {
void __iomem*base = wdev-base;
 
@@ -76,8 +68,8 @@ static void omap_wdt_ping(struct omap_wdt_dev *wdev)
while ((__raw_readl(base + OMAP_WATCHDOG_WPS))  0x08)
cpu_relax();
 
-   wdt_trgr_pattern = ~wdt_trgr_pattern;
-   __raw_writel(wdt_trgr_pattern, (base + OMAP_WATCHDOG_TGR));
+   wdev-wdt_trgr_pattern = ~wdev-wdt_trgr_pattern;
+   __raw_writel(wdev-wdt_trgr_pattern, (base + OMAP_WATCHDOG_TGR));
 
/* wait for posted write to complete */
while ((__raw_readl(base + OMAP_WATCHDOG_WPS))  0x08)
@@ -85,7 +77,7 @@ static void omap_wdt_ping(struct omap_wdt_dev *wdev)
/* reloaded WCRR from WLDR */
 }
 
-static void omap_wdt_enable(struct omap_wdt_dev *wdev)
+static void __omap_wdt_enable(struct omap_wdt_dev *wdev)
 {
void __iomem *base = wdev-base;
 
@@ -99,7 +91,7 @@ static void omap_wdt_enable(struct omap_wdt_dev *wdev)
cpu_relax();
 }
 
-static void omap_wdt_disable(struct omap_wdt_dev *wdev)
+static void __omap_wdt_disable(struct omap_wdt_dev *wdev)
 {
void __iomem *base = wdev-base;
 
@@ -113,18 +105,10 @@ static void omap_wdt_disable(struct omap_wdt_dev *wdev)
cpu_relax();
 }
 
-static void omap_wdt_adjust_timeout(unsigned new_timeout)
-{
-   if (new_timeout  TIMER_MARGIN_MIN)
-   new_timeout = TIMER_MARGIN_DEFAULT;
-   if (new_timeout  TIMER_MARGIN_MAX)
-   new_timeout = TIMER_MARGIN_MAX;
-   timer_margin = new_timeout;
-}
-
-static void omap_wdt_set_timeout(struct omap_wdt_dev *wdev)
+static void __omap_wdt_set_timeout(struct omap_wdt_dev *wdev,
+  unsigned int timeout)
 {
-   u32 pre_margin = GET_WLDR_VAL(timer_margin);
+   u32 pre_margin = GET_WLDR_VAL(timeout);
void __iomem *base = wdev-base;
 
/* just count up at 32 KHz */
@@ -136,16 +120,14 @@ static void omap_wdt_set_timeout(struct omap_wdt_dev 
*wdev)
cpu_relax();
 }
 
-/*
- * Allow only one task to hold it open
- */
-static int omap_wdt_open(struct inode *inode, struct file *file)
+static int omap_wdt_start(struct watchdog_device *wdog)
 {
-   struct omap_wdt_dev *wdev = platform_get_drvdata(omap_wdt_dev);
+   struct omap_wdt_dev *wdev = watchdog_get_drvdata(wdog);
void __iomem *base = wdev-base;
 
-   

Re: [RESEND PATCH v3 1/6] watchdog: omap_wdt: convert to new watchdog core

2012-11-12 Thread Tony Lindgren
* Aaro Koskinen aaro.koski...@iki.fi [121112 10:49]:
 Convert omap_wdt to new watchdog core. On OMAP boards, there are usually
 multiple watchdogs. Since the new watchdog core supports multiple
 watchdogs, all watchdog drivers used on OMAP should be converted.
 
 The legacy watchdog device node is still created, so this should not
 break existing users.
 
 Signed-off-by: Aaro Koskinen aaro.koski...@iki.fi
 Tested-by: Jarkko Nikula jarkko.nik...@jollamobile.com
 Tested-by: Lokesh Vutla lokeshvu...@ti.com
 Cc: Wim Van Sebroeck w...@iguana.be

Wim, looks like these will cause merge conflicts with what we
have already queued in omap-for-v3.8/cleanup-prcm as patch
watchdog: OMAP: use standard GETBOOTSTATUS interface; use
platform_data fn ptr along with other ARM multiplatform
related clean up. If these look ackable to you, I can queue
these that's OK to you.

Regards,

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[RESEND PATCH v3 1/6] watchdog: omap_wdt: convert to new watchdog core

2012-10-25 Thread Aaro Koskinen
Convert omap_wdt to new watchdog core. On OMAP boards, there are usually
multiple watchdogs. Since the new watchdog core supports multiple
watchdogs, all watchdog drivers used on OMAP should be converted.

The legacy watchdog device node is still created, so this should not
break existing users.

Signed-off-by: Aaro Koskinen aaro.koski...@iki.fi
Tested-by: Jarkko Nikula jarkko.nik...@jollamobile.com
Tested-by: Lokesh Vutla lokeshvu...@ti.com
---
 drivers/watchdog/Kconfig|1 +
 drivers/watchdog/omap_wdt.c |  274 ++-
 2 files changed, 118 insertions(+), 157 deletions(-)

diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index ad1bb93..a7f5590 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -232,6 +232,7 @@ config EP93XX_WATCHDOG
 config OMAP_WATCHDOG
tristate OMAP Watchdog
depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS
+   select WATCHDOG_CORE
help
  Support for TI OMAP1610/OMAP1710/OMAP2420/OMAP3430/OMAP4430 watchdog. 
 Say 'Y'
  here to enable the OMAP1610/OMAP1710/OMAP2420/OMAP3430/OMAP4430 
watchdog timer.
diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c
index f5db18db..d28ad5e 100644
--- a/drivers/watchdog/omap_wdt.c
+++ b/drivers/watchdog/omap_wdt.c
@@ -31,18 +31,14 @@
 #include linux/module.h
 #include linux/types.h
 #include linux/kernel.h
-#include linux/fs.h
 #include linux/mm.h
-#include linux/miscdevice.h
 #include linux/watchdog.h
 #include linux/reboot.h
 #include linux/init.h
 #include linux/err.h
 #include linux/platform_device.h
 #include linux/moduleparam.h
-#include linux/bitops.h
 #include linux/io.h
-#include linux/uaccess.h
 #include linux/slab.h
 #include linux/pm_runtime.h
 #include mach/hardware.h
@@ -51,24 +47,20 @@
 
 #include omap_wdt.h
 
-static struct platform_device *omap_wdt_dev;
-
 static unsigned timer_margin;
 module_param(timer_margin, uint, 0);
 MODULE_PARM_DESC(timer_margin, initial watchdog timeout (in seconds));
 
-static unsigned int wdt_trgr_pattern = 0x1234;
-static DEFINE_SPINLOCK(wdt_lock);
-
 struct omap_wdt_dev {
void __iomem*base;  /* physical */
struct device   *dev;
-   int omap_wdt_users;
+   boolomap_wdt_users;
struct resource *mem;
-   struct miscdevice omap_wdt_miscdev;
+   int wdt_trgr_pattern;
+   struct mutexlock;   /* to avoid races with PM */
 };
 
-static void omap_wdt_ping(struct omap_wdt_dev *wdev)
+static void __omap_wdt_ping(struct omap_wdt_dev *wdev)
 {
void __iomem*base = wdev-base;
 
@@ -76,8 +68,8 @@ static void omap_wdt_ping(struct omap_wdt_dev *wdev)
while ((__raw_readl(base + OMAP_WATCHDOG_WPS))  0x08)
cpu_relax();
 
-   wdt_trgr_pattern = ~wdt_trgr_pattern;
-   __raw_writel(wdt_trgr_pattern, (base + OMAP_WATCHDOG_TGR));
+   wdev-wdt_trgr_pattern = ~wdev-wdt_trgr_pattern;
+   __raw_writel(wdev-wdt_trgr_pattern, (base + OMAP_WATCHDOG_TGR));
 
/* wait for posted write to complete */
while ((__raw_readl(base + OMAP_WATCHDOG_WPS))  0x08)
@@ -85,7 +77,7 @@ static void omap_wdt_ping(struct omap_wdt_dev *wdev)
/* reloaded WCRR from WLDR */
 }
 
-static void omap_wdt_enable(struct omap_wdt_dev *wdev)
+static void __omap_wdt_enable(struct omap_wdt_dev *wdev)
 {
void __iomem *base = wdev-base;
 
@@ -99,7 +91,7 @@ static void omap_wdt_enable(struct omap_wdt_dev *wdev)
cpu_relax();
 }
 
-static void omap_wdt_disable(struct omap_wdt_dev *wdev)
+static void __omap_wdt_disable(struct omap_wdt_dev *wdev)
 {
void __iomem *base = wdev-base;
 
@@ -113,18 +105,10 @@ static void omap_wdt_disable(struct omap_wdt_dev *wdev)
cpu_relax();
 }
 
-static void omap_wdt_adjust_timeout(unsigned new_timeout)
-{
-   if (new_timeout  TIMER_MARGIN_MIN)
-   new_timeout = TIMER_MARGIN_DEFAULT;
-   if (new_timeout  TIMER_MARGIN_MAX)
-   new_timeout = TIMER_MARGIN_MAX;
-   timer_margin = new_timeout;
-}
-
-static void omap_wdt_set_timeout(struct omap_wdt_dev *wdev)
+static void __omap_wdt_set_timeout(struct omap_wdt_dev *wdev,
+  unsigned int timeout)
 {
-   u32 pre_margin = GET_WLDR_VAL(timer_margin);
+   u32 pre_margin = GET_WLDR_VAL(timeout);
void __iomem *base = wdev-base;
 
/* just count up at 32 KHz */
@@ -136,16 +120,14 @@ static void omap_wdt_set_timeout(struct omap_wdt_dev 
*wdev)
cpu_relax();
 }
 
-/*
- * Allow only one task to hold it open
- */
-static int omap_wdt_open(struct inode *inode, struct file *file)
+static int omap_wdt_start(struct watchdog_device *wdog)
 {
-   struct omap_wdt_dev *wdev = platform_get_drvdata(omap_wdt_dev);
+   struct omap_wdt_dev *wdev = watchdog_get_drvdata(wdog);
void __iomem *base = wdev-base;
 
-   if (test_and_set_bit(1, (unsigned