From 5ff1f06f1f24b9b10cd4f203bc0d6387589d5e81 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 13 Dec 2007 20:02:52 +0000 Subject: [PATCH] cleanup danube watchdog timer SVN-Revision: 9730 --- .../files/drivers/char/watchdog/danube_wdt.c | 44 +++++++------------ 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/target/linux/danube/files/drivers/char/watchdog/danube_wdt.c b/target/linux/danube/files/drivers/char/watchdog/danube_wdt.c index cf01a9d793..be2b339381 100644 --- a/target/linux/danube/files/drivers/char/watchdog/danube_wdt.c +++ b/target/linux/danube/files/drivers/char/watchdog/danube_wdt.c @@ -18,28 +18,17 @@ * */ -#include -#include -#include -#include -#include -#include -#include -#include +#include #include #include -#include -#include -#include -#include -#include -#include #include -#include -#include +#include #include #include + +// TODO remove magic numbers and weirdo macros + extern unsigned int danube_get_fpi_hz (void); static int danube_wdt_inuse = 0; @@ -90,8 +79,8 @@ danube_wdt_enable (unsigned int timeout) DANUBE_BIU_WDT_CR_RELOAD_SET(wdt_reload) | DANUBE_BIU_WDT_CR_GEN); - /* Set reload value in second password access */ writel(wdt_cr, DANUBE_BIU_WDT_CR); + printk("watchdog enabled\n"); out: @@ -101,11 +90,10 @@ out: void danube_wdt_disable (void) { - /* Write first part of password access */ writel(DANUBE_BIU_WDT_CR_PW_SET(DANUBE_WDT_PW1), DANUBE_BIU_WDT_CR); - - /* Disable the watchdog in second password access (GEN=0) */ writel(DANUBE_BIU_WDT_CR_PW_SET(DANUBE_WDT_PW2), DANUBE_BIU_WDT_CR); + + printk("watchdog disabled\n"); } /* passed LPEN or DSEN */ @@ -127,7 +115,6 @@ danube_wdt_enable_feature (int en, int type) wdt_cr |= DANUBE_BIU_WDT_CR_PW_SET(DANUBE_WDT_PW2); } - /* Set reload value in second password access */ writel(wdt_cr, DANUBE_BIU_WDT_CR); } @@ -140,8 +127,7 @@ danube_wdt_prewarning_limit (int pwl) writel(DANUBE_BIU_WDT_CR_PW_SET(DANUBE_WDT_PW1), DANUBE_BIU_WDT_CR); wdt_cr &= 0xf300ffff; - wdt_cr |= (DANUBE_BIU_WDT_CR_PW_SET(DANUBE_WDT_PW2) | - DANUBE_BIU_WDT_CR_PWL_SET(pwl)); + wdt_cr |= (DANUBE_BIU_WDT_CR_PW_SET(DANUBE_WDT_PW2) | DANUBE_BIU_WDT_CR_PWL_SET(pwl)); /* Set reload value in second password access */ writel(wdt_cr, DANUBE_BIU_WDT_CR); @@ -156,8 +142,7 @@ danube_wdt_set_clkdiv (int clkdiv) writel(DANUBE_BIU_WDT_CR_PW_SET(DANUBE_WDT_PW1), DANUBE_BIU_WDT_CR); wdt_cr &= 0xfc00ffff; - wdt_cr |= (DANUBE_BIU_WDT_CR_PW_SET(DANUBE_WDT_PW2) | - DANUBE_BIU_WDT_CR_CLKDIV_SET(clkdiv)); + wdt_cr |= (DANUBE_BIU_WDT_CR_PW_SET(DANUBE_WDT_PW2) | DANUBE_BIU_WDT_CR_CLKDIV_SET(clkdiv)); /* Set reload value in second password access */ writel(wdt_cr, DANUBE_BIU_WDT_CR); @@ -173,14 +158,15 @@ danube_wdt_ioctl (struct inode *inode, struct file *file, unsigned int cmd, if ((cmd != DANUBE_WDT_IOC_STOP) && (cmd != DANUBE_WDT_IOC_PING) && (cmd != DANUBE_WDT_IOC_GET_STATUS)) { - if (copy_from_user((void *) &user_arg, (void *) arg, sizeof (int))) + if (copy_from_user((void *) &user_arg, (void *) arg, sizeof (int))){ result = -EINVAL; + goto out; + } } switch (cmd) { case DANUBE_WDT_IOC_START: - printk("enable watch dog timer!\n"); if ((result = danube_wdt_enable(user_arg)) < 0) timeout = -1; else @@ -219,8 +205,12 @@ danube_wdt_ioctl (struct inode *inode, struct file *file, unsigned int cmd, case DANUBE_WDT_IOC_SET_CLKDIV: danube_wdt_set_clkdiv(user_arg); break; + + default: + printk("unknown watchdog iotcl\n"); } +out: return result; } -- 2.30.2