diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-12-19 00:09:53 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-12-19 00:09:53 -0500 |
commit | 418fbfe979d96efc7b91f29b2085d51541c61f0b (patch) | |
tree | a9acb07328e0c76011727d5b3b6f5407afcd2866 /drivers/sbus | |
parent | 8b132f4ee7304fec4fa27dec67879bc0172e916a (diff) | |
parent | ff60dde9e46b87757d5e83bd58be0688fca8e816 (diff) |
Merge branch 'master'
Diffstat (limited to 'drivers/sbus')
-rw-r--r-- | drivers/sbus/char/jsflash.c | 19 | ||||
-rw-r--r-- | drivers/sbus/char/uctrl.c | 10 | ||||
-rw-r--r-- | drivers/sbus/char/vfc.h | 2 | ||||
-rw-r--r-- | drivers/sbus/char/vfc_dev.c | 6 |
4 files changed, 19 insertions, 18 deletions
diff --git a/drivers/sbus/char/jsflash.c b/drivers/sbus/char/jsflash.c index c12c5046e2fa..14631ac11bc7 100644 --- a/drivers/sbus/char/jsflash.c +++ b/drivers/sbus/char/jsflash.c | |||
@@ -249,11 +249,11 @@ static loff_t jsf_lseek(struct file * file, loff_t offset, int orig) | |||
249 | /* | 249 | /* |
250 | * OS SIMM Cannot be read in other size but a 32bits word. | 250 | * OS SIMM Cannot be read in other size but a 32bits word. |
251 | */ | 251 | */ |
252 | static ssize_t jsf_read(struct file * file, char * buf, | 252 | static ssize_t jsf_read(struct file * file, char __user * buf, |
253 | size_t togo, loff_t *ppos) | 253 | size_t togo, loff_t *ppos) |
254 | { | 254 | { |
255 | unsigned long p = *ppos; | 255 | unsigned long p = *ppos; |
256 | char *tmp = buf; | 256 | char __user *tmp = buf; |
257 | 257 | ||
258 | union byte4 { | 258 | union byte4 { |
259 | char s[4]; | 259 | char s[4]; |
@@ -305,7 +305,7 @@ static ssize_t jsf_read(struct file * file, char * buf, | |||
305 | return tmp-buf; | 305 | return tmp-buf; |
306 | } | 306 | } |
307 | 307 | ||
308 | static ssize_t jsf_write(struct file * file, const char * buf, | 308 | static ssize_t jsf_write(struct file * file, const char __user * buf, |
309 | size_t count, loff_t *ppos) | 309 | size_t count, loff_t *ppos) |
310 | { | 310 | { |
311 | return -ENOSPC; | 311 | return -ENOSPC; |
@@ -356,10 +356,10 @@ static int jsf_ioctl_erase(unsigned long arg) | |||
356 | * Program a block of flash. | 356 | * Program a block of flash. |
357 | * Very simple because we can do it byte by byte anyway. | 357 | * Very simple because we can do it byte by byte anyway. |
358 | */ | 358 | */ |
359 | static int jsf_ioctl_program(unsigned long arg) | 359 | static int jsf_ioctl_program(void __user *arg) |
360 | { | 360 | { |
361 | struct jsflash_program_arg abuf; | 361 | struct jsflash_program_arg abuf; |
362 | char *uptr; | 362 | char __user *uptr; |
363 | unsigned long p; | 363 | unsigned long p; |
364 | unsigned int togo; | 364 | unsigned int togo; |
365 | union { | 365 | union { |
@@ -367,13 +367,13 @@ static int jsf_ioctl_program(unsigned long arg) | |||
367 | char s[4]; | 367 | char s[4]; |
368 | } b; | 368 | } b; |
369 | 369 | ||
370 | if (copy_from_user(&abuf, (char *)arg, JSFPRGSZ)) | 370 | if (copy_from_user(&abuf, arg, JSFPRGSZ)) |
371 | return -EFAULT; | 371 | return -EFAULT; |
372 | p = abuf.off; | 372 | p = abuf.off; |
373 | togo = abuf.size; | 373 | togo = abuf.size; |
374 | if ((togo & 3) || (p & 3)) return -EINVAL; | 374 | if ((togo & 3) || (p & 3)) return -EINVAL; |
375 | 375 | ||
376 | uptr = (char *) (unsigned long) abuf.data; | 376 | uptr = (char __user *) (unsigned long) abuf.data; |
377 | while (togo != 0) { | 377 | while (togo != 0) { |
378 | togo -= 4; | 378 | togo -= 4; |
379 | if (copy_from_user(&b.s[0], uptr, 4)) | 379 | if (copy_from_user(&b.s[0], uptr, 4)) |
@@ -390,19 +390,20 @@ static int jsf_ioctl(struct inode *inode, struct file *f, unsigned int cmd, | |||
390 | unsigned long arg) | 390 | unsigned long arg) |
391 | { | 391 | { |
392 | int error = -ENOTTY; | 392 | int error = -ENOTTY; |
393 | void __user *argp = (void __user *)arg; | ||
393 | 394 | ||
394 | if (!capable(CAP_SYS_ADMIN)) | 395 | if (!capable(CAP_SYS_ADMIN)) |
395 | return -EPERM; | 396 | return -EPERM; |
396 | switch (cmd) { | 397 | switch (cmd) { |
397 | case JSFLASH_IDENT: | 398 | case JSFLASH_IDENT: |
398 | if (copy_to_user((void *)arg, &jsf0.id, JSFIDSZ)) | 399 | if (copy_to_user(argp, &jsf0.id, JSFIDSZ)) |
399 | return -EFAULT; | 400 | return -EFAULT; |
400 | break; | 401 | break; |
401 | case JSFLASH_ERASE: | 402 | case JSFLASH_ERASE: |
402 | error = jsf_ioctl_erase(arg); | 403 | error = jsf_ioctl_erase(arg); |
403 | break; | 404 | break; |
404 | case JSFLASH_PROGRAM: | 405 | case JSFLASH_PROGRAM: |
405 | error = jsf_ioctl_program(arg); | 406 | error = jsf_ioctl_program(argp); |
406 | break; | 407 | break; |
407 | } | 408 | } |
408 | 409 | ||
diff --git a/drivers/sbus/char/uctrl.c b/drivers/sbus/char/uctrl.c index 858cc683f85c..e2d9a7c85427 100644 --- a/drivers/sbus/char/uctrl.c +++ b/drivers/sbus/char/uctrl.c | |||
@@ -309,7 +309,7 @@ static void uctrl_do_txn(struct uctrl_txn *txn) | |||
309 | } | 309 | } |
310 | } | 310 | } |
311 | 311 | ||
312 | void uctrl_get_event_status() | 312 | void uctrl_get_event_status(void) |
313 | { | 313 | { |
314 | struct uctrl_driver *driver = &drv; | 314 | struct uctrl_driver *driver = &drv; |
315 | struct uctrl_txn txn; | 315 | struct uctrl_txn txn; |
@@ -318,7 +318,7 @@ void uctrl_get_event_status() | |||
318 | txn.opcode = READ_EVENT_STATUS; | 318 | txn.opcode = READ_EVENT_STATUS; |
319 | txn.inbits = 0; | 319 | txn.inbits = 0; |
320 | txn.outbits = 2; | 320 | txn.outbits = 2; |
321 | txn.inbuf = 0; | 321 | txn.inbuf = NULL; |
322 | txn.outbuf = outbits; | 322 | txn.outbuf = outbits; |
323 | 323 | ||
324 | uctrl_do_txn(&txn); | 324 | uctrl_do_txn(&txn); |
@@ -329,7 +329,7 @@ void uctrl_get_event_status() | |||
329 | dprintk(("ev is %x\n", driver->status.event_status)); | 329 | dprintk(("ev is %x\n", driver->status.event_status)); |
330 | } | 330 | } |
331 | 331 | ||
332 | void uctrl_get_external_status() | 332 | void uctrl_get_external_status(void) |
333 | { | 333 | { |
334 | struct uctrl_driver *driver = &drv; | 334 | struct uctrl_driver *driver = &drv; |
335 | struct uctrl_txn txn; | 335 | struct uctrl_txn txn; |
@@ -339,7 +339,7 @@ void uctrl_get_external_status() | |||
339 | txn.opcode = READ_EXTERNAL_STATUS; | 339 | txn.opcode = READ_EXTERNAL_STATUS; |
340 | txn.inbits = 0; | 340 | txn.inbits = 0; |
341 | txn.outbits = 2; | 341 | txn.outbits = 2; |
342 | txn.inbuf = 0; | 342 | txn.inbuf = NULL; |
343 | txn.outbuf = outbits; | 343 | txn.outbuf = outbits; |
344 | 344 | ||
345 | uctrl_do_txn(&txn); | 345 | uctrl_do_txn(&txn); |
@@ -414,7 +414,7 @@ static void __exit ts102_uctrl_cleanup(void) | |||
414 | if (driver->irq) | 414 | if (driver->irq) |
415 | free_irq(driver->irq, driver); | 415 | free_irq(driver->irq, driver); |
416 | if (driver->regs) | 416 | if (driver->regs) |
417 | driver->regs = 0; | 417 | driver->regs = NULL; |
418 | } | 418 | } |
419 | 419 | ||
420 | module_init(ts102_uctrl_init); | 420 | module_init(ts102_uctrl_init); |
diff --git a/drivers/sbus/char/vfc.h b/drivers/sbus/char/vfc.h index a7782e7da42e..8045cd5e7cb3 100644 --- a/drivers/sbus/char/vfc.h +++ b/drivers/sbus/char/vfc.h | |||
@@ -125,7 +125,7 @@ struct vfc_regs { | |||
125 | 125 | ||
126 | 126 | ||
127 | struct vfc_dev { | 127 | struct vfc_dev { |
128 | volatile struct vfc_regs *regs; | 128 | volatile struct vfc_regs __iomem *regs; |
129 | struct vfc_regs *phys_regs; | 129 | struct vfc_regs *phys_regs; |
130 | unsigned int control_reg; | 130 | unsigned int control_reg; |
131 | struct semaphore device_lock_sem; | 131 | struct semaphore device_lock_sem; |
diff --git a/drivers/sbus/char/vfc_dev.c b/drivers/sbus/char/vfc_dev.c index 7a103698fa3c..dfdd6be551f3 100644 --- a/drivers/sbus/char/vfc_dev.c +++ b/drivers/sbus/char/vfc_dev.c | |||
@@ -149,7 +149,7 @@ int init_vfc_device(struct sbus_dev *sdev,struct vfc_dev *dev, int instance) | |||
149 | } | 149 | } |
150 | printk("Initializing vfc%d\n",instance); | 150 | printk("Initializing vfc%d\n",instance); |
151 | dev->regs = NULL; | 151 | dev->regs = NULL; |
152 | dev->regs = (volatile struct vfc_regs *) | 152 | dev->regs = (volatile struct vfc_regs __iomem *) |
153 | sbus_ioremap(&sdev->resource[0], 0, | 153 | sbus_ioremap(&sdev->resource[0], 0, |
154 | sizeof(struct vfc_regs), vfcstr); | 154 | sizeof(struct vfc_regs), vfcstr); |
155 | dev->which_io = sdev->reg_addrs[0].which_io; | 155 | dev->which_io = sdev->reg_addrs[0].which_io; |
@@ -319,7 +319,7 @@ int vfc_capture_poll(struct vfc_dev *dev) | |||
319 | int timeout = 1000; | 319 | int timeout = 1000; |
320 | 320 | ||
321 | while (!timeout--) { | 321 | while (!timeout--) { |
322 | if (dev->regs->control & VFC_STATUS_CAPTURE) | 322 | if (sbus_readl(&dev->regs->control) & VFC_STATUS_CAPTURE) |
323 | break; | 323 | break; |
324 | vfc_i2c_delay_no_busy(dev, 100); | 324 | vfc_i2c_delay_no_busy(dev, 100); |
325 | } | 325 | } |
@@ -718,7 +718,7 @@ static void deinit_vfc_device(struct vfc_dev *dev) | |||
718 | if(dev == NULL) | 718 | if(dev == NULL) |
719 | return; | 719 | return; |
720 | devfs_remove("vfc/%d", dev->instance); | 720 | devfs_remove("vfc/%d", dev->instance); |
721 | sbus_iounmap((unsigned long)dev->regs, sizeof(struct vfc_regs)); | 721 | sbus_iounmap(dev->regs, sizeof(struct vfc_regs)); |
722 | kfree(dev); | 722 | kfree(dev); |
723 | } | 723 | } |
724 | 724 | ||