diff options
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 | ||
