diff options
Diffstat (limited to 'drivers/watchdog/sbc7240_wdt.c')
-rw-r--r-- | drivers/watchdog/sbc7240_wdt.c | 70 |
1 files changed, 35 insertions, 35 deletions
diff --git a/drivers/watchdog/sbc7240_wdt.c b/drivers/watchdog/sbc7240_wdt.c index 4c8cefbd8627..67ddeb1c830a 100644 --- a/drivers/watchdog/sbc7240_wdt.c +++ b/drivers/watchdog/sbc7240_wdt.c | |||
@@ -27,10 +27,10 @@ | |||
27 | #include <linux/reboot.h> | 27 | #include <linux/reboot.h> |
28 | #include <linux/types.h> | 28 | #include <linux/types.h> |
29 | #include <linux/watchdog.h> | 29 | #include <linux/watchdog.h> |
30 | #include <linux/io.h> | ||
31 | #include <linux/uaccess.h> | ||
30 | #include <asm/atomic.h> | 32 | #include <asm/atomic.h> |
31 | #include <asm/io.h> | ||
32 | #include <asm/system.h> | 33 | #include <asm/system.h> |
33 | #include <asm/uaccess.h> | ||
34 | 34 | ||
35 | #define SBC7240_PREFIX "sbc7240_wdt: " | 35 | #define SBC7240_PREFIX "sbc7240_wdt: " |
36 | 36 | ||
@@ -159,7 +159,7 @@ static int fop_close(struct inode *inode, struct file *file) | |||
159 | return 0; | 159 | return 0; |
160 | } | 160 | } |
161 | 161 | ||
162 | static struct watchdog_info ident = { | 162 | static const struct watchdog_info ident = { |
163 | .options = WDIOF_KEEPALIVEPING| | 163 | .options = WDIOF_KEEPALIVEPING| |
164 | WDIOF_SETTIMEOUT| | 164 | WDIOF_SETTIMEOUT| |
165 | WDIOF_MAGICCLOSE, | 165 | WDIOF_MAGICCLOSE, |
@@ -168,50 +168,50 @@ static struct watchdog_info ident = { | |||
168 | }; | 168 | }; |
169 | 169 | ||
170 | 170 | ||
171 | static int fop_ioctl(struct inode *inode, struct file *file, unsigned int cmd, | 171 | static long fop_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
172 | unsigned long arg) | ||
173 | { | 172 | { |
174 | switch (cmd) { | 173 | switch (cmd) { |
175 | case WDIOC_GETSUPPORT: | 174 | case WDIOC_GETSUPPORT: |
176 | return copy_to_user | 175 | return copy_to_user((void __user *)arg, &ident, sizeof(ident)) |
177 | ((void __user *)arg, &ident, sizeof(ident)) | 176 | ? -EFAULT : 0; |
178 | ? -EFAULT : 0; | ||
179 | case WDIOC_GETSTATUS: | 177 | case WDIOC_GETSTATUS: |
180 | case WDIOC_GETBOOTSTATUS: | 178 | case WDIOC_GETBOOTSTATUS: |
181 | return put_user(0, (int __user *)arg); | 179 | return put_user(0, (int __user *)arg); |
182 | case WDIOC_KEEPALIVE: | 180 | case WDIOC_SETOPTIONS: |
183 | wdt_keepalive(); | 181 | { |
184 | return 0; | 182 | int options; |
185 | case WDIOC_SETOPTIONS:{ | 183 | int retval = -EINVAL; |
186 | int options; | ||
187 | int retval = -EINVAL; | ||
188 | 184 | ||
189 | if (get_user(options, (int __user *)arg)) | 185 | if (get_user(options, (int __user *)arg)) |
190 | return -EFAULT; | 186 | return -EFAULT; |
191 | 187 | ||
192 | if (options & WDIOS_DISABLECARD) { | 188 | if (options & WDIOS_DISABLECARD) { |
193 | wdt_disable(); | 189 | wdt_disable(); |
194 | retval = 0; | 190 | retval = 0; |
195 | } | 191 | } |
196 | |||
197 | if (options & WDIOS_ENABLECARD) { | ||
198 | wdt_enable(); | ||
199 | retval = 0; | ||
200 | } | ||
201 | 192 | ||
202 | return retval; | 193 | if (options & WDIOS_ENABLECARD) { |
194 | wdt_enable(); | ||
195 | retval = 0; | ||
203 | } | 196 | } |
204 | case WDIOC_SETTIMEOUT:{ | ||
205 | int new_timeout; | ||
206 | 197 | ||
207 | if (get_user(new_timeout, (int __user *)arg)) | 198 | return retval; |
208 | return -EFAULT; | 199 | } |
200 | case WDIOC_KEEPALIVE: | ||
201 | wdt_keepalive(); | ||
202 | return 0; | ||
203 | case WDIOC_SETTIMEOUT: | ||
204 | { | ||
205 | int new_timeout; | ||
209 | 206 | ||
210 | if (wdt_set_timeout(new_timeout)) | 207 | if (get_user(new_timeout, (int __user *)arg)) |
211 | return -EINVAL; | 208 | return -EFAULT; |
212 | 209 | ||
213 | /* Fall through */ | 210 | if (wdt_set_timeout(new_timeout)) |
214 | } | 211 | return -EINVAL; |
212 | |||
213 | /* Fall through */ | ||
214 | } | ||
215 | case WDIOC_GETTIMEOUT: | 215 | case WDIOC_GETTIMEOUT: |
216 | return put_user(timeout, (int __user *)arg); | 216 | return put_user(timeout, (int __user *)arg); |
217 | default: | 217 | default: |
@@ -225,7 +225,7 @@ static const struct file_operations wdt_fops = { | |||
225 | .write = fop_write, | 225 | .write = fop_write, |
226 | .open = fop_open, | 226 | .open = fop_open, |
227 | .release = fop_close, | 227 | .release = fop_close, |
228 | .ioctl = fop_ioctl, | 228 | .unlocked_ioctl = fop_ioctl, |
229 | }; | 229 | }; |
230 | 230 | ||
231 | static struct miscdevice wdt_miscdev = { | 231 | static struct miscdevice wdt_miscdev = { |