|
@@ -525,6 +525,10 @@ static long ds1374_wdt_ioctl(struct file *file, unsigned int cmd,
|
|
|
if (get_user(new_margin, (int __user *)arg))
|
|
|
return -EFAULT;
|
|
|
|
|
|
+ /* the hardware's tick rate is 4096 Hz, so
|
|
|
+ * the counter value needs to be scaled accordingly
|
|
|
+ */
|
|
|
+ new_margin <<= 12;
|
|
|
if (new_margin < 1 || new_margin > 16777216)
|
|
|
return -EINVAL;
|
|
|
|
|
@@ -533,7 +537,8 @@ static long ds1374_wdt_ioctl(struct file *file, unsigned int cmd,
|
|
|
ds1374_wdt_ping();
|
|
|
/* fallthrough */
|
|
|
case WDIOC_GETTIMEOUT:
|
|
|
- return put_user(wdt_margin, (int __user *)arg);
|
|
|
+ /* when returning ... inverse is true */
|
|
|
+ return put_user((wdt_margin >> 12), (int __user *)arg);
|
|
|
case WDIOC_SETOPTIONS:
|
|
|
if (copy_from_user(&options, (int __user *)arg, sizeof(int)))
|
|
|
return -EFAULT;
|