Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

V4L/DVB (3318b): sem2mutex: drivers/media/, #2

Semaphore to mutex conversion.

The conversion was generated via scripts, and the result was validated
automatically via a script as well.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>

authored by

Ingo Molnar and committed by
Mauro Carvalho Chehab
3593cab5 538f9630

+749 -718
+3 -3
drivers/media/common/saa7146_core.c
··· 21 21 #include <media/saa7146.h> 22 22 23 23 LIST_HEAD(saa7146_devices); 24 - DECLARE_MUTEX(saa7146_devices_lock); 24 + DEFINE_MUTEX(saa7146_devices_lock); 25 25 26 26 static int saa7146_num; 27 27 ··· 402 402 403 403 pci_set_drvdata(pci, dev); 404 404 405 - init_MUTEX(&dev->lock); 405 + mutex_init(&dev->lock); 406 406 spin_lock_init(&dev->int_slock); 407 407 spin_lock_init(&dev->slock); 408 408 409 - init_MUTEX(&dev->i2c_lock); 409 + mutex_init(&dev->i2c_lock); 410 410 411 411 dev->module = THIS_MODULE; 412 412 init_waitqueue_head(&dev->i2c_wq);
+9 -9
drivers/media/common/saa7146_fops.c
··· 17 17 } 18 18 19 19 /* is it free? */ 20 - down(&dev->lock); 20 + mutex_lock(&dev->lock); 21 21 if (vv->resources & bit) { 22 22 DEB_D(("locked! vv->resources:0x%02x, we want:0x%02x\n",vv->resources,bit)); 23 23 /* no, someone else uses it */ 24 - up(&dev->lock); 24 + mutex_unlock(&dev->lock); 25 25 return 0; 26 26 } 27 27 /* it's free, grab it */ 28 28 fh->resources |= bit; 29 29 vv->resources |= bit; 30 30 DEB_D(("res: get 0x%02x, cur:0x%02x\n",bit,vv->resources)); 31 - up(&dev->lock); 31 + mutex_unlock(&dev->lock); 32 32 return 1; 33 33 } 34 34 ··· 40 40 if ((fh->resources & bits) != bits) 41 41 BUG(); 42 42 43 - down(&dev->lock); 43 + mutex_lock(&dev->lock); 44 44 fh->resources &= ~bits; 45 45 vv->resources &= ~bits; 46 46 DEB_D(("res: put 0x%02x, cur:0x%02x\n",bits,vv->resources)); 47 - up(&dev->lock); 47 + mutex_unlock(&dev->lock); 48 48 } 49 49 50 50 ··· 204 204 205 205 DEB_EE(("inode:%p, file:%p, minor:%d\n",inode,file,minor)); 206 206 207 - if (down_interruptible(&saa7146_devices_lock)) 207 + if (mutex_lock_interruptible(&saa7146_devices_lock)) 208 208 return -ERESTARTSYS; 209 209 210 210 list_for_each(list,&saa7146_devices) { ··· 276 276 kfree(fh); 277 277 file->private_data = NULL; 278 278 } 279 - up(&saa7146_devices_lock); 279 + mutex_unlock(&saa7146_devices_lock); 280 280 return result; 281 281 } 282 282 ··· 287 287 288 288 DEB_EE(("inode:%p, file:%p\n",inode,file)); 289 289 290 - if (down_interruptible(&saa7146_devices_lock)) 290 + if (mutex_lock_interruptible(&saa7146_devices_lock)) 291 291 return -ERESTARTSYS; 292 292 293 293 if( fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) { ··· 303 303 file->private_data = NULL; 304 304 kfree(fh); 305 305 306 - up(&saa7146_devices_lock); 306 + mutex_unlock(&saa7146_devices_lock); 307 307 308 308 return 0; 309 309 }
+2 -2
drivers/media/common/saa7146_i2c.c
··· 279 279 int address_err = 0; 280 280 int short_delay = 0; 281 281 282 - if (down_interruptible (&dev->i2c_lock)) 282 + if (mutex_lock_interruptible(&dev->i2c_lock)) 283 283 return -ERESTARTSYS; 284 284 285 285 for(i=0;i<num;i++) { ··· 366 366 } 367 367 } 368 368 369 - up(&dev->i2c_lock); 369 + mutex_unlock(&dev->i2c_lock); 370 370 return err; 371 371 } 372 372
+1 -1
drivers/media/common/saa7146_vbi.c
··· 410 410 V4L2_FIELD_SEQ_TB, // FIXME: does this really work? 411 411 sizeof(struct saa7146_buf), 412 412 file); 413 - init_MUTEX(&fh->vbi_q.lock); 413 + mutex_init(&fh->vbi_q.lock); 414 414 415 415 init_timer(&fh->vbi_read_timeout); 416 416 fh->vbi_read_timeout.function = vbi_read_timeout;
+15 -15
drivers/media/common/saa7146_video.c
··· 378 378 err = try_win(dev,&f->fmt.win); 379 379 if (0 != err) 380 380 return err; 381 - down(&dev->lock); 381 + mutex_lock(&dev->lock); 382 382 fh->ov.win = f->fmt.win; 383 383 fh->ov.nclips = f->fmt.win.clipcount; 384 384 if (fh->ov.nclips > 16) 385 385 fh->ov.nclips = 16; 386 386 if (copy_from_user(fh->ov.clips,f->fmt.win.clips,sizeof(struct v4l2_clip)*fh->ov.nclips)) { 387 - up(&dev->lock); 387 + mutex_unlock(&dev->lock); 388 388 return -EFAULT; 389 389 } 390 390 391 391 /* fh->ov.fh is used to indicate that we have valid overlay informations, too */ 392 392 fh->ov.fh = fh; 393 393 394 - up(&dev->lock); 394 + mutex_unlock(&dev->lock); 395 395 396 396 /* check if our current overlay is active */ 397 397 if (IS_OVERLAY_ACTIVE(fh) != 0) { ··· 516 516 return -EINVAL; 517 517 } 518 518 519 - down(&dev->lock); 519 + mutex_lock(&dev->lock); 520 520 521 521 switch (ctrl->type) { 522 522 case V4L2_CTRL_TYPE_BOOLEAN: ··· 560 560 /* fixme: we can support changing VFLIP and HFLIP here... */ 561 561 if (IS_CAPTURE_ACTIVE(fh) != 0) { 562 562 DEB_D(("V4L2_CID_HFLIP while active capture.\n")); 563 - up(&dev->lock); 563 + mutex_unlock(&dev->lock); 564 564 return -EINVAL; 565 565 } 566 566 vv->hflip = c->value; ··· 568 568 case V4L2_CID_VFLIP: 569 569 if (IS_CAPTURE_ACTIVE(fh) != 0) { 570 570 DEB_D(("V4L2_CID_VFLIP while active capture.\n")); 571 - up(&dev->lock); 571 + mutex_unlock(&dev->lock); 572 572 return -EINVAL; 573 573 } 574 574 vv->vflip = c->value; ··· 577 577 return -EINVAL; 578 578 } 579 579 } 580 - up(&dev->lock); 580 + mutex_unlock(&dev->lock); 581 581 582 582 if (IS_OVERLAY_ACTIVE(fh) != 0) { 583 583 saa7146_stop_preview(fh); ··· 939 939 } 940 940 } 941 941 942 - down(&dev->lock); 942 + mutex_lock(&dev->lock); 943 943 944 944 /* ok, accept it */ 945 945 vv->ov_fb = *fb; ··· 948 948 vv->ov_fb.fmt.bytesperline = 949 949 vv->ov_fb.fmt.width*fmt->depth/8; 950 950 951 - up(&dev->lock); 951 + mutex_unlock(&dev->lock); 952 952 953 953 return 0; 954 954 } ··· 1086 1086 } 1087 1087 } 1088 1088 1089 - down(&dev->lock); 1089 + mutex_lock(&dev->lock); 1090 1090 1091 1091 for(i = 0; i < dev->ext_vv_data->num_stds; i++) 1092 1092 if (*id & dev->ext_vv_data->stds[i].id) ··· 1098 1098 found = 1; 1099 1099 } 1100 1100 1101 - up(&dev->lock); 1101 + mutex_unlock(&dev->lock); 1102 1102 1103 1103 if (vv->ov_suspend != NULL) { 1104 1104 saa7146_start_preview(vv->ov_suspend); ··· 1201 1201 DEB_D(("VIDIOCGMBUF \n")); 1202 1202 1203 1203 q = &fh->video_q; 1204 - down(&q->lock); 1204 + mutex_lock(&q->lock); 1205 1205 err = videobuf_mmap_setup(q,gbuffers,gbufsize, 1206 1206 V4L2_MEMORY_MMAP); 1207 1207 if (err < 0) { 1208 - up(&q->lock); 1208 + mutex_unlock(&q->lock); 1209 1209 return err; 1210 1210 } 1211 1211 memset(mbuf,0,sizeof(*mbuf)); ··· 1213 1213 mbuf->size = gbuffers * gbufsize; 1214 1214 for (i = 0; i < gbuffers; i++) 1215 1215 mbuf->offsets[i] = i * gbufsize; 1216 - up(&q->lock); 1216 + mutex_unlock(&q->lock); 1217 1217 return 0; 1218 1218 } 1219 1219 default: ··· 1414 1414 sizeof(struct saa7146_buf), 1415 1415 file); 1416 1416 1417 - init_MUTEX(&fh->video_q.lock); 1417 + mutex_init(&fh->video_q.lock); 1418 1418 1419 1419 return 0; 1420 1420 }
+2 -2
drivers/media/dvb/b2c2/flexcop-common.h
··· 10 10 11 11 #include <linux/config.h> 12 12 #include <linux/pci.h> 13 + #include <linux/mutex.h> 13 14 14 15 #include "flexcop-reg.h" 15 16 ··· 74 73 int (*fe_sleep) (struct dvb_frontend *); 75 74 76 75 struct i2c_adapter i2c_adap; 77 - struct semaphore i2c_sem; 78 - 76 + struct mutex i2c_mutex; 79 77 struct module *owner; 80 78 81 79 /* options and status */
+3 -3
drivers/media/dvb/b2c2/flexcop-i2c.c
··· 135 135 struct flexcop_device *fc = i2c_get_adapdata(i2c_adap); 136 136 int i, ret = 0; 137 137 138 - if (down_interruptible(&fc->i2c_sem)) 138 + if (mutex_lock_interruptible(&fc->i2c_mutex)) 139 139 return -ERESTARTSYS; 140 140 141 141 /* reading */ ··· 161 161 else 162 162 ret = num; 163 163 164 - up(&fc->i2c_sem); 164 + mutex_unlock(&fc->i2c_mutex); 165 165 166 166 return ret; 167 167 } ··· 180 180 { 181 181 int ret; 182 182 183 - sema_init(&fc->i2c_sem,1); 183 + mutex_init(&fc->i2c_mutex); 184 184 185 185 memset(&fc->i2c_adap, 0, sizeof(struct i2c_adapter)); 186 186 strncpy(fc->i2c_adap.name, "B2C2 FlexCop device",I2C_NAME_SIZE);
+2 -2
drivers/media/dvb/bt8xx/bt878.c
··· 344 344 int retval; 345 345 346 346 retval = 0; 347 - if (down_interruptible (&bt->gpio_lock)) 347 + if (mutex_lock_interruptible(&bt->gpio_lock)) 348 348 return -ERESTARTSYS; 349 349 /* special gpio signal */ 350 350 switch (cmd) { ··· 375 375 retval = -EINVAL; 376 376 break; 377 377 } 378 - up(&bt->gpio_lock); 378 + mutex_unlock(&bt->gpio_lock); 379 379 return retval; 380 380 } 381 381
+3 -1
drivers/media/dvb/bt8xx/bt878.h
··· 25 25 #include <linux/pci.h> 26 26 #include <linux/sched.h> 27 27 #include <linux/spinlock.h> 28 + #include <linux/mutex.h> 29 + 28 30 #include "bt848.h" 29 31 #include "bttv.h" 30 32 ··· 110 108 extern int bt878_num; 111 109 112 110 struct bt878 { 113 - struct semaphore gpio_lock; 111 + struct mutex gpio_lock; 114 112 unsigned int nr; 115 113 unsigned int bttv_nr; 116 114 struct i2c_adapter *adapter;
+7 -7
drivers/media/dvb/bt8xx/dst.c
··· 910 910 911 911 static int dst_probe(struct dst_state *state) 912 912 { 913 - sema_init(&state->dst_mutex, 1); 913 + mutex_init(&state->dst_mutex); 914 914 if ((rdc_8820_reset(state)) < 0) { 915 915 dprintk(verbose, DST_ERROR, 1, "RDC 8820 RESET Failed."); 916 916 return -1; ··· 962 962 { 963 963 u8 reply; 964 964 965 - down(&state->dst_mutex); 965 + mutex_lock(&state->dst_mutex); 966 966 if ((dst_comm_init(state)) < 0) { 967 967 dprintk(verbose, DST_NOTICE, 1, "DST Communication Initialization Failed."); 968 968 goto error; ··· 1013 1013 dprintk(verbose, DST_INFO, 1, "checksum failure"); 1014 1014 goto error; 1015 1015 } 1016 - up(&state->dst_mutex); 1016 + mutex_unlock(&state->dst_mutex); 1017 1017 return 0; 1018 1018 1019 1019 error: 1020 - up(&state->dst_mutex); 1020 + mutex_unlock(&state->dst_mutex); 1021 1021 return -EIO; 1022 1022 1023 1023 } ··· 1128 1128 dst_set_voltage(fe, SEC_VOLTAGE_13); 1129 1129 } 1130 1130 state->diseq_flags &= ~(HAS_LOCK | ATTEMPT_TUNE); 1131 - down(&state->dst_mutex); 1131 + mutex_lock(&state->dst_mutex); 1132 1132 if ((dst_comm_init(state)) < 0) { 1133 1133 dprintk(verbose, DST_DEBUG, 1, "DST Communication initialization failed."); 1134 1134 goto error; ··· 1160 1160 state->diseq_flags |= ATTEMPT_TUNE; 1161 1161 retval = dst_get_tuna(state); 1162 1162 werr: 1163 - up(&state->dst_mutex); 1163 + mutex_unlock(&state->dst_mutex); 1164 1164 return retval; 1165 1165 1166 1166 error: 1167 - up(&state->dst_mutex); 1167 + mutex_unlock(&state->dst_mutex); 1168 1168 return -EIO; 1169 1169 } 1170 1170
+3 -3
drivers/media/dvb/bt8xx/dst_ca.c
··· 81 81 { 82 82 u8 reply; 83 83 84 - down(&state->dst_mutex); 84 + mutex_lock(&state->dst_mutex); 85 85 dst_comm_init(state); 86 86 msleep(65); 87 87 ··· 110 110 goto error; 111 111 } 112 112 } 113 - up(&state->dst_mutex); 113 + mutex_unlock(&state->dst_mutex); 114 114 return 0; 115 115 116 116 error: 117 - up(&state->dst_mutex); 117 + mutex_unlock(&state->dst_mutex); 118 118 return -EIO; 119 119 } 120 120
+2 -1
drivers/media/dvb/bt8xx/dst_common.h
··· 25 25 #include <linux/smp_lock.h> 26 26 #include <linux/dvb/frontend.h> 27 27 #include <linux/device.h> 28 + #include <linux/mutex.h> 28 29 #include "bt878.h" 29 30 30 31 #include "dst_ca.h" ··· 122 121 u8 vendor[8]; 123 122 u8 board_info[8]; 124 123 125 - struct semaphore dst_mutex; 124 + struct mutex dst_mutex; 126 125 }; 127 126 128 127 struct dst_types {
+6 -6
drivers/media/dvb/bt8xx/dvb-bt8xx.c
··· 76 76 if (!dvbdmx->dmx.frontend) 77 77 return -EINVAL; 78 78 79 - down(&card->lock); 79 + mutex_lock(&card->lock); 80 80 card->nfeeds++; 81 81 rc = card->nfeeds; 82 82 if (card->nfeeds == 1) 83 83 bt878_start(card->bt, card->gpio_mode, 84 84 card->op_sync_orin, card->irq_err_ignore); 85 - up(&card->lock); 85 + mutex_unlock(&card->lock); 86 86 return rc; 87 87 } 88 88 ··· 96 96 if (!dvbdmx->dmx.frontend) 97 97 return -EINVAL; 98 98 99 - down(&card->lock); 99 + mutex_lock(&card->lock); 100 100 card->nfeeds--; 101 101 if (card->nfeeds == 0) 102 102 bt878_stop(card->bt); 103 - up(&card->lock); 103 + mutex_unlock(&card->lock); 104 104 105 105 return 0; 106 106 } ··· 788 788 if (!(card = kzalloc(sizeof(struct dvb_bt8xx_card), GFP_KERNEL))) 789 789 return -ENOMEM; 790 790 791 - init_MUTEX(&card->lock); 791 + mutex_init(&card->lock); 792 792 card->bttv_nr = sub->core->nr; 793 793 strncpy(card->card_name, sub->core->name, sizeof(sub->core->name)); 794 794 card->i2c_adapter = &sub->core->i2c_adap; ··· 881 881 return -EFAULT; 882 882 } 883 883 884 - init_MUTEX(&card->bt->gpio_lock); 884 + mutex_init(&card->bt->gpio_lock); 885 885 card->bt->bttv_nr = sub->core->nr; 886 886 887 887 if ( (ret = dvb_bt8xx_load_card(card, sub->core->type)) ) {
+2 -1
drivers/media/dvb/bt8xx/dvb-bt8xx.h
··· 26 26 #define DVB_BT8XX_H 27 27 28 28 #include <linux/i2c.h> 29 + #include <linux/mutex.h> 29 30 #include "dvbdev.h" 30 31 #include "dvb_net.h" 31 32 #include "bttv.h" ··· 39 38 #include "lgdt330x.h" 40 39 41 40 struct dvb_bt8xx_card { 42 - struct semaphore lock; 41 + struct mutex lock; 43 42 int nfeeds; 44 43 char card_name[32]; 45 44 struct dvb_adapter dvb_adapter;
+24 -23
drivers/media/dvb/cinergyT2/cinergyT2.c
··· 30 30 #include <linux/pci.h> 31 31 #include <linux/input.h> 32 32 #include <linux/dvb/frontend.h> 33 + #include <linux/mutex.h> 33 34 34 35 #include "dmxdev.h" 35 36 #include "dvb_demux.h" ··· 117 116 struct cinergyt2 { 118 117 struct dvb_demux demux; 119 118 struct usb_device *udev; 120 - struct semaphore sem; 119 + struct mutex sem; 121 120 struct dvb_adapter adapter; 122 121 struct dvb_device *fedev; 123 122 struct dmxdev dmxdev; ··· 346 345 struct dvb_demux *demux = dvbdmxfeed->demux; 347 346 struct cinergyt2 *cinergyt2 = demux->priv; 348 347 349 - if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem)) 348 + if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem)) 350 349 return -ERESTARTSYS; 351 350 352 351 if (cinergyt2->streaming == 0) 353 352 cinergyt2_start_stream_xfer(cinergyt2); 354 353 355 354 cinergyt2->streaming++; 356 - up(&cinergyt2->sem); 355 + mutex_unlock(&cinergyt2->sem); 357 356 return 0; 358 357 } 359 358 ··· 362 361 struct dvb_demux *demux = dvbdmxfeed->demux; 363 362 struct cinergyt2 *cinergyt2 = demux->priv; 364 363 365 - if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem)) 364 + if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem)) 366 365 return -ERESTARTSYS; 367 366 368 367 if (--cinergyt2->streaming == 0) 369 368 cinergyt2_stop_stream_xfer(cinergyt2); 370 369 371 - up(&cinergyt2->sem); 370 + mutex_unlock(&cinergyt2->sem); 372 371 return 0; 373 372 } 374 373 ··· 484 483 struct cinergyt2 *cinergyt2 = dvbdev->priv; 485 484 int err = -ERESTARTSYS; 486 485 487 - if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem)) 486 + if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem)) 488 487 return -ERESTARTSYS; 489 488 490 489 if ((err = dvb_generic_open(inode, file))) { 491 - up(&cinergyt2->sem); 490 + mutex_unlock(&cinergyt2->sem); 492 491 return err; 493 492 } 494 493 ··· 500 499 501 500 atomic_inc(&cinergyt2->inuse); 502 501 503 - up(&cinergyt2->sem); 502 + mutex_unlock(&cinergyt2->sem); 504 503 return 0; 505 504 } 506 505 ··· 518 517 struct dvb_device *dvbdev = file->private_data; 519 518 struct cinergyt2 *cinergyt2 = dvbdev->priv; 520 519 521 - if (down_interruptible(&cinergyt2->sem)) 520 + if (mutex_lock_interruptible(&cinergyt2->sem)) 522 521 return -ERESTARTSYS; 523 522 524 523 if (!cinergyt2->disconnect_pending && (file->f_flags & O_ACCMODE) != O_RDONLY) { ··· 527 526 cinergyt2_sleep(cinergyt2, 1); 528 527 } 529 528 530 - up(&cinergyt2->sem); 529 + mutex_unlock(&cinergyt2->sem); 531 530 532 531 if (atomic_dec_and_test(&cinergyt2->inuse) && cinergyt2->disconnect_pending) { 533 532 warn("delayed unregister in release"); ··· 542 541 struct dvb_device *dvbdev = file->private_data; 543 542 struct cinergyt2 *cinergyt2 = dvbdev->priv; 544 543 545 - if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem)) 544 + if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem)) 546 545 return -ERESTARTSYS; 547 546 548 547 poll_wait(file, &cinergyt2->poll_wq, wait); 549 548 550 - up(&cinergyt2->sem); 549 + mutex_unlock(&cinergyt2->sem); 551 550 552 551 return (POLLIN | POLLRDNORM | POLLPRI); 553 552 } ··· 614 613 if (copy_from_user(&p, (void __user*) arg, sizeof(p))) 615 614 return -EFAULT; 616 615 617 - if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem)) 616 + if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem)) 618 617 return -ERESTARTSYS; 619 618 620 619 param->cmd = CINERGYT2_EP1_SET_TUNER_PARAMETERS; ··· 630 629 (char *) param, sizeof(*param), 631 630 NULL, 0); 632 631 633 - up(&cinergyt2->sem); 632 + mutex_unlock(&cinergyt2->sem); 634 633 635 634 return (err < 0) ? err : 0; 636 635 } ··· 725 724 struct cinergyt2_rc_event rc_events[12]; 726 725 int n, len, i; 727 726 728 - if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem)) 727 + if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem)) 729 728 return; 730 729 731 730 len = cinergyt2_command(cinergyt2, buf, sizeof(buf), ··· 785 784 schedule_delayed_work(&cinergyt2->rc_query_work, 786 785 msecs_to_jiffies(RC_QUERY_INTERVAL)); 787 786 788 - up(&cinergyt2->sem); 787 + mutex_unlock(&cinergyt2->sem); 789 788 } 790 789 791 790 static int cinergyt2_register_rc(struct cinergyt2 *cinergyt2) ··· 850 849 uint8_t lock_bits; 851 850 uint32_t unc; 852 851 853 - if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem)) 852 + if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem)) 854 853 return; 855 854 856 855 unc = s->uncorrected_block_count; ··· 869 868 schedule_delayed_work(&cinergyt2->query_work, 870 869 msecs_to_jiffies(QUERY_INTERVAL)); 871 870 872 - up(&cinergyt2->sem); 871 + mutex_unlock(&cinergyt2->sem); 873 872 } 874 873 875 874 static int cinergyt2_probe (struct usb_interface *intf, ··· 886 885 memset (cinergyt2, 0, sizeof (struct cinergyt2)); 887 886 usb_set_intfdata (intf, (void *) cinergyt2); 888 887 889 - init_MUTEX(&cinergyt2->sem); 888 + mutex_init(&cinergyt2->sem); 890 889 init_waitqueue_head (&cinergyt2->poll_wq); 891 890 INIT_WORK(&cinergyt2->query_work, cinergyt2_query, cinergyt2); 892 891 ··· 968 967 { 969 968 struct cinergyt2 *cinergyt2 = usb_get_intfdata (intf); 970 969 971 - if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem)) 970 + if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem)) 972 971 return -ERESTARTSYS; 973 972 974 973 if (state.event > PM_EVENT_ON) { ··· 982 981 cinergyt2_sleep(cinergyt2, 1); 983 982 } 984 983 985 - up(&cinergyt2->sem); 984 + mutex_unlock(&cinergyt2->sem); 986 985 return 0; 987 986 } 988 987 ··· 991 990 struct cinergyt2 *cinergyt2 = usb_get_intfdata (intf); 992 991 struct dvbt_set_parameters_msg *param = &cinergyt2->param; 993 992 994 - if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem)) 993 + if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem)) 995 994 return -ERESTARTSYS; 996 995 997 996 if (!cinergyt2->sleeping) { ··· 1004 1003 1005 1004 cinergyt2_resume_rc(cinergyt2); 1006 1005 1007 - up(&cinergyt2->sem); 1006 + mutex_unlock(&cinergyt2->sem); 1008 1007 return 0; 1009 1008 } 1010 1009
+43 -43
drivers/media/dvb/dvb-core/dmxdev.c
··· 175 175 176 176 dprintk ("function : %s\n", __FUNCTION__); 177 177 178 - if (down_interruptible (&dmxdev->mutex)) 178 + if (mutex_lock_interruptible(&dmxdev->mutex)) 179 179 return -ERESTARTSYS; 180 180 181 181 if ((file->f_flags&O_ACCMODE)==O_RDWR) { 182 182 if (!(dmxdev->capabilities&DMXDEV_CAP_DUPLEX)) { 183 - up(&dmxdev->mutex); 183 + mutex_unlock(&dmxdev->mutex); 184 184 return -EOPNOTSUPP; 185 185 } 186 186 } ··· 190 190 dmxdev->dvr_buffer.size=DVR_BUFFER_SIZE; 191 191 dmxdev->dvr_buffer.data=vmalloc(DVR_BUFFER_SIZE); 192 192 if (!dmxdev->dvr_buffer.data) { 193 - up(&dmxdev->mutex); 193 + mutex_unlock(&dmxdev->mutex); 194 194 return -ENOMEM; 195 195 } 196 196 } ··· 199 199 dmxdev->dvr_orig_fe=dmxdev->demux->frontend; 200 200 201 201 if (!dmxdev->demux->write) { 202 - up(&dmxdev->mutex); 202 + mutex_unlock(&dmxdev->mutex); 203 203 return -EOPNOTSUPP; 204 204 } 205 205 206 206 front=get_fe(dmxdev->demux, DMX_MEMORY_FE); 207 207 208 208 if (!front) { 209 - up(&dmxdev->mutex); 209 + mutex_unlock(&dmxdev->mutex); 210 210 return -EINVAL; 211 211 } 212 212 dmxdev->demux->disconnect_frontend(dmxdev->demux); 213 213 dmxdev->demux->connect_frontend(dmxdev->demux, front); 214 214 } 215 - up(&dmxdev->mutex); 215 + mutex_unlock(&dmxdev->mutex); 216 216 return 0; 217 217 } 218 218 ··· 221 221 struct dvb_device *dvbdev = file->private_data; 222 222 struct dmxdev *dmxdev = dvbdev->priv; 223 223 224 - if (down_interruptible (&dmxdev->mutex)) 224 + if (mutex_lock_interruptible(&dmxdev->mutex)) 225 225 return -ERESTARTSYS; 226 226 227 227 if ((file->f_flags&O_ACCMODE)==O_WRONLY) { ··· 239 239 vfree(mem); 240 240 } 241 241 } 242 - up(&dmxdev->mutex); 242 + mutex_unlock(&dmxdev->mutex); 243 243 return 0; 244 244 } 245 245 ··· 254 254 return -EOPNOTSUPP; 255 255 if ((file->f_flags&O_ACCMODE)!=O_WRONLY) 256 256 return -EINVAL; 257 - if (down_interruptible (&dmxdev->mutex)) 257 + if (mutex_lock_interruptible(&dmxdev->mutex)) 258 258 return -ERESTARTSYS; 259 259 ret=dmxdev->demux->write(dmxdev->demux, buf, count); 260 - up(&dmxdev->mutex); 260 + mutex_unlock(&dmxdev->mutex); 261 261 return ret; 262 262 } 263 263 ··· 268 268 struct dmxdev *dmxdev = dvbdev->priv; 269 269 int ret; 270 270 271 - //down(&dmxdev->mutex); 271 + //mutex_lock(&dmxdev->mutex); 272 272 ret= dvb_dmxdev_buffer_read(&dmxdev->dvr_buffer, 273 273 file->f_flags&O_NONBLOCK, 274 274 buf, count, ppos); 275 - //up(&dmxdev->mutex); 275 + //mutex_unlock(&dmxdev->mutex); 276 276 return ret; 277 277 } 278 278 ··· 688 688 if (!dmxdev->filter) 689 689 return -EINVAL; 690 690 691 - if (down_interruptible(&dmxdev->mutex)) 691 + if (mutex_lock_interruptible(&dmxdev->mutex)) 692 692 return -ERESTARTSYS; 693 693 694 694 for (i=0; i<dmxdev->filternum; i++) ··· 696 696 break; 697 697 698 698 if (i==dmxdev->filternum) { 699 - up(&dmxdev->mutex); 699 + mutex_unlock(&dmxdev->mutex); 700 700 return -EMFILE; 701 701 } 702 702 703 703 dmxdevfilter=&dmxdev->filter[i]; 704 - sema_init(&dmxdevfilter->mutex, 1); 704 + mutex_init(&dmxdevfilter->mutex); 705 705 dmxdevfilter->dvbdev=dmxdev->dvbdev; 706 706 file->private_data=dmxdevfilter; 707 707 ··· 711 711 dmxdevfilter->feed.ts=NULL; 712 712 init_timer(&dmxdevfilter->timer); 713 713 714 - up(&dmxdev->mutex); 714 + mutex_unlock(&dmxdev->mutex); 715 715 return 0; 716 716 } 717 717 718 718 719 719 static int dvb_dmxdev_filter_free(struct dmxdev *dmxdev, struct dmxdev_filter *dmxdevfilter) 720 720 { 721 - if (down_interruptible(&dmxdev->mutex)) 721 + if (mutex_lock_interruptible(&dmxdev->mutex)) 722 722 return -ERESTARTSYS; 723 723 724 - if (down_interruptible(&dmxdevfilter->mutex)) { 725 - up(&dmxdev->mutex); 724 + if (mutex_lock_interruptible(&dmxdevfilter->mutex)) { 725 + mutex_unlock(&dmxdev->mutex); 726 726 return -ERESTARTSYS; 727 727 } 728 728 ··· 740 740 741 741 dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_FREE); 742 742 wake_up(&dmxdevfilter->buffer.queue); 743 - up(&dmxdevfilter->mutex); 744 - up(&dmxdev->mutex); 743 + mutex_unlock(&dmxdevfilter->mutex); 744 + mutex_unlock(&dmxdev->mutex); 745 745 return 0; 746 746 } 747 747 ··· 841 841 struct dmxdev_filter *dmxdevfilter= file->private_data; 842 842 int ret=0; 843 843 844 - if (down_interruptible(&dmxdevfilter->mutex)) 844 + if (mutex_lock_interruptible(&dmxdevfilter->mutex)) 845 845 return -ERESTARTSYS; 846 846 847 847 if (dmxdevfilter->type==DMXDEV_TYPE_SEC) ··· 851 851 file->f_flags&O_NONBLOCK, 852 852 buf, count, ppos); 853 853 854 - up(&dmxdevfilter->mutex); 854 + mutex_unlock(&dmxdevfilter->mutex); 855 855 return ret; 856 856 } 857 857 ··· 864 864 unsigned long arg=(unsigned long) parg; 865 865 int ret=0; 866 866 867 - if (down_interruptible (&dmxdev->mutex)) 867 + if (mutex_lock_interruptible(&dmxdev->mutex)) 868 868 return -ERESTARTSYS; 869 869 870 870 switch (cmd) { 871 871 case DMX_START: 872 - if (down_interruptible(&dmxdevfilter->mutex)) { 873 - up(&dmxdev->mutex); 872 + if (mutex_lock_interruptible(&dmxdevfilter->mutex)) { 873 + mutex_unlock(&dmxdev->mutex); 874 874 return -ERESTARTSYS; 875 875 } 876 876 if (dmxdevfilter->state<DMXDEV_STATE_SET) 877 877 ret = -EINVAL; 878 878 else 879 879 ret = dvb_dmxdev_filter_start(dmxdevfilter); 880 - up(&dmxdevfilter->mutex); 880 + mutex_unlock(&dmxdevfilter->mutex); 881 881 break; 882 882 883 883 case DMX_STOP: 884 - if (down_interruptible(&dmxdevfilter->mutex)) { 885 - up(&dmxdev->mutex); 884 + if (mutex_lock_interruptible(&dmxdevfilter->mutex)) { 885 + mutex_unlock(&dmxdev->mutex); 886 886 return -ERESTARTSYS; 887 887 } 888 888 ret=dvb_dmxdev_filter_stop(dmxdevfilter); 889 - up(&dmxdevfilter->mutex); 889 + mutex_unlock(&dmxdevfilter->mutex); 890 890 break; 891 891 892 892 case DMX_SET_FILTER: 893 - if (down_interruptible(&dmxdevfilter->mutex)) { 894 - up(&dmxdev->mutex); 893 + if (mutex_lock_interruptible(&dmxdevfilter->mutex)) { 894 + mutex_unlock(&dmxdev->mutex); 895 895 return -ERESTARTSYS; 896 896 } 897 897 ret = dvb_dmxdev_filter_set(dmxdev, dmxdevfilter, 898 898 (struct dmx_sct_filter_params *)parg); 899 - up(&dmxdevfilter->mutex); 899 + mutex_unlock(&dmxdevfilter->mutex); 900 900 break; 901 901 902 902 case DMX_SET_PES_FILTER: 903 - if (down_interruptible(&dmxdevfilter->mutex)) { 904 - up(&dmxdev->mutex); 903 + if (mutex_lock_interruptible(&dmxdevfilter->mutex)) { 904 + mutex_unlock(&dmxdev->mutex); 905 905 return -ERESTARTSYS; 906 906 } 907 907 ret=dvb_dmxdev_pes_filter_set(dmxdev, dmxdevfilter, 908 908 (struct dmx_pes_filter_params *)parg); 909 - up(&dmxdevfilter->mutex); 909 + mutex_unlock(&dmxdevfilter->mutex); 910 910 break; 911 911 912 912 case DMX_SET_BUFFER_SIZE: 913 - if (down_interruptible(&dmxdevfilter->mutex)) { 914 - up(&dmxdev->mutex); 913 + if (mutex_lock_interruptible(&dmxdevfilter->mutex)) { 914 + mutex_unlock(&dmxdev->mutex); 915 915 return -ERESTARTSYS; 916 916 } 917 917 ret=dvb_dmxdev_set_buffer_size(dmxdevfilter, arg); 918 - up(&dmxdevfilter->mutex); 918 + mutex_unlock(&dmxdevfilter->mutex); 919 919 break; 920 920 921 921 case DMX_GET_EVENT: ··· 959 959 default: 960 960 ret=-EINVAL; 961 961 } 962 - up(&dmxdev->mutex); 962 + mutex_unlock(&dmxdev->mutex); 963 963 return ret; 964 964 } 965 965 ··· 1030 1030 1031 1031 int ret=0; 1032 1032 1033 - if (down_interruptible (&dmxdev->mutex)) 1033 + if (mutex_lock_interruptible(&dmxdev->mutex)) 1034 1034 return -ERESTARTSYS; 1035 1035 1036 1036 switch (cmd) { ··· 1042 1042 default: 1043 1043 ret=-EINVAL; 1044 1044 } 1045 - up(&dmxdev->mutex); 1045 + mutex_unlock(&dmxdev->mutex); 1046 1046 return ret; 1047 1047 } 1048 1048 ··· 1113 1113 return -ENOMEM; 1114 1114 } 1115 1115 1116 - sema_init(&dmxdev->mutex, 1); 1116 + mutex_init(&dmxdev->mutex); 1117 1117 spin_lock_init(&dmxdev->lock); 1118 1118 for (i=0; i<dmxdev->filternum; i++) { 1119 1119 dmxdev->filter[i].dev=dmxdev;
+3 -3
drivers/media/dvb/dvb-core/dmxdev.h
··· 30 30 #include <linux/wait.h> 31 31 #include <linux/fs.h> 32 32 #include <linux/string.h> 33 - #include <asm/semaphore.h> 33 + #include <linux/mutex.h> 34 34 35 35 #include <linux/dvb/dmx.h> 36 36 ··· 83 83 struct dmxdev *dev; 84 84 struct dmxdev_buffer buffer; 85 85 86 - struct semaphore mutex; 86 + struct mutex mutex; 87 87 88 88 /* only for sections */ 89 89 struct timer_list timer; ··· 117 117 struct dmxdev_buffer dvr_buffer; 118 118 #define DVR_BUFFER_SIZE (10*188*1024) 119 119 120 - struct semaphore mutex; 120 + struct mutex mutex; 121 121 spinlock_t lock; 122 122 }; 123 123
+52 -52
drivers/media/dvb/dvb-core/dvb_demux.c
··· 589 589 if (pid > DMX_MAX_PID) 590 590 return -EINVAL; 591 591 592 - if (down_interruptible(&demux->mutex)) 592 + if (mutex_lock_interruptible(&demux->mutex)) 593 593 return -ERESTARTSYS; 594 594 595 595 if (ts_type & TS_DECODER) { 596 596 if (pes_type >= DMX_TS_PES_OTHER) { 597 - up(&demux->mutex); 597 + mutex_unlock(&demux->mutex); 598 598 return -EINVAL; 599 599 } 600 600 601 601 if (demux->pesfilter[pes_type] && 602 602 demux->pesfilter[pes_type] != feed) { 603 - up(&demux->mutex); 603 + mutex_unlock(&demux->mutex); 604 604 return -EINVAL; 605 605 } 606 606 ··· 622 622 #else 623 623 feed->buffer = vmalloc(feed->buffer_size); 624 624 if (!feed->buffer) { 625 - up(&demux->mutex); 625 + mutex_unlock(&demux->mutex); 626 626 return -ENOMEM; 627 627 } 628 628 #endif 629 629 } 630 630 631 631 feed->state = DMX_STATE_READY; 632 - up(&demux->mutex); 632 + mutex_unlock(&demux->mutex); 633 633 634 634 return 0; 635 635 } ··· 640 640 struct dvb_demux *demux = feed->demux; 641 641 int ret; 642 642 643 - if (down_interruptible(&demux->mutex)) 643 + if (mutex_lock_interruptible(&demux->mutex)) 644 644 return -ERESTARTSYS; 645 645 646 646 if (feed->state != DMX_STATE_READY || feed->type != DMX_TYPE_TS) { 647 - up(&demux->mutex); 647 + mutex_unlock(&demux->mutex); 648 648 return -EINVAL; 649 649 } 650 650 651 651 if (!demux->start_feed) { 652 - up(&demux->mutex); 652 + mutex_unlock(&demux->mutex); 653 653 return -ENODEV; 654 654 } 655 655 656 656 if ((ret = demux->start_feed(feed)) < 0) { 657 - up(&demux->mutex); 657 + mutex_unlock(&demux->mutex); 658 658 return ret; 659 659 } 660 660 ··· 662 662 ts_feed->is_filtering = 1; 663 663 feed->state = DMX_STATE_GO; 664 664 spin_unlock_irq(&demux->lock); 665 - up(&demux->mutex); 665 + mutex_unlock(&demux->mutex); 666 666 667 667 return 0; 668 668 } ··· 673 673 struct dvb_demux *demux = feed->demux; 674 674 int ret; 675 675 676 - if (down_interruptible(&demux->mutex)) 676 + if (mutex_lock_interruptible(&demux->mutex)) 677 677 return -ERESTARTSYS; 678 678 679 679 if (feed->state < DMX_STATE_GO) { 680 - up(&demux->mutex); 680 + mutex_unlock(&demux->mutex); 681 681 return -EINVAL; 682 682 } 683 683 684 684 if (!demux->stop_feed) { 685 - up(&demux->mutex); 685 + mutex_unlock(&demux->mutex); 686 686 return -ENODEV; 687 687 } 688 688 ··· 692 692 ts_feed->is_filtering = 0; 693 693 feed->state = DMX_STATE_ALLOCATED; 694 694 spin_unlock_irq(&demux->lock); 695 - up(&demux->mutex); 695 + mutex_unlock(&demux->mutex); 696 696 697 697 return ret; 698 698 } ··· 704 704 struct dvb_demux *demux = (struct dvb_demux *)dmx; 705 705 struct dvb_demux_feed *feed; 706 706 707 - if (down_interruptible(&demux->mutex)) 707 + if (mutex_lock_interruptible(&demux->mutex)) 708 708 return -ERESTARTSYS; 709 709 710 710 if (!(feed = dvb_dmx_feed_alloc(demux))) { 711 - up(&demux->mutex); 711 + mutex_unlock(&demux->mutex); 712 712 return -EBUSY; 713 713 } 714 714 ··· 729 729 730 730 if (!(feed->filter = dvb_dmx_filter_alloc(demux))) { 731 731 feed->state = DMX_STATE_FREE; 732 - up(&demux->mutex); 732 + mutex_unlock(&demux->mutex); 733 733 return -EBUSY; 734 734 } 735 735 ··· 737 737 feed->filter->feed = feed; 738 738 feed->filter->state = DMX_STATE_READY; 739 739 740 - up(&demux->mutex); 740 + mutex_unlock(&demux->mutex); 741 741 742 742 return 0; 743 743 } ··· 748 748 struct dvb_demux *demux = (struct dvb_demux *)dmx; 749 749 struct dvb_demux_feed *feed = (struct dvb_demux_feed *)ts_feed; 750 750 751 - if (down_interruptible(&demux->mutex)) 751 + if (mutex_lock_interruptible(&demux->mutex)) 752 752 return -ERESTARTSYS; 753 753 754 754 if (feed->state == DMX_STATE_FREE) { 755 - up(&demux->mutex); 755 + mutex_unlock(&demux->mutex); 756 756 return -EINVAL; 757 757 } 758 758 #ifndef NOBUFS ··· 770 770 if (feed->ts_type & TS_DECODER && feed->pes_type < DMX_TS_PES_OTHER) 771 771 demux->pesfilter[feed->pes_type] = NULL; 772 772 773 - up(&demux->mutex); 773 + mutex_unlock(&demux->mutex); 774 774 return 0; 775 775 } 776 776 ··· 785 785 struct dvb_demux *dvbdemux = dvbdmxfeed->demux; 786 786 struct dvb_demux_filter *dvbdmxfilter; 787 787 788 - if (down_interruptible(&dvbdemux->mutex)) 788 + if (mutex_lock_interruptible(&dvbdemux->mutex)) 789 789 return -ERESTARTSYS; 790 790 791 791 dvbdmxfilter = dvb_dmx_filter_alloc(dvbdemux); 792 792 if (!dvbdmxfilter) { 793 - up(&dvbdemux->mutex); 793 + mutex_unlock(&dvbdemux->mutex); 794 794 return -EBUSY; 795 795 } 796 796 ··· 805 805 dvbdmxfeed->filter = dvbdmxfilter; 806 806 spin_unlock_irq(&dvbdemux->lock); 807 807 808 - up(&dvbdemux->mutex); 808 + mutex_unlock(&dvbdemux->mutex); 809 809 return 0; 810 810 } 811 811 ··· 819 819 if (pid > 0x1fff) 820 820 return -EINVAL; 821 821 822 - if (down_interruptible(&dvbdmx->mutex)) 822 + if (mutex_lock_interruptible(&dvbdmx->mutex)) 823 823 return -ERESTARTSYS; 824 824 825 825 dvb_demux_feed_add(dvbdmxfeed); ··· 833 833 #else 834 834 dvbdmxfeed->buffer = vmalloc(dvbdmxfeed->buffer_size); 835 835 if (!dvbdmxfeed->buffer) { 836 - up(&dvbdmx->mutex); 836 + mutex_unlock(&dvbdmx->mutex); 837 837 return -ENOMEM; 838 838 } 839 839 #endif 840 840 841 841 dvbdmxfeed->state = DMX_STATE_READY; 842 - up(&dvbdmx->mutex); 842 + mutex_unlock(&dvbdmx->mutex); 843 843 return 0; 844 844 } 845 845 ··· 871 871 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; 872 872 int ret; 873 873 874 - if (down_interruptible(&dvbdmx->mutex)) 874 + if (mutex_lock_interruptible(&dvbdmx->mutex)) 875 875 return -ERESTARTSYS; 876 876 877 877 if (feed->is_filtering) { 878 - up(&dvbdmx->mutex); 878 + mutex_unlock(&dvbdmx->mutex); 879 879 return -EBUSY; 880 880 } 881 881 882 882 if (!dvbdmxfeed->filter) { 883 - up(&dvbdmx->mutex); 883 + mutex_unlock(&dvbdmx->mutex); 884 884 return -EINVAL; 885 885 } 886 886 ··· 890 890 dvbdmxfeed->feed.sec.seclen = 0; 891 891 892 892 if (!dvbdmx->start_feed) { 893 - up(&dvbdmx->mutex); 893 + mutex_unlock(&dvbdmx->mutex); 894 894 return -ENODEV; 895 895 } 896 896 897 897 prepare_secfilters(dvbdmxfeed); 898 898 899 899 if ((ret = dvbdmx->start_feed(dvbdmxfeed)) < 0) { 900 - up(&dvbdmx->mutex); 900 + mutex_unlock(&dvbdmx->mutex); 901 901 return ret; 902 902 } 903 903 ··· 906 906 dvbdmxfeed->state = DMX_STATE_GO; 907 907 spin_unlock_irq(&dvbdmx->lock); 908 908 909 - up(&dvbdmx->mutex); 909 + mutex_unlock(&dvbdmx->mutex); 910 910 return 0; 911 911 } 912 912 ··· 916 916 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; 917 917 int ret; 918 918 919 - if (down_interruptible(&dvbdmx->mutex)) 919 + if (mutex_lock_interruptible(&dvbdmx->mutex)) 920 920 return -ERESTARTSYS; 921 921 922 922 if (!dvbdmx->stop_feed) { 923 - up(&dvbdmx->mutex); 923 + mutex_unlock(&dvbdmx->mutex); 924 924 return -ENODEV; 925 925 } 926 926 ··· 931 931 feed->is_filtering = 0; 932 932 spin_unlock_irq(&dvbdmx->lock); 933 933 934 - up(&dvbdmx->mutex); 934 + mutex_unlock(&dvbdmx->mutex); 935 935 return ret; 936 936 } 937 937 ··· 942 942 struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)feed; 943 943 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; 944 944 945 - if (down_interruptible(&dvbdmx->mutex)) 945 + if (mutex_lock_interruptible(&dvbdmx->mutex)) 946 946 return -ERESTARTSYS; 947 947 948 948 if (dvbdmxfilter->feed != dvbdmxfeed) { 949 - up(&dvbdmx->mutex); 949 + mutex_unlock(&dvbdmx->mutex); 950 950 return -EINVAL; 951 951 } 952 952 ··· 966 966 967 967 dvbdmxfilter->state = DMX_STATE_FREE; 968 968 spin_unlock_irq(&dvbdmx->lock); 969 - up(&dvbdmx->mutex); 969 + mutex_unlock(&dvbdmx->mutex); 970 970 return 0; 971 971 } 972 972 ··· 977 977 struct dvb_demux *dvbdmx = (struct dvb_demux *)demux; 978 978 struct dvb_demux_feed *dvbdmxfeed; 979 979 980 - if (down_interruptible(&dvbdmx->mutex)) 980 + if (mutex_lock_interruptible(&dvbdmx->mutex)) 981 981 return -ERESTARTSYS; 982 982 983 983 if (!(dvbdmxfeed = dvb_dmx_feed_alloc(dvbdmx))) { 984 - up(&dvbdmx->mutex); 984 + mutex_unlock(&dvbdmx->mutex); 985 985 return -EBUSY; 986 986 } 987 987 ··· 1006 1006 (*feed)->stop_filtering = dmx_section_feed_stop_filtering; 1007 1007 (*feed)->release_filter = dmx_section_feed_release_filter; 1008 1008 1009 - up(&dvbdmx->mutex); 1009 + mutex_unlock(&dvbdmx->mutex); 1010 1010 return 0; 1011 1011 } 1012 1012 ··· 1016 1016 struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)feed; 1017 1017 struct dvb_demux *dvbdmx = (struct dvb_demux *)demux; 1018 1018 1019 - if (down_interruptible(&dvbdmx->mutex)) 1019 + if (mutex_lock_interruptible(&dvbdmx->mutex)) 1020 1020 return -ERESTARTSYS; 1021 1021 1022 1022 if (dvbdmxfeed->state == DMX_STATE_FREE) { 1023 - up(&dvbdmx->mutex); 1023 + mutex_unlock(&dvbdmx->mutex); 1024 1024 return -EINVAL; 1025 1025 } 1026 1026 #ifndef NOBUFS ··· 1033 1033 1034 1034 dvbdmxfeed->pid = 0xffff; 1035 1035 1036 - up(&dvbdmx->mutex); 1036 + mutex_unlock(&dvbdmx->mutex); 1037 1037 return 0; 1038 1038 } 1039 1039 ··· 1071 1071 if ((!demux->frontend) || (demux->frontend->source != DMX_MEMORY_FE)) 1072 1072 return -EINVAL; 1073 1073 1074 - if (down_interruptible(&dvbdemux->mutex)) 1074 + if (mutex_lock_interruptible(&dvbdemux->mutex)) 1075 1075 return -ERESTARTSYS; 1076 1076 dvb_dmx_swfilter(dvbdemux, buf, count); 1077 - up(&dvbdemux->mutex); 1077 + mutex_unlock(&dvbdemux->mutex); 1078 1078 1079 1079 if (signal_pending(current)) 1080 1080 return -EINTR; ··· 1126 1126 if (demux->frontend) 1127 1127 return -EINVAL; 1128 1128 1129 - if (down_interruptible(&dvbdemux->mutex)) 1129 + if (mutex_lock_interruptible(&dvbdemux->mutex)) 1130 1130 return -ERESTARTSYS; 1131 1131 1132 1132 demux->frontend = frontend; 1133 - up(&dvbdemux->mutex); 1133 + mutex_unlock(&dvbdemux->mutex); 1134 1134 return 0; 1135 1135 } 1136 1136 ··· 1138 1138 { 1139 1139 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; 1140 1140 1141 - if (down_interruptible(&dvbdemux->mutex)) 1141 + if (mutex_lock_interruptible(&dvbdemux->mutex)) 1142 1142 return -ERESTARTSYS; 1143 1143 1144 1144 demux->frontend = NULL; 1145 - up(&dvbdemux->mutex); 1145 + mutex_unlock(&dvbdemux->mutex); 1146 1146 return 0; 1147 1147 } 1148 1148 ··· 1215 1215 dmx->disconnect_frontend = dvbdmx_disconnect_frontend; 1216 1216 dmx->get_pes_pids = dvbdmx_get_pes_pids; 1217 1217 1218 - sema_init(&dvbdemux->mutex, 1); 1218 + mutex_init(&dvbdemux->mutex); 1219 1219 spin_lock_init(&dvbdemux->lock); 1220 1220 1221 1221 return 0;
+2 -2
drivers/media/dvb/dvb-core/dvb_demux.h
··· 26 26 #include <linux/time.h> 27 27 #include <linux/timer.h> 28 28 #include <linux/spinlock.h> 29 - #include <asm/semaphore.h> 29 + #include <linux/mutex.h> 30 30 31 31 #include "demux.h" 32 32 ··· 125 125 u8 tsbuf[204]; 126 126 int tsbufp; 127 127 128 - struct semaphore mutex; 128 + struct mutex mutex; 129 129 spinlock_t lock; 130 130 }; 131 131
+6 -7
drivers/media/dvb/dvb-core/dvb_frontend.c
··· 37 37 #include <linux/suspend.h> 38 38 #include <linux/jiffies.h> 39 39 #include <asm/processor.h> 40 - #include <asm/semaphore.h> 41 40 42 41 #include "dvb_frontend.h" 43 42 #include "dvbdev.h" ··· 87 88 * FESTATE_LOSTLOCK. When the lock has been lost, and we're searching it again. 88 89 */ 89 90 90 - static DECLARE_MUTEX(frontend_mutex); 91 + static DEFINE_MUTEX(frontend_mutex); 91 92 92 93 struct dvb_frontend_private { 93 94 ··· 1020 1021 1021 1022 dprintk ("%s\n", __FUNCTION__); 1022 1023 1023 - if (down_interruptible (&frontend_mutex)) 1024 + if (mutex_lock_interruptible(&frontend_mutex)) 1024 1025 return -ERESTARTSYS; 1025 1026 1026 1027 fe->frontend_priv = kzalloc(sizeof(struct dvb_frontend_private), GFP_KERNEL); 1027 1028 if (fe->frontend_priv == NULL) { 1028 - up(&frontend_mutex); 1029 + mutex_unlock(&frontend_mutex); 1029 1030 return -ENOMEM; 1030 1031 } 1031 1032 fepriv = fe->frontend_priv; ··· 1044 1045 dvb_register_device (fe->dvb, &fepriv->dvbdev, &dvbdev_template, 1045 1046 fe, DVB_DEVICE_FRONTEND); 1046 1047 1047 - up (&frontend_mutex); 1048 + mutex_unlock(&frontend_mutex); 1048 1049 return 0; 1049 1050 } 1050 1051 EXPORT_SYMBOL(dvb_register_frontend); ··· 1054 1055 struct dvb_frontend_private *fepriv = fe->frontend_priv; 1055 1056 dprintk ("%s\n", __FUNCTION__); 1056 1057 1057 - down (&frontend_mutex); 1058 + mutex_lock(&frontend_mutex); 1058 1059 dvb_unregister_device (fepriv->dvbdev); 1059 1060 dvb_frontend_stop (fe); 1060 1061 if (fe->ops->release) ··· 1063 1064 printk("dvb_frontend: Demodulator (%s) does not have a release callback!\n", fe->ops->info.name); 1064 1065 /* fe is invalid now */ 1065 1066 kfree(fepriv); 1066 - up (&frontend_mutex); 1067 + mutex_unlock(&frontend_mutex); 1067 1068 return 0; 1068 1069 } 1069 1070 EXPORT_SYMBOL(dvb_unregister_frontend);
+7 -7
drivers/media/dvb/dvb-core/dvb_net.c
··· 62 62 #include <linux/uio.h> 63 63 #include <asm/uaccess.h> 64 64 #include <linux/crc32.h> 65 + #include <linux/mutex.h> 65 66 66 67 #include "dvb_demux.h" 67 68 #include "dvb_net.h" ··· 152 151 unsigned char ule_bridged; /* Whether the ULE_BRIDGED extension header was found. */ 153 152 int ule_sndu_remain; /* Nr. of bytes still required for current ULE SNDU. */ 154 153 unsigned long ts_count; /* Current ts cell counter. */ 155 - 156 - struct semaphore mutex; 154 + struct mutex mutex; 157 155 }; 158 156 159 157 ··· 889 889 unsigned char *mac = (unsigned char *) dev->dev_addr; 890 890 891 891 dprintk("%s: rx_mode %i\n", __FUNCTION__, priv->rx_mode); 892 - down(&priv->mutex); 892 + mutex_lock(&priv->mutex); 893 893 if (priv->tsfeed || priv->secfeed || priv->secfilter || priv->multi_secfilter[0]) 894 894 printk("%s: BUG %d\n", __FUNCTION__, __LINE__); 895 895 ··· 974 974 ret = -EINVAL; 975 975 976 976 error: 977 - up(&priv->mutex); 977 + mutex_unlock(&priv->mutex); 978 978 return ret; 979 979 } 980 980 ··· 984 984 int i, ret = 0; 985 985 986 986 dprintk("%s\n", __FUNCTION__); 987 - down(&priv->mutex); 987 + mutex_lock(&priv->mutex); 988 988 if (priv->feedtype == DVB_NET_FEEDTYPE_MPE) { 989 989 if (priv->secfeed) { 990 990 if (priv->secfeed->is_filtering) { ··· 1026 1026 printk("%s: no ts feed to stop\n", dev->name); 1027 1027 } else 1028 1028 ret = -EINVAL; 1029 - up(&priv->mutex); 1029 + mutex_unlock(&priv->mutex); 1030 1030 return ret; 1031 1031 } 1032 1032 ··· 1208 1208 1209 1209 INIT_WORK(&priv->set_multicast_list_wq, wq_set_multicast_list, net); 1210 1210 INIT_WORK(&priv->restart_net_feed_wq, wq_restart_net_feed, net); 1211 - init_MUTEX(&priv->mutex); 1211 + mutex_init(&priv->mutex); 1212 1212 1213 1213 net->base_addr = pid; 1214 1214
+2 -2
drivers/media/dvb/dvb-usb/cxusb.c
··· 77 77 struct dvb_usb_device *d = i2c_get_adapdata(adap); 78 78 int i; 79 79 80 - if (down_interruptible(&d->i2c_sem) < 0) 80 + if (mutex_lock_interruptible(&d->i2c_mutex) < 0) 81 81 return -EAGAIN; 82 82 83 83 if (num > 2) ··· 126 126 } 127 127 } 128 128 129 - up(&d->i2c_sem); 129 + mutex_unlock(&d->i2c_mutex); 130 130 return i; 131 131 } 132 132
+2 -2
drivers/media/dvb/dvb-usb/dibusb-common.c
··· 128 128 struct dvb_usb_device *d = i2c_get_adapdata(adap); 129 129 int i; 130 130 131 - if (down_interruptible(&d->i2c_sem) < 0) 131 + if (mutex_lock_interruptible(&d->i2c_mutex) < 0) 132 132 return -EAGAIN; 133 133 134 134 if (num > 2) ··· 146 146 break; 147 147 } 148 148 149 - up(&d->i2c_sem); 149 + mutex_unlock(&d->i2c_mutex); 150 150 return i; 151 151 } 152 152
+2 -2
drivers/media/dvb/dvb-usb/digitv.c
··· 48 48 struct dvb_usb_device *d = i2c_get_adapdata(adap); 49 49 int i; 50 50 51 - if (down_interruptible(&d->i2c_sem) < 0) 51 + if (mutex_lock_interruptible(&d->i2c_mutex) < 0) 52 52 return -EAGAIN; 53 53 54 54 if (num > 2) ··· 67 67 break; 68 68 } 69 69 70 - up(&d->i2c_sem); 70 + mutex_unlock(&d->i2c_mutex); 71 71 return i; 72 72 } 73 73
+2 -2
drivers/media/dvb/dvb-usb/dvb-usb-init.c
··· 42 42 { 43 43 int ret = 0; 44 44 45 - sema_init(&d->usb_sem, 1); 46 - sema_init(&d->i2c_sem, 1); 45 + mutex_init(&d->usb_mutex); 46 + mutex_init(&d->i2c_mutex); 47 47 48 48 d->state = DVB_USB_STATE_INIT; 49 49
+2 -2
drivers/media/dvb/dvb-usb/dvb-usb-urb.c
··· 21 21 if (wbuf == NULL || wlen == 0) 22 22 return -EINVAL; 23 23 24 - if ((ret = down_interruptible(&d->usb_sem))) 24 + if ((ret = mutex_lock_interruptible(&d->usb_mutex))) 25 25 return ret; 26 26 27 27 deb_xfer(">>> "); ··· 53 53 } 54 54 } 55 55 56 - up(&d->usb_sem); 56 + mutex_unlock(&d->usb_mutex); 57 57 return ret; 58 58 } 59 59 EXPORT_SYMBOL(dvb_usb_generic_rw);
+5 -4
drivers/media/dvb/dvb-usb/dvb-usb.h
··· 12 12 #include <linux/input.h> 13 13 #include <linux/usb.h> 14 14 #include <linux/firmware.h> 15 + #include <linux/mutex.h> 15 16 16 17 #include "dvb_frontend.h" 17 18 #include "dvb_demux.h" ··· 228 227 * @feedcount: number of reqested feeds (used for streaming-activation) 229 228 * @pid_filtering: is hardware pid_filtering used or not. 230 229 * 231 - * @usb_sem: semaphore of USB control messages (reading needs two messages) 232 - * @i2c_sem: semaphore for i2c-transfers 230 + * @usb_mutex: semaphore of USB control messages (reading needs two messages) 231 + * @i2c_mutex: semaphore for i2c-transfers 233 232 * 234 233 * @i2c_adap: device's i2c_adapter if it uses I2CoverUSB 235 234 * @pll_addr: I2C address of the tuner for programming ··· 284 283 int pid_filtering; 285 284 286 285 /* locking */ 287 - struct semaphore usb_sem; 286 + struct mutex usb_mutex; 288 287 289 288 /* i2c */ 290 - struct semaphore i2c_sem; 289 + struct mutex i2c_mutex; 291 290 struct i2c_adapter i2c_adap; 292 291 293 292 /* tuner programming information */
+2 -2
drivers/media/dvb/dvb-usb/vp702x.c
··· 75 75 { 76 76 int ret; 77 77 78 - if ((ret = down_interruptible(&d->usb_sem))) 78 + if ((ret = mutex_lock_interruptible(&d->usb_mutex))) 79 79 return ret; 80 80 81 81 if ((ret = vp702x_usb_out_op(d,REQUEST_OUT,0,0,o,olen)) < 0) ··· 84 84 ret = vp702x_usb_in_op(d,REQUEST_IN,0,0,i,ilen); 85 85 86 86 unlock: 87 - up(&d->usb_sem); 87 + mutex_unlock(&d->usb_mutex); 88 88 89 89 return ret; 90 90 }
+2 -2
drivers/media/dvb/dvb-usb/vp7045.c
··· 38 38 deb_xfer("out buffer: "); 39 39 debug_dump(outbuf,outlen+1,deb_xfer); 40 40 41 - if ((ret = down_interruptible(&d->usb_sem))) 41 + if ((ret = mutex_lock_interruptible(&d->usb_mutex))) 42 42 return ret; 43 43 44 44 if (usb_control_msg(d->udev, ··· 68 68 memcpy(in,&inbuf[1],inlen); 69 69 70 70 unlock: 71 - up(&d->usb_sem); 71 + mutex_unlock(&d->usb_mutex); 72 72 73 73 return ret; 74 74 }
+5 -4
drivers/media/dvb/frontends/bcm3510.c
··· 39 39 #include <linux/jiffies.h> 40 40 #include <linux/string.h> 41 41 #include <linux/slab.h> 42 + #include <linux/mutex.h> 42 43 43 44 #include "dvb_frontend.h" 44 45 #include "bcm3510.h" ··· 53 52 struct dvb_frontend frontend; 54 53 55 54 /* demodulator private data */ 56 - struct semaphore hab_sem; 55 + struct mutex hab_mutex; 57 56 u8 firmware_loaded:1; 58 57 59 58 unsigned long next_status_check; ··· 214 213 dbufout(ob,olen+2,deb_hab); 215 214 deb_hab("\n"); 216 215 217 - if (down_interruptible(&st->hab_sem) < 0) 216 + if (mutex_lock_interruptible(&st->hab_mutex) < 0) 218 217 return -EAGAIN; 219 218 220 219 if ((ret = bcm3510_hab_send_request(st, ob, olen+2)) < 0 || ··· 227 226 228 227 memcpy(ibuf,&ib[2],ilen); 229 228 error: 230 - up(&st->hab_sem); 229 + mutex_unlock(&st->hab_mutex); 231 230 return ret; 232 231 } 233 232 ··· 797 796 state->frontend.ops = &state->ops; 798 797 state->frontend.demodulator_priv = state; 799 798 800 - sema_init(&state->hab_sem, 1); 799 + mutex_init(&state->hab_mutex); 801 800 802 801 if ((ret = bcm3510_readB(state,0xe0,&v)) < 0) 803 802 goto error;
+11 -12
drivers/media/dvb/ttpci/av7110.c
··· 54 54 #include <linux/i2c.h> 55 55 56 56 #include <asm/system.h> 57 - #include <asm/semaphore.h> 58 57 59 58 #include <linux/dvb/frontend.h> 60 59 ··· 241 242 if (!av7110->arm_ready) 242 243 continue; 243 244 244 - if (down_interruptible(&av7110->dcomlock)) 245 + if (mutex_lock_interruptible(&av7110->dcomlock)) 245 246 break; 246 247 newloops = rdebi(av7110, DEBINOSWAP, STATUS_LOOPS, 0, 2); 247 - up(&av7110->dcomlock); 248 + mutex_unlock(&av7110->dcomlock); 248 249 249 250 if (newloops == av7110->arm_loops || av7110->arm_errors > 3) { 250 251 printk(KERN_ERR "dvb-ttpci: ARM crashed @ card %d\n", ··· 252 253 253 254 recover_arm(av7110); 254 255 255 - if (down_interruptible(&av7110->dcomlock)) 256 + if (mutex_lock_interruptible(&av7110->dcomlock)) 256 257 break; 257 258 newloops = rdebi(av7110, DEBINOSWAP, STATUS_LOOPS, 0, 2) - 1; 258 - up(&av7110->dcomlock); 259 + mutex_unlock(&av7110->dcomlock); 259 260 } 260 261 av7110->arm_loops = newloops; 261 262 av7110->arm_errors = 0; ··· 740 741 int ret = 0; 741 742 dprintk(4, "%p\n", av7110); 742 743 743 - if (down_interruptible(&av7110->pid_mutex)) 744 + if (mutex_lock_interruptible(&av7110->pid_mutex)) 744 745 return -ERESTARTSYS; 745 746 746 747 if (!(vpid & 0x8000)) ··· 759 760 ret = SetPIDs(av7110, vpid, apid, ttpid, subpid, pcrpid); 760 761 } 761 762 762 - up(&av7110->pid_mutex); 763 + mutex_unlock(&av7110->pid_mutex); 763 764 return ret; 764 765 } 765 766 ··· 2095 2096 if (av7110->playing) 2096 2097 return 0; 2097 2098 2098 - if (down_interruptible(&av7110->pid_mutex)) 2099 + if (mutex_lock_interruptible(&av7110->pid_mutex)) 2099 2100 return -ERESTARTSYS; 2100 2101 2101 2102 if (synced) { ··· 2117 2118 if (!ret) 2118 2119 av7110->fe_synced = synced; 2119 2120 2120 - up(&av7110->pid_mutex); 2121 + mutex_unlock(&av7110->pid_mutex); 2121 2122 return ret; 2122 2123 } 2123 2124 ··· 2712 2713 tasklet_init (&av7110->debi_tasklet, debiirq, (unsigned long) av7110); 2713 2714 tasklet_init (&av7110->gpio_tasklet, gpioirq, (unsigned long) av7110); 2714 2715 2715 - sema_init(&av7110->pid_mutex, 1); 2716 + mutex_init(&av7110->pid_mutex); 2716 2717 2717 2718 /* locks for data transfers from/to AV7110 */ 2718 2719 spin_lock_init(&av7110->debilock); 2719 - sema_init(&av7110->dcomlock, 1); 2720 + mutex_init(&av7110->dcomlock); 2720 2721 av7110->debitype = -1; 2721 2722 2722 2723 /* default OSD window */ 2723 2724 av7110->osdwin = 1; 2724 - sema_init(&av7110->osd_sema, 1); 2725 + mutex_init(&av7110->osd_mutex); 2725 2726 2726 2727 /* ARM "watchdog" */ 2727 2728 init_waitqueue_head(&av7110->arm_wait);
+4 -3
drivers/media/dvb/ttpci/av7110.h
··· 16 16 #include <linux/dvb/ca.h> 17 17 #include <linux/dvb/osd.h> 18 18 #include <linux/dvb/net.h> 19 + #include <linux/mutex.h> 19 20 20 21 #include "dvbdev.h" 21 22 #include "demux.h" ··· 128 127 /* DEBI and polled command interface */ 129 128 130 129 spinlock_t debilock; 131 - struct semaphore dcomlock; 130 + struct mutex dcomlock; 132 131 volatile int debitype; 133 132 volatile int debilen; 134 133 ··· 147 146 148 147 int osdwin; /* currently active window */ 149 148 u16 osdbpp[8]; 150 - struct semaphore osd_sema; 149 + struct mutex osd_mutex; 151 150 152 151 /* CA */ 153 152 ··· 173 172 struct tasklet_struct vpe_tasklet; 174 173 175 174 int fe_synced; 176 - struct semaphore pid_mutex; 175 + struct mutex pid_mutex; 177 176 178 177 int video_blank; 179 178 struct video_status videostate;
+20 -20
drivers/media/dvb/ttpci/av7110_hw.c
··· 324 324 start = jiffies; 325 325 for (;;) { 326 326 err = time_after(jiffies, start + ARM_WAIT_FREE); 327 - if (down_interruptible(&av7110->dcomlock)) 327 + if (mutex_lock_interruptible(&av7110->dcomlock)) 328 328 return -ERESTARTSYS; 329 329 stat = rdebi(av7110, DEBINOSWAP, MSGSTATE, 0, 2); 330 - up(&av7110->dcomlock); 330 + mutex_unlock(&av7110->dcomlock); 331 331 if ((stat & flags) == 0) 332 332 break; 333 333 if (err) { ··· 484 484 dprintk(1, "arm not ready.\n"); 485 485 return -1; 486 486 } 487 - if (down_interruptible(&av7110->dcomlock)) 487 + if (mutex_lock_interruptible(&av7110->dcomlock)) 488 488 return -ERESTARTSYS; 489 489 490 490 ret = __av7110_send_fw_cmd(av7110, buf, length); 491 - up(&av7110->dcomlock); 491 + mutex_unlock(&av7110->dcomlock); 492 492 if (ret && ret!=-ERESTARTSYS) 493 493 printk(KERN_ERR "dvb-ttpci: %s(): av7110_send_fw_cmd error %d\n", 494 494 __FUNCTION__, ret); ··· 560 560 return -1; 561 561 } 562 562 563 - if (down_interruptible(&av7110->dcomlock)) 563 + if (mutex_lock_interruptible(&av7110->dcomlock)) 564 564 return -ERESTARTSYS; 565 565 566 566 if ((err = __av7110_send_fw_cmd(av7110, request_buf, request_buf_len)) < 0) { 567 - up(&av7110->dcomlock); 567 + mutex_unlock(&av7110->dcomlock); 568 568 printk(KERN_ERR "dvb-ttpci: av7110_fw_request error %d\n", err); 569 569 return err; 570 570 } ··· 576 576 break; 577 577 if (err) { 578 578 printk(KERN_ERR "%s: timeout waiting for COMMAND to complete\n", __FUNCTION__); 579 - up(&av7110->dcomlock); 579 + mutex_unlock(&av7110->dcomlock); 580 580 return -ETIMEDOUT; 581 581 } 582 582 #ifdef _NOHANDSHAKE ··· 592 592 break; 593 593 if (err) { 594 594 printk(KERN_ERR "%s: timeout waiting for HANDSHAKE_REG\n", __FUNCTION__); 595 - up(&av7110->dcomlock); 595 + mutex_unlock(&av7110->dcomlock); 596 596 return -ETIMEDOUT; 597 597 } 598 598 msleep(1); ··· 603 603 stat = rdebi(av7110, DEBINOSWAP, MSGSTATE, 0, 2); 604 604 if (stat & GPMQOver) { 605 605 printk(KERN_ERR "%s: GPMQOver\n", __FUNCTION__); 606 - up(&av7110->dcomlock); 606 + mutex_unlock(&av7110->dcomlock); 607 607 return -1; 608 608 } 609 609 else if (stat & OSDQOver) { 610 610 printk(KERN_ERR "%s: OSDQOver\n", __FUNCTION__); 611 - up(&av7110->dcomlock); 611 + mutex_unlock(&av7110->dcomlock); 612 612 return -1; 613 613 } 614 614 #endif ··· 616 616 for (i = 0; i < reply_buf_len; i++) 617 617 reply_buf[i] = rdebi(av7110, DEBINOSWAP, COM_BUFF + 2 * i, 0, 2); 618 618 619 - up(&av7110->dcomlock); 619 + mutex_unlock(&av7110->dcomlock); 620 620 return 0; 621 621 } 622 622 ··· 732 732 unsigned long start; 733 733 int err; 734 734 735 - if (down_interruptible(&av7110->dcomlock)) 735 + if (mutex_lock_interruptible(&av7110->dcomlock)) 736 736 return -ERESTARTSYS; 737 737 start = jiffies; 738 738 while (1) { ··· 742 742 if (err) { 743 743 printk(KERN_ERR "dvb-ttpci: %s(): timeout waiting for BUFF1_BASE == 0\n", 744 744 __FUNCTION__); 745 - up(&av7110->dcomlock); 745 + mutex_unlock(&av7110->dcomlock); 746 746 return -ETIMEDOUT; 747 747 } 748 748 msleep(1); 749 749 } 750 - up(&av7110->dcomlock); 750 + mutex_unlock(&av7110->dcomlock); 751 751 return 0; 752 752 } 753 753 ··· 758 758 int length = strlen(buf) + 1; 759 759 u16 cbuf[5] = { (COMTYPE_OSD << 8) + DText, 3, win, x, y }; 760 760 761 - if (down_interruptible(&av7110->dcomlock)) 761 + if (mutex_lock_interruptible(&av7110->dcomlock)) 762 762 return -ERESTARTSYS; 763 763 764 764 start = jiffies; ··· 769 769 if (ret) { 770 770 printk(KERN_ERR "dvb-ttpci: %s: timeout waiting for BUFF1_BASE == 0\n", 771 771 __FUNCTION__); 772 - up(&av7110->dcomlock); 772 + mutex_unlock(&av7110->dcomlock); 773 773 return -ETIMEDOUT; 774 774 } 775 775 msleep(1); ··· 783 783 if (ret) { 784 784 printk(KERN_ERR "dvb-ttpci: %s: timeout waiting for HANDSHAKE_REG\n", 785 785 __FUNCTION__); 786 - up(&av7110->dcomlock); 786 + mutex_unlock(&av7110->dcomlock); 787 787 return -ETIMEDOUT; 788 788 } 789 789 msleep(1); ··· 795 795 if (length & 1) 796 796 wdebi(av7110, DEBINOSWAP, BUFF1_BASE + i * 2, 0, 2); 797 797 ret = __av7110_send_fw_cmd(av7110, cbuf, 5); 798 - up(&av7110->dcomlock); 798 + mutex_unlock(&av7110->dcomlock); 799 799 if (ret && ret!=-ERESTARTSYS) 800 800 printk(KERN_ERR "dvb-ttpci: WriteText error %d\n", ret); 801 801 return ret; ··· 1059 1059 { 1060 1060 int ret; 1061 1061 1062 - if (down_interruptible(&av7110->osd_sema)) 1062 + if (mutex_lock_interruptible(&av7110->osd_mutex)) 1063 1063 return -ERESTARTSYS; 1064 1064 1065 1065 switch (dc->cmd) { ··· 1195 1195 break; 1196 1196 } 1197 1197 1198 - up(&av7110->osd_sema); 1198 + mutex_unlock(&av7110->osd_mutex); 1199 1199 if (ret==-ERESTARTSYS) 1200 1200 dprintk(1, "av7110_osd_cmd(%d) returns with -ERESTARTSYS\n",dc->cmd); 1201 1201 else if (ret)
+3 -1
drivers/media/dvb/ttpci/budget.h
··· 10 10 #include "dvb_net.h" 11 11 12 12 #include <linux/module.h> 13 + #include <linux/mutex.h> 14 + 13 15 #include <media/saa7146.h> 14 16 15 17 extern int budget_debug; ··· 53 51 struct dmx_frontend mem_frontend; 54 52 55 53 int fe_synced; 56 - struct semaphore pid_mutex; 54 + struct mutex pid_mutex; 57 55 58 56 int ci_present; 59 57 int video_port;
+17 -15
drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
··· 19 19 #include <linux/time.h> 20 20 #include <linux/errno.h> 21 21 #include <linux/jiffies.h> 22 - #include <asm/semaphore.h> 22 + #include <linux/mutex.h> 23 23 24 24 #include "dvb_frontend.h" 25 25 #include "dmxdev.h" ··· 34 34 #include <linux/dvb/frontend.h> 35 35 #include <linux/dvb/dmx.h> 36 36 #include <linux/pci.h> 37 - 38 37 39 38 /* 40 39 TTUSB_HWSECTIONS: ··· 82 83 struct dvb_net dvbnet; 83 84 84 85 /* and one for USB access. */ 85 - struct semaphore semi2c; 86 - struct semaphore semusb; 86 + struct mutex semi2c; 87 + struct mutex semusb; 87 88 88 89 struct dvb_adapter adapter; 89 90 struct usb_device *dev; ··· 149 150 printk("\n"); 150 151 #endif 151 152 152 - if (down_interruptible(&ttusb->semusb) < 0) 153 + if (mutex_lock_interruptible(&ttusb->semusb) < 0) 153 154 return -EAGAIN; 154 155 155 156 err = usb_bulk_msg(ttusb->dev, ttusb->bulk_out_pipe, ··· 157 158 if (err != 0) { 158 159 dprintk("%s: usb_bulk_msg(send) failed, err == %i!\n", 159 160 __FUNCTION__, err); 160 - up(&ttusb->semusb); 161 + mutex_unlock(&ttusb->semusb); 161 162 return err; 162 163 } 163 164 if (actual_len != len) { 164 165 dprintk("%s: only wrote %d of %d bytes\n", __FUNCTION__, 165 166 actual_len, len); 166 - up(&ttusb->semusb); 167 + mutex_unlock(&ttusb->semusb); 167 168 return -1; 168 169 } 169 170 ··· 173 174 if (err != 0) { 174 175 printk("%s: failed, receive error %d\n", __FUNCTION__, 175 176 err); 176 - up(&ttusb->semusb); 177 + mutex_unlock(&ttusb->semusb); 177 178 return err; 178 179 } 179 180 #if DEBUG >= 3 ··· 184 185 printk("\n"); 185 186 #endif 186 187 if (!needresult) 187 - up(&ttusb->semusb); 188 + mutex_unlock(&ttusb->semusb); 188 189 return 0; 189 190 } 190 191 191 192 static int ttusb_result(struct ttusb *ttusb, u8 * data, int len) 192 193 { 193 194 memcpy(data, ttusb->last_result, len); 194 - up(&ttusb->semusb); 195 + mutex_unlock(&ttusb->semusb); 195 196 return 0; 196 197 } 197 198 ··· 249 250 int i = 0; 250 251 int inc; 251 252 252 - if (down_interruptible(&ttusb->semi2c) < 0) 253 + if (mutex_lock_interruptible(&ttusb->semi2c) < 0) 253 254 return -EAGAIN; 254 255 255 256 while (i < num) { ··· 283 284 i += inc; 284 285 } 285 286 286 - up(&ttusb->semi2c); 287 + mutex_unlock(&ttusb->semi2c); 287 288 return i; 288 289 } 289 290 ··· 1494 1495 ttusb->dev = udev; 1495 1496 ttusb->c = 0; 1496 1497 ttusb->mux_state = 0; 1497 - sema_init(&ttusb->semi2c, 0); 1498 - sema_init(&ttusb->semusb, 1); 1498 + mutex_init(&ttusb->semi2c); 1499 + 1500 + mutex_lock(&ttusb->semi2c); 1501 + 1502 + mutex_init(&ttusb->semusb); 1499 1503 1500 1504 ttusb_setup_interfaces(ttusb); 1501 1505 ··· 1506 1504 if (ttusb_init_controller(ttusb)) 1507 1505 printk("ttusb_init_controller: error\n"); 1508 1506 1509 - up(&ttusb->semi2c); 1507 + mutex_unlock(&ttusb->semi2c); 1510 1508 1511 1509 dvb_register_adapter(&ttusb->adapter, "Technotrend/Hauppauge Nova-USB", THIS_MODULE); 1512 1510 ttusb->adapter.priv = ttusb;
+16 -15
drivers/media/dvb/ttusb-dec/ttusb_dec.c
··· 20 20 * 21 21 */ 22 22 23 - #include <asm/semaphore.h> 23 + #include <linux/mutex.h> 24 + 24 25 #include <linux/list.h> 25 26 #include <linux/module.h> 26 27 #include <linux/moduleparam.h> ··· 116 115 unsigned int out_pipe; 117 116 unsigned int irq_pipe; 118 117 enum ttusb_dec_interface interface; 119 - struct semaphore usb_sem; 118 + struct mutex usb_mutex; 120 119 121 120 void *irq_buffer; 122 121 struct urb *irq_urb; ··· 125 124 dma_addr_t iso_dma_handle; 126 125 struct urb *iso_urb[ISO_BUF_COUNT]; 127 126 int iso_stream_count; 128 - struct semaphore iso_sem; 127 + struct mutex iso_mutex; 129 128 130 129 u8 packet[MAX_PVA_LENGTH + 4]; 131 130 enum ttusb_dec_packet_type packet_type; ··· 274 273 if (!b) 275 274 return -ENOMEM; 276 275 277 - if ((result = down_interruptible(&dec->usb_sem))) { 276 + if ((result = mutex_lock_interruptible(&dec->usb_mutex))) { 278 277 kfree(b); 279 - printk("%s: Failed to down usb semaphore.\n", __FUNCTION__); 278 + printk("%s: Failed to lock usb mutex.\n", __FUNCTION__); 280 279 return result; 281 280 } 282 281 ··· 301 300 if (result) { 302 301 printk("%s: command bulk message failed: error %d\n", 303 302 __FUNCTION__, result); 304 - up(&dec->usb_sem); 303 + mutex_unlock(&dec->usb_mutex); 305 304 kfree(b); 306 305 return result; 307 306 } ··· 312 311 if (result) { 313 312 printk("%s: result bulk message failed: error %d\n", 314 313 __FUNCTION__, result); 315 - up(&dec->usb_sem); 314 + mutex_unlock(&dec->usb_mutex); 316 315 kfree(b); 317 316 return result; 318 317 } else { ··· 328 327 if (cmd_result && b[3] > 0) 329 328 memcpy(cmd_result, &b[4], b[3]); 330 329 331 - up(&dec->usb_sem); 330 + mutex_unlock(&dec->usb_mutex); 332 331 333 332 kfree(b); 334 333 return 0; ··· 836 835 837 836 dprintk("%s\n", __FUNCTION__); 838 837 839 - if (down_interruptible(&dec->iso_sem)) 838 + if (mutex_lock_interruptible(&dec->iso_mutex)) 840 839 return; 841 840 842 841 dec->iso_stream_count--; ··· 846 845 usb_kill_urb(dec->iso_urb[i]); 847 846 } 848 847 849 - up(&dec->iso_sem); 848 + mutex_unlock(&dec->iso_mutex); 850 849 } 851 850 852 851 /* Setting the interface of the DEC tends to take down the USB communications ··· 891 890 892 891 dprintk("%s\n", __FUNCTION__); 893 892 894 - if (down_interruptible(&dec->iso_sem)) 893 + if (mutex_lock_interruptible(&dec->iso_mutex)) 895 894 return -EAGAIN; 896 895 897 896 if (!dec->iso_stream_count) { ··· 912 911 i--; 913 912 } 914 913 915 - up(&dec->iso_sem); 914 + mutex_unlock(&dec->iso_mutex); 916 915 return result; 917 916 } 918 917 } ··· 920 919 921 920 dec->iso_stream_count++; 922 921 923 - up(&dec->iso_sem); 922 + mutex_unlock(&dec->iso_mutex); 924 923 925 924 return 0; 926 925 } ··· 1230 1229 { 1231 1230 dprintk("%s\n", __FUNCTION__); 1232 1231 1233 - sema_init(&dec->usb_sem, 1); 1234 - sema_init(&dec->iso_sem, 1); 1232 + mutex_init(&dec->usb_mutex); 1233 + mutex_init(&dec->iso_mutex); 1235 1234 1236 1235 dec->command_pipe = usb_sndbulkpipe(dec->udev, COMMAND_PIPE); 1237 1236 dec->result_pipe = usb_rcvbulkpipe(dec->udev, RESULT_PIPE);
+6 -5
drivers/media/radio/miropcm20-rds-core.c
··· 18 18 #include <linux/string.h> 19 19 #include <linux/init.h> 20 20 #include <linux/slab.h> 21 - #include <asm/semaphore.h> 21 + #include <linux/mutex.h> 22 + 22 23 #include <asm/io.h> 23 24 #include "../../../sound/oss/aci.h" 24 25 #include "miropcm20-rds-core.h" 25 26 26 27 #define DEBUG 0 27 28 28 - static struct semaphore aci_rds_sem; 29 + static struct mutex aci_rds_mutex; 29 30 30 31 #define RDS_DATASHIFT 2 /* Bit 2 */ 31 32 #define RDS_DATAMASK (1 << RDS_DATASHIFT) ··· 182 181 { 183 182 int ret; 184 183 185 - if (down_interruptible(&aci_rds_sem)) 184 + if (mutex_lock_interruptible(&aci_rds_mutex)) 186 185 return -EINTR; 187 186 188 187 rds_write(cmd); ··· 193 192 else 194 193 ret = 0; 195 194 196 - up(&aci_rds_sem); 195 + mutex_unlock(&aci_rds_mutex); 197 196 198 197 return ret; 199 198 } ··· 201 200 202 201 int __init attach_aci_rds(void) 203 202 { 204 - init_MUTEX(&aci_rds_sem); 203 + mutex_init(&aci_rds_mutex); 205 204 return 0; 206 205 } 207 206
+10 -10
drivers/media/radio/radio-aimslab.c
··· 43 43 44 44 static int io = CONFIG_RADIO_RTRACK_PORT; 45 45 static int radio_nr = -1; 46 - static struct semaphore lock; 46 + static struct mutex lock; 47 47 48 48 struct rt_device 49 49 { ··· 83 83 static void rt_mute(struct rt_device *dev) 84 84 { 85 85 dev->muted = 1; 86 - down(&lock); 86 + mutex_lock(&lock); 87 87 outb(0xd0, io); /* volume steady, off */ 88 - up(&lock); 88 + mutex_unlock(&lock); 89 89 } 90 90 91 91 static int rt_setvol(struct rt_device *dev, int vol) 92 92 { 93 93 int i; 94 94 95 - down(&lock); 95 + mutex_lock(&lock); 96 96 97 97 if(vol == dev->curvol) { /* requested volume = current */ 98 98 if (dev->muted) { /* user is unmuting the card */ 99 99 dev->muted = 0; 100 100 outb (0xd8, io); /* enable card */ 101 101 } 102 - up(&lock); 102 + mutex_unlock(&lock); 103 103 return 0; 104 104 } 105 105 ··· 108 108 sleep_delay(2000000); /* make sure it's totally down */ 109 109 outb(0xd0, io); /* volume steady, off */ 110 110 dev->curvol = 0; /* track the volume state! */ 111 - up(&lock); 111 + mutex_unlock(&lock); 112 112 return 0; 113 113 } 114 114 ··· 121 121 rt_decvol(); 122 122 123 123 dev->curvol = vol; 124 - up(&lock); 124 + mutex_unlock(&lock); 125 125 return 0; 126 126 } 127 127 ··· 168 168 freq += 171200; /* Add 10.7 MHz IF */ 169 169 freq /= 800; /* Convert to 50 kHz units */ 170 170 171 - down(&lock); /* Stop other ops interfering */ 171 + mutex_lock(&lock); /* Stop other ops interfering */ 172 172 173 173 send_0_byte (io, dev); /* 0: LSB of frequency */ 174 174 ··· 196 196 else 197 197 outb (0xd8, io); /* volume steady + sigstr + on */ 198 198 199 - up(&lock); 199 + mutex_unlock(&lock); 200 200 201 201 return 0; 202 202 } ··· 337 337 338 338 /* Set up the I/O locking */ 339 339 340 - init_MUTEX(&lock); 340 + mutex_init(&lock); 341 341 342 342 /* mute card - prevents noisy bootups */ 343 343
+6 -6
drivers/media/radio/radio-aztech.c
··· 42 42 static int io = CONFIG_RADIO_AZTECH_PORT; 43 43 static int radio_nr = -1; 44 44 static int radio_wait_time = 1000; 45 - static struct semaphore lock; 45 + static struct mutex lock; 46 46 47 47 struct az_device 48 48 { ··· 87 87 88 88 static int az_setvol(struct az_device *dev, int vol) 89 89 { 90 - down(&lock); 90 + mutex_lock(&lock); 91 91 outb (volconvert(vol), io); 92 - up(&lock); 92 + mutex_unlock(&lock); 93 93 return 0; 94 94 } 95 95 ··· 122 122 frequency += 171200; /* Add 10.7 MHz IF */ 123 123 frequency /= 800; /* Convert to 50 kHz units */ 124 124 125 - down(&lock); 125 + mutex_lock(&lock); 126 126 127 127 send_0_byte (dev); /* 0: LSB of frequency */ 128 128 ··· 152 152 udelay (radio_wait_time); 153 153 outb_p(128+64+volconvert(dev->curvol), io); 154 154 155 - up(&lock); 155 + mutex_unlock(&lock); 156 156 157 157 return 0; 158 158 } ··· 283 283 return -EBUSY; 284 284 } 285 285 286 - init_MUTEX(&lock); 286 + mutex_init(&lock); 287 287 aztech_radio.priv=&aztech_unit; 288 288 289 289 if(video_register_device(&aztech_radio, VFL_TYPE_RADIO, radio_nr)==-1)
+6 -5
drivers/media/radio/radio-maestro.c
··· 23 23 #include <linux/sched.h> 24 24 #include <asm/io.h> 25 25 #include <asm/uaccess.h> 26 - #include <asm/semaphore.h> 26 + #include <linux/mutex.h> 27 27 #include <linux/pci.h> 28 28 #include <linux/videodev.h> 29 + 29 30 30 31 #define DRIVER_VERSION "0.05" 31 32 ··· 105 104 muted, /* VIDEO_AUDIO_MUTE */ 106 105 stereo, /* VIDEO_TUNER_STEREO_ON */ 107 106 tuned; /* signal strength (0 or 0xffff) */ 108 - struct semaphore lock; 107 + struct mutex lock; 109 108 }; 110 109 111 110 static u32 radio_bits_get(struct radio_device *dev) ··· 259 258 struct radio_device *card = video_get_drvdata(dev); 260 259 int ret; 261 260 262 - down(&card->lock); 261 + mutex_lock(&card->lock); 263 262 ret = video_usercopy(inode, file, cmd, arg, radio_function); 264 - up(&card->lock); 263 + mutex_unlock(&card->lock); 265 264 266 265 return ret; 267 266 } ··· 312 311 } 313 312 314 313 radio_unit->io = pci_resource_start(pdev, 0) + GPIO_DATA; 315 - init_MUTEX(&radio_unit->lock); 314 + mutex_init(&radio_unit->lock); 316 315 317 316 maestro_radio_inst = video_device_alloc(); 318 317 if (maestro_radio_inst == NULL) {
+6 -5
drivers/media/radio/radio-maxiradio.c
··· 37 37 #include <linux/sched.h> 38 38 #include <asm/io.h> 39 39 #include <asm/uaccess.h> 40 - #include <asm/semaphore.h> 40 + #include <linux/mutex.h> 41 + 41 42 #include <linux/pci.h> 42 43 #include <linux/videodev.h> 43 44 ··· 102 101 103 102 unsigned long freq; 104 103 105 - struct semaphore lock; 104 + struct mutex lock; 106 105 } radio_unit = {0, 0, 0, 0, }; 107 106 108 107 ··· 268 267 struct radio_device *card=dev->priv; 269 268 int ret; 270 269 271 - down(&card->lock); 270 + mutex_lock(&card->lock); 272 271 ret = video_usercopy(inode, file, cmd, arg, radio_function); 273 - up(&card->lock); 272 + mutex_unlock(&card->lock); 274 273 return ret; 275 274 } 276 275 ··· 291 290 goto err_out_free_region; 292 291 293 292 radio_unit.io = pci_resource_start(pdev, 0); 294 - init_MUTEX(&radio_unit.lock); 293 + mutex_init(&radio_unit.lock); 295 294 maxiradio_radio.priv = &radio_unit; 296 295 297 296 if(video_register_device(&maxiradio_radio, VFL_TYPE_RADIO, radio_nr)==-1) {
+11 -11
drivers/media/radio/radio-sf16fmi.c
··· 24 24 #include <linux/isapnp.h> 25 25 #include <asm/io.h> /* outb, outb_p */ 26 26 #include <asm/uaccess.h> /* copy to/from user */ 27 - #include <asm/semaphore.h> 27 + #include <linux/mutex.h> 28 28 29 29 struct fmi_device 30 30 { ··· 37 37 static int io = -1; 38 38 static int radio_nr = -1; 39 39 static struct pnp_dev *dev = NULL; 40 - static struct semaphore lock; 40 + static struct mutex lock; 41 41 42 42 /* freq is in 1/16 kHz to internal number, hw precision is 50 kHz */ 43 43 /* It is only useful to give freq in intervall of 800 (=0.05Mhz), ··· 68 68 69 69 static inline void fmi_mute(int port) 70 70 { 71 - down(&lock); 71 + mutex_lock(&lock); 72 72 outb(0x00, port); 73 - up(&lock); 73 + mutex_unlock(&lock); 74 74 } 75 75 76 76 static inline void fmi_unmute(int port) 77 77 { 78 - down(&lock); 78 + mutex_lock(&lock); 79 79 outb(0x08, port); 80 - up(&lock); 80 + mutex_unlock(&lock); 81 81 } 82 82 83 83 static inline int fmi_setfreq(struct fmi_device *dev) ··· 85 85 int myport = dev->port; 86 86 unsigned long freq = dev->curfreq; 87 87 88 - down(&lock); 88 + mutex_lock(&lock); 89 89 90 90 outbits(16, RSF16_ENCODE(freq), myport); 91 91 outbits(8, 0xC0, myport); 92 92 msleep(143); /* was schedule_timeout(HZ/7) */ 93 - up(&lock); 93 + mutex_unlock(&lock); 94 94 if (dev->curvol) fmi_unmute(myport); 95 95 return 0; 96 96 } ··· 102 102 int myport = dev->port; 103 103 104 104 105 - down(&lock); 105 + mutex_lock(&lock); 106 106 val = dev->curvol ? 0x08 : 0x00; /* unmute/mute */ 107 107 outb(val, myport); 108 108 outb(val | 0x10, myport); ··· 110 110 res = (int)inb(myport+1); 111 111 outb(val, myport); 112 112 113 - up(&lock); 113 + mutex_unlock(&lock); 114 114 return (res & 2) ? 0 : 0xFFFF; 115 115 } 116 116 ··· 296 296 fmi_unit.flags = VIDEO_TUNER_LOW; 297 297 fmi_radio.priv = &fmi_unit; 298 298 299 - init_MUTEX(&lock); 299 + mutex_init(&lock); 300 300 301 301 if (video_register_device(&fmi_radio, VFL_TYPE_RADIO, radio_nr) == -1) { 302 302 release_region(io, 2);
+11 -11
drivers/media/radio/radio-sf16fmr2.c
··· 19 19 #include <asm/io.h> /* outb, outb_p */ 20 20 #include <asm/uaccess.h> /* copy to/from user */ 21 21 #include <linux/videodev.h> /* kernel radio structs */ 22 - #include <asm/semaphore.h> 22 + #include <linux/mutex.h> 23 23 24 - static struct semaphore lock; 24 + static struct mutex lock; 25 25 26 26 #undef DEBUG 27 27 //#define DEBUG 1 ··· 238 238 if (fmr2->mute) 239 239 v->flags |= VIDEO_AUDIO_MUTE; 240 240 v->mode=VIDEO_MODE_AUTO; 241 - down(&lock); 241 + mutex_lock(&lock); 242 242 v->signal = fmr2_getsigstr(fmr2); 243 - up(&lock); 243 + mutex_unlock(&lock); 244 244 return 0; 245 245 } 246 246 case VIDIOCSTUNER: ··· 274 274 /* set card freq (if not muted) */ 275 275 if (fmr2->curvol && !fmr2->mute) 276 276 { 277 - down(&lock); 277 + mutex_lock(&lock); 278 278 fmr2_setfreq(fmr2); 279 - up(&lock); 279 + mutex_unlock(&lock); 280 280 } 281 281 return 0; 282 282 } ··· 318 318 else 319 319 printk(KERN_DEBUG "mute\n"); 320 320 #endif 321 - down(&lock); 321 + mutex_lock(&lock); 322 322 if (fmr2->curvol && !fmr2->mute) 323 323 { 324 324 fmr2_setvolume(fmr2); 325 325 fmr2_setfreq(fmr2); 326 326 } 327 327 else fmr2_mute(fmr2->port); 328 - up(&lock); 328 + mutex_unlock(&lock); 329 329 return 0; 330 330 } 331 331 case VIDIOCGUNIT: ··· 380 380 fmr2_unit.card_type = 0; 381 381 fmr2_radio.priv = &fmr2_unit; 382 382 383 - init_MUTEX(&lock); 383 + mutex_init(&lock); 384 384 385 385 if (request_region(io, 2, "sf16fmr2")) 386 386 { ··· 397 397 printk(KERN_INFO "SF16FMR2 radio card driver at 0x%x.\n", io); 398 398 debug_print((KERN_DEBUG "Mute %d Low %d\n",VIDEO_AUDIO_MUTE,VIDEO_TUNER_LOW)); 399 399 /* mute card - prevents noisy bootups */ 400 - down(&lock); 400 + mutex_lock(&lock); 401 401 fmr2_mute(io); 402 402 fmr2_product_info(&fmr2_unit); 403 - up(&lock); 403 + mutex_unlock(&lock); 404 404 debug_print((KERN_DEBUG "card_type %d\n", fmr2_unit.card_type)); 405 405 return 0; 406 406 }
+6 -6
drivers/media/radio/radio-typhoon.c
··· 59 59 int muted; 60 60 unsigned long curfreq; 61 61 unsigned long mutefreq; 62 - struct semaphore lock; 62 + struct mutex lock; 63 63 }; 64 64 65 65 static void typhoon_setvol_generic(struct typhoon_device *dev, int vol); ··· 77 77 78 78 static void typhoon_setvol_generic(struct typhoon_device *dev, int vol) 79 79 { 80 - down(&dev->lock); 80 + mutex_lock(&dev->lock); 81 81 vol >>= 14; /* Map 16 bit to 2 bit */ 82 82 vol &= 3; 83 83 outb_p(vol / 2, dev->iobase); /* Set the volume, high bit. */ 84 84 outb_p(vol % 2, dev->iobase + 2); /* Set the volume, low bit. */ 85 - up(&dev->lock); 85 + mutex_unlock(&dev->lock); 86 86 } 87 87 88 88 static int typhoon_setfreq_generic(struct typhoon_device *dev, ··· 102 102 * 103 103 */ 104 104 105 - down(&dev->lock); 105 + mutex_lock(&dev->lock); 106 106 x = frequency / 160; 107 107 outval = (x * x + 2500) / 5000; 108 108 outval = (outval * x + 5000) / 10000; ··· 112 112 outb_p((outval >> 8) & 0x01, dev->iobase + 4); 113 113 outb_p(outval >> 9, dev->iobase + 6); 114 114 outb_p(outval & 0xff, dev->iobase + 8); 115 - up(&dev->lock); 115 + mutex_unlock(&dev->lock); 116 116 117 117 return 0; 118 118 } ··· 337 337 #endif /* MODULE */ 338 338 339 339 printk(KERN_INFO BANNER); 340 - init_MUTEX(&typhoon_unit.lock); 340 + mutex_init(&typhoon_unit.lock); 341 341 io = typhoon_unit.iobase; 342 342 if (!request_region(io, 8, "typhoon")) { 343 343 printk(KERN_ERR "radio-typhoon: port 0x%x already in use\n",
+13 -13
drivers/media/radio/radio-zoltrix.c
··· 48 48 unsigned long curfreq; 49 49 int muted; 50 50 unsigned int stereo; 51 - struct semaphore lock; 51 + struct mutex lock; 52 52 }; 53 53 54 54 static int zol_setvol(struct zol_device *dev, int vol) ··· 57 57 if (dev->muted) 58 58 return 0; 59 59 60 - down(&dev->lock); 60 + mutex_lock(&dev->lock); 61 61 if (vol == 0) { 62 62 outb(0, io); 63 63 outb(0, io); 64 64 inb(io + 3); /* Zoltrix needs to be read to confirm */ 65 - up(&dev->lock); 65 + mutex_unlock(&dev->lock); 66 66 return 0; 67 67 } 68 68 69 69 outb(dev->curvol-1, io); 70 70 msleep(10); 71 71 inb(io + 2); 72 - up(&dev->lock); 72 + mutex_unlock(&dev->lock); 73 73 return 0; 74 74 } 75 75 76 76 static void zol_mute(struct zol_device *dev) 77 77 { 78 78 dev->muted = 1; 79 - down(&dev->lock); 79 + mutex_lock(&dev->lock); 80 80 outb(0, io); 81 81 outb(0, io); 82 82 inb(io + 3); /* Zoltrix needs to be read to confirm */ 83 - up(&dev->lock); 83 + mutex_unlock(&dev->lock); 84 84 } 85 85 86 86 static void zol_unmute(struct zol_device *dev) ··· 104 104 bitmask = 0xc480402c10080000ull; 105 105 i = 45; 106 106 107 - down(&dev->lock); 107 + mutex_lock(&dev->lock); 108 108 109 109 outb(0, io); 110 110 outb(0, io); ··· 149 149 udelay(1000); 150 150 } 151 151 152 - up(&dev->lock); 152 + mutex_unlock(&dev->lock); 153 153 154 154 if(!dev->muted) 155 155 { ··· 164 164 { 165 165 int a, b; 166 166 167 - down(&dev->lock); 167 + mutex_lock(&dev->lock); 168 168 outb(0x00, io); /* This stuff I found to do nothing */ 169 169 outb(dev->curvol, io); 170 170 msleep(20); ··· 173 173 msleep(10); 174 174 b = inb(io); 175 175 176 - up(&dev->lock); 176 + mutex_unlock(&dev->lock); 177 177 178 178 if (a != b) 179 179 return (0); ··· 188 188 { 189 189 int x1, x2; 190 190 191 - down(&dev->lock); 191 + mutex_lock(&dev->lock); 192 192 193 193 outb(0x00, io); 194 194 outb(dev->curvol, io); ··· 198 198 msleep(10); 199 199 x2 = inb(io); 200 200 201 - up(&dev->lock); 201 + mutex_unlock(&dev->lock); 202 202 203 203 if ((x1 == x2) && (x1 == 0xcf)) 204 204 return 1; ··· 350 350 } 351 351 printk(KERN_INFO "Zoltrix Radio Plus card driver.\n"); 352 352 353 - init_MUTEX(&zoltrix_unit.lock); 353 + mutex_init(&zoltrix_unit.lock); 354 354 355 355 /* mute card - prevents noisy bootups */ 356 356
+8 -8
drivers/media/video/arv.c
··· 31 31 #include <linux/mm.h> 32 32 #include <linux/sched.h> 33 33 #include <linux/videodev.h> 34 + #include <linux/mutex.h> 34 35 35 - #include <asm/semaphore.h> 36 36 #include <asm/uaccess.h> 37 37 #include <asm/m32r.h> 38 38 #include <asm/io.h> ··· 117 117 int width, height; 118 118 int frame_bytes, line_bytes; 119 119 wait_queue_head_t wait; 120 - struct semaphore lock; 120 + struct mutex lock; 121 121 }; 122 122 123 123 static int video_nr = -1; /* video device number (first free) */ ··· 288 288 if (ar->mode == AR_MODE_NORMAL) 289 289 arvcr1 |= ARVCR1_NORMAL; 290 290 291 - down(&ar->lock); 291 + mutex_lock(&ar->lock); 292 292 293 293 #if USE_INT 294 294 local_irq_save(flags); ··· 392 392 } 393 393 DEBUG(1, "ret = %d\n", ret); 394 394 out_up: 395 - up(&ar->lock); 395 + mutex_unlock(&ar->lock); 396 396 return ret; 397 397 } 398 398 ··· 456 456 (w->width != AR_WIDTH_QVGA || w->height != AR_HEIGHT_QVGA)) 457 457 return -EINVAL; 458 458 459 - down(&ar->lock); 459 + mutex_lock(&ar->lock); 460 460 ar->width = w->width; 461 461 ar->height = w->height; 462 462 if (ar->width == AR_WIDTH_VGA) { ··· 473 473 ar->line_bytes = AR_LINE_BYTES_QVGA; 474 474 ar->mode = AR_MODE_INTERLACE; 475 475 } 476 - up(&ar->lock); 476 + mutex_unlock(&ar->lock); 477 477 return 0; 478 478 } 479 479 case VIDIOCGFBUF: ··· 734 734 void ar_release(struct video_device *vfd) 735 735 { 736 736 struct ar_device *ar = vfd->priv; 737 - down(&ar->lock); 737 + mutex_lock(&ar->lock); 738 738 video_device_release(vfd); 739 739 } 740 740 ··· 824 824 ar->line_bytes = AR_LINE_BYTES_QVGA; 825 825 ar->mode = AR_MODE_INTERLACE; 826 826 } 827 - init_MUTEX(&ar->lock); 827 + mutex_init(&ar->lock); 828 828 init_waitqueue_head(&ar->wait); 829 829 830 830 #if USE_INT
+24 -24
drivers/media/video/bttv-driver.c
··· 1965 1965 BUG(); 1966 1966 } 1967 1967 1968 - down(&fh->cap.lock); 1968 + mutex_lock(&fh->cap.lock); 1969 1969 kfree(fh->ov.clips); 1970 1970 fh->ov.clips = clips; 1971 1971 fh->ov.nclips = n; ··· 1986 1986 bttv_overlay_risc(btv, &fh->ov, fh->ovfmt, new); 1987 1987 retval = bttv_switch_overlay(btv,fh,new); 1988 1988 } 1989 - up(&fh->cap.lock); 1989 + mutex_unlock(&fh->cap.lock); 1990 1990 return retval; 1991 1991 } 1992 1992 ··· 2166 2166 fmt = format_by_fourcc(f->fmt.pix.pixelformat); 2167 2167 2168 2168 /* update our state informations */ 2169 - down(&fh->cap.lock); 2169 + mutex_lock(&fh->cap.lock); 2170 2170 fh->fmt = fmt; 2171 2171 fh->cap.field = f->fmt.pix.field; 2172 2172 fh->cap.last = V4L2_FIELD_NONE; ··· 2175 2175 btv->init.fmt = fmt; 2176 2176 btv->init.width = f->fmt.pix.width; 2177 2177 btv->init.height = f->fmt.pix.height; 2178 - up(&fh->cap.lock); 2178 + mutex_unlock(&fh->cap.lock); 2179 2179 2180 2180 return 0; 2181 2181 } ··· 2282 2282 fmt = format_by_palette(pic->palette); 2283 2283 if (NULL == fmt) 2284 2284 return -EINVAL; 2285 - down(&fh->cap.lock); 2285 + mutex_lock(&fh->cap.lock); 2286 2286 if (fmt->depth != pic->depth) { 2287 2287 retval = -EINVAL; 2288 2288 goto fh_unlock_and_return; ··· 2313 2313 bt848_contrast(btv,pic->contrast); 2314 2314 bt848_hue(btv,pic->hue); 2315 2315 bt848_sat(btv,pic->colour); 2316 - up(&fh->cap.lock); 2316 + mutex_unlock(&fh->cap.lock); 2317 2317 return 0; 2318 2318 } 2319 2319 ··· 2379 2379 return -EPERM; 2380 2380 end = (unsigned long)fbuf->base + 2381 2381 fbuf->height * fbuf->bytesperline; 2382 - down(&fh->cap.lock); 2382 + mutex_lock(&fh->cap.lock); 2383 2383 retval = -EINVAL; 2384 2384 2385 2385 switch (fbuf->depth) { ··· 2417 2417 btv->fbuf.fmt.bytesperline = fbuf->bytesperline; 2418 2418 else 2419 2419 btv->fbuf.fmt.bytesperline = btv->fbuf.fmt.width*fbuf->depth/8; 2420 - up(&fh->cap.lock); 2420 + mutex_unlock(&fh->cap.lock); 2421 2421 return 0; 2422 2422 } 2423 2423 ··· 2440 2440 if (!check_alloc_btres(btv,fh,RESOURCE_OVERLAY)) 2441 2441 return -EBUSY; 2442 2442 2443 - down(&fh->cap.lock); 2443 + mutex_lock(&fh->cap.lock); 2444 2444 if (*on) { 2445 2445 fh->ov.tvnorm = btv->tvnorm; 2446 2446 new = videobuf_alloc(sizeof(*new)); ··· 2451 2451 2452 2452 /* switch over */ 2453 2453 retval = bttv_switch_overlay(btv,fh,new); 2454 - up(&fh->cap.lock); 2454 + mutex_unlock(&fh->cap.lock); 2455 2455 return retval; 2456 2456 } 2457 2457 ··· 2460 2460 struct video_mbuf *mbuf = arg; 2461 2461 unsigned int i; 2462 2462 2463 - down(&fh->cap.lock); 2463 + mutex_lock(&fh->cap.lock); 2464 2464 retval = videobuf_mmap_setup(&fh->cap,gbuffers,gbufsize, 2465 2465 V4L2_MEMORY_MMAP); 2466 2466 if (retval < 0) ··· 2470 2470 mbuf->size = gbuffers * gbufsize; 2471 2471 for (i = 0; i < gbuffers; i++) 2472 2472 mbuf->offsets[i] = i * gbufsize; 2473 - up(&fh->cap.lock); 2473 + mutex_unlock(&fh->cap.lock); 2474 2474 return 0; 2475 2475 } 2476 2476 case VIDIOCMCAPTURE: ··· 2482 2482 if (vm->frame >= VIDEO_MAX_FRAME) 2483 2483 return -EINVAL; 2484 2484 2485 - down(&fh->cap.lock); 2485 + mutex_lock(&fh->cap.lock); 2486 2486 retval = -EINVAL; 2487 2487 buf = (struct bttv_buffer *)fh->cap.bufs[vm->frame]; 2488 2488 if (NULL == buf) ··· 2504 2504 spin_lock_irqsave(&btv->s_lock,flags); 2505 2505 buffer_queue(&fh->cap,&buf->vb); 2506 2506 spin_unlock_irqrestore(&btv->s_lock,flags); 2507 - up(&fh->cap.lock); 2507 + mutex_unlock(&fh->cap.lock); 2508 2508 return 0; 2509 2509 } 2510 2510 case VIDIOCSYNC: ··· 2515 2515 if (*frame >= VIDEO_MAX_FRAME) 2516 2516 return -EINVAL; 2517 2517 2518 - down(&fh->cap.lock); 2518 + mutex_lock(&fh->cap.lock); 2519 2519 retval = -EINVAL; 2520 2520 buf = (struct bttv_buffer *)fh->cap.bufs[*frame]; 2521 2521 if (NULL == buf) ··· 2535 2535 retval = -EINVAL; 2536 2536 break; 2537 2537 } 2538 - up(&fh->cap.lock); 2538 + mutex_unlock(&fh->cap.lock); 2539 2539 return retval; 2540 2540 } 2541 2541 ··· 2719 2719 if (0 == (fmt->flags & FORMAT_FLAGS_PACKED)) 2720 2720 return -EINVAL; 2721 2721 2722 - down(&fh->cap.lock); 2722 + mutex_lock(&fh->cap.lock); 2723 2723 retval = -EINVAL; 2724 2724 if (fb->flags & V4L2_FBUF_FLAG_OVERLAY) { 2725 2725 if (fb->fmt.width > bttv_tvnorms[btv->tvnorm].swidth) ··· 2759 2759 retval = bttv_switch_overlay(btv,fh,new); 2760 2760 } 2761 2761 } 2762 - up(&fh->cap.lock); 2762 + mutex_unlock(&fh->cap.lock); 2763 2763 return retval; 2764 2764 } 2765 2765 ··· 2890 2890 return 0; 2891 2891 2892 2892 fh_unlock_and_return: 2893 - up(&fh->cap.lock); 2893 + mutex_unlock(&fh->cap.lock); 2894 2894 return retval; 2895 2895 } 2896 2896 ··· 2957 2957 buf = list_entry(fh->cap.stream.next,struct bttv_buffer,vb.stream); 2958 2958 } else { 2959 2959 /* read() capture */ 2960 - down(&fh->cap.lock); 2960 + mutex_lock(&fh->cap.lock); 2961 2961 if (NULL == fh->cap.read_buf) { 2962 2962 /* need to capture a new frame */ 2963 2963 if (locked_btres(fh->btv,RESOURCE_VIDEO)) { 2964 - up(&fh->cap.lock); 2964 + mutex_unlock(&fh->cap.lock); 2965 2965 return POLLERR; 2966 2966 } 2967 2967 fh->cap.read_buf = videobuf_alloc(fh->cap.msize); 2968 2968 if (NULL == fh->cap.read_buf) { 2969 - up(&fh->cap.lock); 2969 + mutex_unlock(&fh->cap.lock); 2970 2970 return POLLERR; 2971 2971 } 2972 2972 fh->cap.read_buf->memory = V4L2_MEMORY_USERPTR; ··· 2974 2974 if (0 != fh->cap.ops->buf_prepare(&fh->cap,fh->cap.read_buf,field)) { 2975 2975 kfree (fh->cap.read_buf); 2976 2976 fh->cap.read_buf = NULL; 2977 - up(&fh->cap.lock); 2977 + mutex_unlock(&fh->cap.lock); 2978 2978 return POLLERR; 2979 2979 } 2980 2980 fh->cap.ops->buf_queue(&fh->cap,fh->cap.read_buf); 2981 2981 fh->cap.read_off = 0; 2982 2982 } 2983 - up(&fh->cap.lock); 2983 + mutex_unlock(&fh->cap.lock); 2984 2984 buf = (struct bttv_buffer*)fh->cap.read_buf; 2985 2985 } 2986 2986
+8 -8
drivers/media/video/bw-qcam.c
··· 73 73 #include <linux/parport.h> 74 74 #include <linux/sched.h> 75 75 #include <linux/videodev.h> 76 - #include <asm/semaphore.h> 76 + #include <linux/mutex.h> 77 77 #include <asm/uaccess.h> 78 78 79 79 #include "bw-qcam.h" ··· 168 168 169 169 memcpy(&q->vdev, &qcam_template, sizeof(qcam_template)); 170 170 171 - init_MUTEX(&q->lock); 171 + mutex_init(&q->lock); 172 172 173 173 q->port_mode = (QC_ANY | QC_NOTSET); 174 174 q->width = 320; ··· 772 772 qcam->whitebal = p->whiteness>>8; 773 773 qcam->bpp = p->depth; 774 774 775 - down(&qcam->lock); 775 + mutex_lock(&qcam->lock); 776 776 qc_setscanmode(qcam); 777 - up(&qcam->lock); 777 + mutex_unlock(&qcam->lock); 778 778 qcam->status |= QC_PARAM_CHANGE; 779 779 780 780 return 0; ··· 805 805 qcam->height = 240; 806 806 qcam->transfer_scale = 1; 807 807 } 808 - down(&qcam->lock); 808 + mutex_lock(&qcam->lock); 809 809 qc_setscanmode(qcam); 810 - up(&qcam->lock); 810 + mutex_unlock(&qcam->lock); 811 811 812 812 /* We must update the camera before we grab. We could 813 813 just have changed the grab size */ ··· 854 854 int len; 855 855 parport_claim_or_block(qcam->pdev); 856 856 857 - down(&qcam->lock); 857 + mutex_lock(&qcam->lock); 858 858 859 859 qc_reset(qcam); 860 860 ··· 864 864 865 865 len=qc_capture(qcam, buf,count); 866 866 867 - up(&qcam->lock); 867 + mutex_unlock(&qcam->lock); 868 868 869 869 parport_release(qcam->pdev); 870 870 return len;
+1 -1
drivers/media/video/bw-qcam.h
··· 55 55 struct video_device vdev; 56 56 struct pardevice *pdev; 57 57 struct parport *pport; 58 - struct semaphore lock; 58 + struct mutex lock; 59 59 int width, height; 60 60 int bpp; 61 61 int mode;
+10 -9
drivers/media/video/c-qcam.c
··· 34 34 #include <linux/parport.h> 35 35 #include <linux/sched.h> 36 36 #include <linux/videodev.h> 37 - #include <asm/semaphore.h> 37 + #include <linux/mutex.h> 38 + 38 39 #include <asm/uaccess.h> 39 40 40 41 struct qcam_device { ··· 48 47 int contrast, brightness, whitebal; 49 48 int top, left; 50 49 unsigned int bidirectional; 51 - struct semaphore lock; 50 + struct mutex lock; 52 51 }; 53 52 54 53 /* cameras maximum */ ··· 582 581 qcam->contrast = p->contrast>>8; 583 582 qcam->whitebal = p->whiteness>>8; 584 583 585 - down(&qcam->lock); 584 + mutex_lock(&qcam->lock); 586 585 parport_claim_or_block(qcam->pdev); 587 586 qc_setup(qcam); 588 587 parport_release(qcam->pdev); 589 - up(&qcam->lock); 588 + mutex_unlock(&qcam->lock); 590 589 return 0; 591 590 } 592 591 case VIDIOCSWIN: ··· 629 628 #endif 630 629 /* Ok we figured out what to use from our 631 630 wide choice */ 632 - down(&qcam->lock); 631 + mutex_lock(&qcam->lock); 633 632 parport_claim_or_block(qcam->pdev); 634 633 qc_setup(qcam); 635 634 parport_release(qcam->pdev); 636 - up(&qcam->lock); 635 + mutex_unlock(&qcam->lock); 637 636 return 0; 638 637 } 639 638 case VIDIOCGWIN: ··· 673 672 struct qcam_device *qcam=(struct qcam_device *)v; 674 673 int len; 675 674 676 - down(&qcam->lock); 675 + mutex_lock(&qcam->lock); 677 676 parport_claim_or_block(qcam->pdev); 678 677 /* Probably should have a semaphore against multiple users */ 679 678 len = qc_capture(qcam, buf,count); 680 679 parport_release(qcam->pdev); 681 - up(&qcam->lock); 680 + mutex_unlock(&qcam->lock); 682 681 return len; 683 682 } 684 683 ··· 728 727 729 728 memcpy(&q->vdev, &qcam_template, sizeof(qcam_template)); 730 729 731 - init_MUTEX(&q->lock); 730 + mutex_init(&q->lock); 732 731 q->width = q->ccd_width = 320; 733 732 q->height = q->ccd_height = 240; 734 733 q->mode = QC_MILLIONS | QC_DECIMATION_1;
+51 -51
drivers/media/video/cpia.c
··· 39 39 #include <linux/pagemap.h> 40 40 #include <linux/delay.h> 41 41 #include <asm/io.h> 42 - #include <asm/semaphore.h> 42 + #include <linux/mutex.h> 43 43 44 44 #ifdef CONFIG_KMOD 45 45 #include <linux/kmod.h> ··· 622 622 623 623 buffer = page; 624 624 625 - if (down_interruptible(&cam->param_lock)) 625 + if (mutex_lock_interruptible(&cam->param_lock)) 626 626 return -ERESTARTSYS; 627 627 628 628 /* ··· 1350 1350 } else 1351 1351 DBG("error: %d\n", retval); 1352 1352 1353 - up(&cam->param_lock); 1353 + mutex_unlock(&cam->param_lock); 1354 1354 1355 1355 out: 1356 1356 free_page((unsigned long)page); ··· 1664 1664 case CPIA_COMMAND_GetColourParams: 1665 1665 case CPIA_COMMAND_GetColourBalance: 1666 1666 case CPIA_COMMAND_GetExposure: 1667 - down(&cam->param_lock); 1667 + mutex_lock(&cam->param_lock); 1668 1668 datasize=8; 1669 1669 break; 1670 1670 case CPIA_COMMAND_ReadMCPorts: ··· 1691 1691 if (command == CPIA_COMMAND_GetColourParams || 1692 1692 command == CPIA_COMMAND_GetColourBalance || 1693 1693 command == CPIA_COMMAND_GetExposure) 1694 - up(&cam->param_lock); 1694 + mutex_unlock(&cam->param_lock); 1695 1695 } else { 1696 1696 switch(command) { 1697 1697 case CPIA_COMMAND_GetCPIAVersion: ··· 1726 1726 cam->params.colourParams.brightness = data[0]; 1727 1727 cam->params.colourParams.contrast = data[1]; 1728 1728 cam->params.colourParams.saturation = data[2]; 1729 - up(&cam->param_lock); 1729 + mutex_unlock(&cam->param_lock); 1730 1730 break; 1731 1731 case CPIA_COMMAND_GetColourBalance: 1732 1732 cam->params.colourBalance.redGain = data[0]; 1733 1733 cam->params.colourBalance.greenGain = data[1]; 1734 1734 cam->params.colourBalance.blueGain = data[2]; 1735 - up(&cam->param_lock); 1735 + mutex_unlock(&cam->param_lock); 1736 1736 break; 1737 1737 case CPIA_COMMAND_GetExposure: 1738 1738 cam->params.exposure.gain = data[0]; ··· 1743 1743 cam->params.exposure.green1Comp = data[5]; 1744 1744 cam->params.exposure.green2Comp = data[6]; 1745 1745 cam->params.exposure.blueComp = data[7]; 1746 - up(&cam->param_lock); 1746 + mutex_unlock(&cam->param_lock); 1747 1747 break; 1748 1748 1749 1749 case CPIA_COMMAND_ReadMCPorts: ··· 2059 2059 int rows, cols, linesize, subsample_422; 2060 2060 2061 2061 /* make sure params don't change while we are decoding */ 2062 - down(&cam->param_lock); 2062 + mutex_lock(&cam->param_lock); 2063 2063 2064 2064 obuf = cam->decompressed_frame.data; 2065 2065 end_obuf = obuf+CPIA_MAX_FRAME_SIZE; ··· 2069 2069 2070 2070 if ((ibuf[0] != MAGIC_0) || (ibuf[1] != MAGIC_1)) { 2071 2071 LOG("header not found\n"); 2072 - up(&cam->param_lock); 2072 + mutex_unlock(&cam->param_lock); 2073 2073 return -1; 2074 2074 } 2075 2075 2076 2076 if ((ibuf[16] != VIDEOSIZE_QCIF) && (ibuf[16] != VIDEOSIZE_CIF)) { 2077 2077 LOG("wrong video size\n"); 2078 - up(&cam->param_lock); 2078 + mutex_unlock(&cam->param_lock); 2079 2079 return -1; 2080 2080 } 2081 2081 2082 2082 if (ibuf[17] != SUBSAMPLE_420 && ibuf[17] != SUBSAMPLE_422) { 2083 2083 LOG("illegal subtype %d\n",ibuf[17]); 2084 - up(&cam->param_lock); 2084 + mutex_unlock(&cam->param_lock); 2085 2085 return -1; 2086 2086 } 2087 2087 subsample_422 = ibuf[17] == SUBSAMPLE_422; 2088 2088 2089 2089 if (ibuf[18] != YUVORDER_YUYV && ibuf[18] != YUVORDER_UYVY) { 2090 2090 LOG("illegal yuvorder %d\n",ibuf[18]); 2091 - up(&cam->param_lock); 2091 + mutex_unlock(&cam->param_lock); 2092 2092 return -1; 2093 2093 } 2094 2094 in_uyvy = ibuf[18] == YUVORDER_UYVY; ··· 2098 2098 (ibuf[26] != cam->params.roi.rowStart) || 2099 2099 (ibuf[27] != cam->params.roi.rowEnd)) { 2100 2100 LOG("ROI mismatch\n"); 2101 - up(&cam->param_lock); 2101 + mutex_unlock(&cam->param_lock); 2102 2102 return -1; 2103 2103 } 2104 2104 cols = 8*(ibuf[25] - ibuf[24]); ··· 2107 2107 2108 2108 if ((ibuf[28] != NOT_COMPRESSED) && (ibuf[28] != COMPRESSED)) { 2109 2109 LOG("illegal compression %d\n",ibuf[28]); 2110 - up(&cam->param_lock); 2110 + mutex_unlock(&cam->param_lock); 2111 2111 return -1; 2112 2112 } 2113 2113 compressed = (ibuf[28] == COMPRESSED); 2114 2114 2115 2115 if (ibuf[29] != NO_DECIMATION && ibuf[29] != DECIMATION_ENAB) { 2116 2116 LOG("illegal decimation %d\n",ibuf[29]); 2117 - up(&cam->param_lock); 2117 + mutex_unlock(&cam->param_lock); 2118 2118 return -1; 2119 2119 } 2120 2120 decimation = (ibuf[29] == DECIMATION_ENAB); ··· 2130 2130 cam->params.status.vpStatus = ibuf[38]; 2131 2131 cam->params.status.errorCode = ibuf[39]; 2132 2132 cam->fps = ibuf[41]; 2133 - up(&cam->param_lock); 2133 + mutex_unlock(&cam->param_lock); 2134 2134 2135 2135 linesize = skipcount(cols, out_fmt); 2136 2136 ibuf += FRAME_HEADER_SIZE; ··· 2271 2271 /* update various camera modes and settings */ 2272 2272 static void dispatch_commands(struct cam_data *cam) 2273 2273 { 2274 - down(&cam->param_lock); 2274 + mutex_lock(&cam->param_lock); 2275 2275 if (cam->cmd_queue==COMMAND_NONE) { 2276 - up(&cam->param_lock); 2276 + mutex_unlock(&cam->param_lock); 2277 2277 return; 2278 2278 } 2279 2279 DEB_BYTE(cam->cmd_queue); ··· 2415 2415 } 2416 2416 2417 2417 cam->cmd_queue = COMMAND_NONE; 2418 - up(&cam->param_lock); 2418 + mutex_unlock(&cam->param_lock); 2419 2419 return; 2420 2420 } 2421 2421 ··· 2562 2562 gain = data[2]; 2563 2563 coarseL = data[3]; 2564 2564 2565 - down(&cam->param_lock); 2565 + mutex_lock(&cam->param_lock); 2566 2566 light_exp = cam->params.colourParams.brightness + 2567 2567 TC - 50 + EXP_ACC_LIGHT; 2568 2568 if(light_exp > 255) ··· 2762 2762 LOG("Automatically increasing sensor_fps\n"); 2763 2763 } 2764 2764 } 2765 - up(&cam->param_lock); 2765 + mutex_unlock(&cam->param_lock); 2766 2766 } 2767 2767 2768 2768 /*-----------------------------------------------------------------*/ ··· 2778 2778 int cam_exposure, old_exp; 2779 2779 if(!FIRMWARE_VERSION(1,2)) 2780 2780 return; 2781 - down(&cam->param_lock); 2781 + mutex_lock(&cam->param_lock); 2782 2782 if(cam->params.flickerControl.flickerMode == 0 || 2783 2783 cam->raw_image[39] == 0) { 2784 - up(&cam->param_lock); 2784 + mutex_unlock(&cam->param_lock); 2785 2785 return; 2786 2786 } 2787 2787 cam_exposure = cam->raw_image[39]*2; ··· 2810 2810 cam->exposure_status = EXPOSURE_NORMAL; 2811 2811 2812 2812 } 2813 - up(&cam->param_lock); 2813 + mutex_unlock(&cam->param_lock); 2814 2814 } 2815 2815 #undef FIRMWARE_VERSION 2816 2816 ··· 3186 3186 if (!try_module_get(cam->ops->owner)) 3187 3187 return -ENODEV; 3188 3188 3189 - down(&cam->busy_lock); 3189 + mutex_lock(&cam->busy_lock); 3190 3190 err = -ENOMEM; 3191 3191 if (!cam->raw_image) { 3192 3192 cam->raw_image = rvmalloc(CPIA_MAX_IMAGE_SIZE); ··· 3227 3227 3228 3228 ++cam->open_count; 3229 3229 file->private_data = dev; 3230 - up(&cam->busy_lock); 3230 + mutex_unlock(&cam->busy_lock); 3231 3231 return 0; 3232 3232 3233 3233 oops: ··· 3239 3239 rvfree(cam->raw_image, CPIA_MAX_IMAGE_SIZE); 3240 3240 cam->raw_image = NULL; 3241 3241 } 3242 - up(&cam->busy_lock); 3242 + mutex_unlock(&cam->busy_lock); 3243 3243 put_cam(cam->ops); 3244 3244 return err; 3245 3245 } ··· 3303 3303 int err; 3304 3304 3305 3305 /* make this _really_ smp and multithread-safe */ 3306 - if (down_interruptible(&cam->busy_lock)) 3306 + if (mutex_lock_interruptible(&cam->busy_lock)) 3307 3307 return -EINTR; 3308 3308 3309 3309 if (!buf) { 3310 3310 DBG("buf NULL\n"); 3311 - up(&cam->busy_lock); 3311 + mutex_unlock(&cam->busy_lock); 3312 3312 return -EINVAL; 3313 3313 } 3314 3314 3315 3315 if (!count) { 3316 3316 DBG("count 0\n"); 3317 - up(&cam->busy_lock); 3317 + mutex_unlock(&cam->busy_lock); 3318 3318 return 0; 3319 3319 } 3320 3320 3321 3321 if (!cam->ops) { 3322 3322 DBG("ops NULL\n"); 3323 - up(&cam->busy_lock); 3323 + mutex_unlock(&cam->busy_lock); 3324 3324 return -ENODEV; 3325 3325 } 3326 3326 ··· 3329 3329 cam->mmap_kludge=0; 3330 3330 if((err = fetch_frame(cam)) != 0) { 3331 3331 DBG("ERROR from fetch_frame: %d\n", err); 3332 - up(&cam->busy_lock); 3332 + mutex_unlock(&cam->busy_lock); 3333 3333 return err; 3334 3334 } 3335 3335 cam->decompressed_frame.state = FRAME_UNUSED; ··· 3338 3338 if (cam->decompressed_frame.count > count) { 3339 3339 DBG("count wrong: %d, %lu\n", cam->decompressed_frame.count, 3340 3340 (unsigned long) count); 3341 - up(&cam->busy_lock); 3341 + mutex_unlock(&cam->busy_lock); 3342 3342 return -EFAULT; 3343 3343 } 3344 3344 if (copy_to_user(buf, cam->decompressed_frame.data, 3345 3345 cam->decompressed_frame.count)) { 3346 3346 DBG("copy_to_user failed\n"); 3347 - up(&cam->busy_lock); 3347 + mutex_unlock(&cam->busy_lock); 3348 3348 return -EFAULT; 3349 3349 } 3350 3350 3351 - up(&cam->busy_lock); 3351 + mutex_unlock(&cam->busy_lock); 3352 3352 return cam->decompressed_frame.count; 3353 3353 } 3354 3354 ··· 3363 3363 return -ENODEV; 3364 3364 3365 3365 /* make this _really_ smp-safe */ 3366 - if (down_interruptible(&cam->busy_lock)) 3366 + if (mutex_lock_interruptible(&cam->busy_lock)) 3367 3367 return -EINTR; 3368 3368 3369 3369 //DBG("cpia_ioctl: %u\n", ioctlnr); ··· 3439 3439 break; 3440 3440 } 3441 3441 3442 - down(&cam->param_lock); 3442 + mutex_lock(&cam->param_lock); 3443 3443 /* brightness, colour, contrast need no check 0-65535 */ 3444 3444 cam->vp = *vp; 3445 3445 /* update cam->params.colourParams */ ··· 3466 3466 3467 3467 /* queue command to update camera */ 3468 3468 cam->cmd_queue |= COMMAND_SETCOLOURPARAMS; 3469 - up(&cam->param_lock); 3469 + mutex_unlock(&cam->param_lock); 3470 3470 DBG("VIDIOCSPICT: %d / %d // %d / %d / %d / %d\n", 3471 3471 vp->depth, vp->palette, vp->brightness, vp->hue, vp->colour, 3472 3472 vp->contrast); ··· 3501 3501 /* we set the video window to something smaller or equal to what 3502 3502 * is requested by the user??? 3503 3503 */ 3504 - down(&cam->param_lock); 3504 + mutex_lock(&cam->param_lock); 3505 3505 if (vw->width != cam->vw.width || vw->height != cam->vw.height) { 3506 3506 int video_size = match_videosize(vw->width, vw->height); 3507 3507 3508 3508 if (video_size < 0) { 3509 3509 retval = -EINVAL; 3510 - up(&cam->param_lock); 3510 + mutex_unlock(&cam->param_lock); 3511 3511 break; 3512 3512 } 3513 3513 cam->video_size = video_size; ··· 3520 3520 cam->cmd_queue |= COMMAND_SETFORMAT; 3521 3521 } 3522 3522 3523 - up(&cam->param_lock); 3523 + mutex_unlock(&cam->param_lock); 3524 3524 3525 3525 /* setformat ignored by camera during streaming, 3526 3526 * so stop/dispatch/start */ ··· 3682 3682 3683 3683 DBG("%d,%d/%dx%d\n", vc->x,vc->y,vc->width, vc->height); 3684 3684 3685 - down(&cam->param_lock); 3685 + mutex_lock(&cam->param_lock); 3686 3686 3687 3687 cam->vc.x = vc->x; 3688 3688 cam->vc.y = vc->y; ··· 3692 3692 set_vw_size(cam); 3693 3693 cam->cmd_queue |= COMMAND_SETFORMAT; 3694 3694 3695 - up(&cam->param_lock); 3695 + mutex_unlock(&cam->param_lock); 3696 3696 3697 3697 /* setformat ignored by camera during streaming, 3698 3698 * so stop/dispatch/start */ ··· 3736 3736 break; 3737 3737 } 3738 3738 3739 - up(&cam->busy_lock); 3739 + mutex_unlock(&cam->busy_lock); 3740 3740 return retval; 3741 3741 } 3742 3742 ··· 3769 3769 return -ENODEV; 3770 3770 3771 3771 /* make this _really_ smp-safe */ 3772 - if (down_interruptible(&cam->busy_lock)) 3772 + if (mutex_lock_interruptible(&cam->busy_lock)) 3773 3773 return -EINTR; 3774 3774 3775 3775 if (!cam->frame_buf) { /* we do lazy allocation */ 3776 3776 if ((retval = allocate_frame_buf(cam))) { 3777 - up(&cam->busy_lock); 3777 + mutex_unlock(&cam->busy_lock); 3778 3778 return retval; 3779 3779 } 3780 3780 } ··· 3783 3783 while (size > 0) { 3784 3784 page = vmalloc_to_pfn((void *)pos); 3785 3785 if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) { 3786 - up(&cam->busy_lock); 3786 + mutex_unlock(&cam->busy_lock); 3787 3787 return -EAGAIN; 3788 3788 } 3789 3789 start += PAGE_SIZE; ··· 3795 3795 } 3796 3796 3797 3797 DBG("cpia_mmap: %ld\n", size); 3798 - up(&cam->busy_lock); 3798 + mutex_unlock(&cam->busy_lock); 3799 3799 3800 3800 return 0; 3801 3801 } ··· 3936 3936 memset(cam, 0, sizeof(struct cam_data)); 3937 3937 3938 3938 cam->ops = ops; 3939 - init_MUTEX(&cam->param_lock); 3940 - init_MUTEX(&cam->busy_lock); 3939 + mutex_init(&cam->param_lock); 3940 + mutex_init(&cam->busy_lock); 3941 3941 3942 3942 reset_camera_struct(cam); 3943 3943
+3 -2
drivers/media/video/cpia.h
··· 47 47 #include <linux/videodev.h> 48 48 #include <linux/list.h> 49 49 #include <linux/smp_lock.h> 50 + #include <linux/mutex.h> 50 51 51 52 struct cpia_camera_ops 52 53 { ··· 247 246 struct cam_data { 248 247 struct list_head cam_data_list; 249 248 250 - struct semaphore busy_lock; /* guard against SMP multithreading */ 249 + struct mutex busy_lock; /* guard against SMP multithreading */ 251 250 struct cpia_camera_ops *ops; /* lowlevel driver operations */ 252 251 void *lowlevel_data; /* private data for lowlevel driver */ 253 252 u8 *raw_image; /* buffer for raw image data */ ··· 262 261 u8 mainsFreq; /* for flicker control */ 263 262 264 263 /* proc interface */ 265 - struct semaphore param_lock; /* params lock for this camera */ 264 + struct mutex param_lock; /* params lock for this camera */ 266 265 struct cam_params params; /* camera settings */ 267 266 struct proc_dir_entry *proc_entry; /* /proc/cpia/videoX */ 268 267
+1 -1
drivers/media/video/cx88/cx88-core.c
··· 1061 1061 core->pci_bus = pci->bus->number; 1062 1062 core->pci_slot = PCI_SLOT(pci->devfn); 1063 1063 core->pci_irqmask = 0x00fc00; 1064 - init_MUTEX(&core->lock); 1064 + mutex_init(&core->lock); 1065 1065 1066 1066 core->nr = cx88_devcount++; 1067 1067 sprintf(core->name,"cx88[%d]",core->nr);
+13 -13
drivers/media/video/cx88/cx88-video.c
··· 336 336 return 1; 337 337 338 338 /* is it free? */ 339 - down(&core->lock); 339 + mutex_lock(&core->lock); 340 340 if (dev->resources & bit) { 341 341 /* no, someone else uses it */ 342 - up(&core->lock); 342 + mutex_unlock(&core->lock); 343 343 return 0; 344 344 } 345 345 /* it's free, grab it */ 346 346 fh->resources |= bit; 347 347 dev->resources |= bit; 348 348 dprintk(1,"res: get %d\n",bit); 349 - up(&core->lock); 349 + mutex_unlock(&core->lock); 350 350 return 1; 351 351 } 352 352 ··· 369 369 if ((fh->resources & bits) != bits) 370 370 BUG(); 371 371 372 - down(&core->lock); 372 + mutex_lock(&core->lock); 373 373 fh->resources &= ~bits; 374 374 dev->resources &= ~bits; 375 375 dprintk(1,"res: put %d\n",bits); 376 - up(&core->lock); 376 + mutex_unlock(&core->lock); 377 377 } 378 378 379 379 /* ------------------------------------------------------------------ */ ··· 1291 1291 if (i == ARRAY_SIZE(tvnorms)) 1292 1292 return -EINVAL; 1293 1293 1294 - down(&core->lock); 1294 + mutex_lock(&core->lock); 1295 1295 cx88_set_tvnorm(core,&tvnorms[i]); 1296 - up(&core->lock); 1296 + mutex_unlock(&core->lock); 1297 1297 return 0; 1298 1298 } 1299 1299 ··· 1343 1343 1344 1344 if (*i >= 4) 1345 1345 return -EINVAL; 1346 - down(&core->lock); 1346 + mutex_lock(&core->lock); 1347 1347 cx88_newstation(core); 1348 1348 video_mux(core,*i); 1349 - up(&core->lock); 1349 + mutex_unlock(&core->lock); 1350 1350 return 0; 1351 1351 } 1352 1352 ··· 1438 1438 return -EINVAL; 1439 1439 if (1 == radio && f->type != V4L2_TUNER_RADIO) 1440 1440 return -EINVAL; 1441 - down(&core->lock); 1441 + mutex_lock(&core->lock); 1442 1442 core->freq = f->frequency; 1443 1443 cx88_newstation(core); 1444 1444 cx88_call_i2c_clients(core,VIDIOC_S_FREQUENCY,f); ··· 1447 1447 msleep (10); 1448 1448 cx88_set_tvaudio(core); 1449 1449 1450 - up(&core->lock); 1450 + mutex_unlock(&core->lock); 1451 1451 return 0; 1452 1452 } 1453 1453 ··· 1921 1921 pci_set_drvdata(pci_dev,dev); 1922 1922 1923 1923 /* initial device configuration */ 1924 - down(&core->lock); 1924 + mutex_lock(&core->lock); 1925 1925 cx88_set_tvnorm(core,tvnorms); 1926 1926 init_controls(core); 1927 1927 video_mux(core,0); 1928 - up(&core->lock); 1928 + mutex_unlock(&core->lock); 1929 1929 1930 1930 /* start tvaudio thread */ 1931 1931 if (core->tuner_type != TUNER_ABSENT)
+2 -2
drivers/media/video/cx88/cx88.h
··· 35 35 #include "cx88-reg.h" 36 36 37 37 #include <linux/version.h> 38 + #include <linux/mutex.h> 38 39 #define CX88_VERSION_CODE KERNEL_VERSION(0,0,5) 39 40 40 41 #ifndef TRUE ··· 310 309 /* IR remote control state */ 311 310 struct cx88_IR *ir; 312 311 313 - struct semaphore lock; 314 - 312 + struct mutex lock; 315 313 /* various v4l controls */ 316 314 u32 freq; 317 315
+53 -53
drivers/media/video/em28xx/em28xx-video.c
··· 362 362 return -EBUSY; 363 363 } 364 364 365 - init_MUTEX(&dev->fileop_lock); /* to 1 == available */ 365 + mutex_init(&dev->fileop_lock); /* to 1 == available */ 366 366 spin_lock_init(&dev->queue_lock); 367 367 init_waitqueue_head(&dev->wait_frame); 368 368 init_waitqueue_head(&dev->wait_stream); 369 369 370 - down(&dev->lock); 370 + mutex_lock(&dev->lock); 371 371 372 372 if (dev->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) { 373 373 em28xx_set_alternate(dev); ··· 404 404 405 405 dev->state |= DEV_INITIALIZED; 406 406 407 - err: 408 - up(&dev->lock); 407 + err: 408 + mutex_unlock(&dev->lock); 409 409 up_read(&em28xx_disconnect); 410 410 return errCode; 411 411 } ··· 447 447 448 448 em28xx_videodbg("users=%d\n", dev->users); 449 449 450 - down(&dev->lock); 450 + mutex_lock(&dev->lock); 451 451 452 452 em28xx_uninit_isoc(dev); 453 453 ··· 456 456 /* the device is already disconnect, free the remaining resources */ 457 457 if (dev->state & DEV_DISCONNECTED) { 458 458 em28xx_release_resources(dev); 459 - up(&dev->lock); 459 + mutex_unlock(&dev->lock); 460 460 kfree(dev); 461 461 return 0; 462 462 } ··· 472 472 473 473 dev->users--; 474 474 wake_up_interruptible_nr(&dev->open, 1); 475 - up(&dev->lock); 475 + mutex_unlock(&dev->lock); 476 476 return 0; 477 477 } 478 478 ··· 496 496 em28xx_videodbg("V4L2_BUF_TYPE_VBI_CAPTURE is set\n"); 497 497 em28xx_videodbg("not supported yet! ...\n"); 498 498 if (copy_to_user(buf, "", 1)) { 499 - up(&dev->fileop_lock); 499 + mutex_unlock(&dev->fileop_lock); 500 500 return -EFAULT; 501 501 } 502 502 return (1); ··· 505 505 em28xx_videodbg("V4L2_BUF_TYPE_SLICED_VBI_CAPTURE is set\n"); 506 506 em28xx_videodbg("not supported yet! ...\n"); 507 507 if (copy_to_user(buf, "", 1)) { 508 - up(&dev->fileop_lock); 508 + mutex_unlock(&dev->fileop_lock); 509 509 return -EFAULT; 510 510 } 511 511 return (1); 512 512 } 513 513 514 - if (down_interruptible(&dev->fileop_lock)) 514 + if (mutex_lock_interruptible(&dev->fileop_lock)) 515 515 return -ERESTARTSYS; 516 516 517 517 if (dev->state & DEV_DISCONNECTED) { 518 518 em28xx_videodbg("device not present\n"); 519 - up(&dev->fileop_lock); 519 + mutex_unlock(&dev->fileop_lock); 520 520 return -ENODEV; 521 521 } 522 522 523 523 if (dev->state & DEV_MISCONFIGURED) { 524 524 em28xx_videodbg("device misconfigured; close and open it again\n"); 525 - up(&dev->fileop_lock); 525 + mutex_unlock(&dev->fileop_lock); 526 526 return -EIO; 527 527 } 528 528 529 529 if (dev->io == IO_MMAP) { 530 530 em28xx_videodbg ("IO method is set to mmap; close and open" 531 531 " the device again to choose the read method\n"); 532 - up(&dev->fileop_lock); 532 + mutex_unlock(&dev->fileop_lock); 533 533 return -EINVAL; 534 534 } 535 535 536 536 if (dev->io == IO_NONE) { 537 537 if (!em28xx_request_buffers(dev, EM28XX_NUM_READ_FRAMES)) { 538 538 em28xx_errdev("read failed, not enough memory\n"); 539 - up(&dev->fileop_lock); 539 + mutex_unlock(&dev->fileop_lock); 540 540 return -ENOMEM; 541 541 } 542 542 dev->io = IO_READ; ··· 545 545 } 546 546 547 547 if (!count) { 548 - up(&dev->fileop_lock); 548 + mutex_unlock(&dev->fileop_lock); 549 549 return 0; 550 550 } 551 551 552 552 if (list_empty(&dev->outqueue)) { 553 553 if (filp->f_flags & O_NONBLOCK) { 554 - up(&dev->fileop_lock); 554 + mutex_unlock(&dev->fileop_lock); 555 555 return -EAGAIN; 556 556 } 557 557 ret = wait_event_interruptible ··· 559 559 (!list_empty(&dev->outqueue)) || 560 560 (dev->state & DEV_DISCONNECTED)); 561 561 if (ret) { 562 - up(&dev->fileop_lock); 562 + mutex_unlock(&dev->fileop_lock); 563 563 return ret; 564 564 } 565 565 if (dev->state & DEV_DISCONNECTED) { 566 - up(&dev->fileop_lock); 566 + mutex_unlock(&dev->fileop_lock); 567 567 return -ENODEV; 568 568 } 569 569 } ··· 582 582 count = f->buf.length; 583 583 584 584 if (copy_to_user(buf, f->bufmem, count)) { 585 - up(&dev->fileop_lock); 585 + mutex_unlock(&dev->fileop_lock); 586 586 return -EFAULT; 587 587 } 588 588 *f_pos += count; 589 589 590 - up(&dev->fileop_lock); 590 + mutex_unlock(&dev->fileop_lock); 591 591 592 592 return count; 593 593 } ··· 601 601 unsigned int mask = 0; 602 602 struct em28xx *dev = filp->private_data; 603 603 604 - if (down_interruptible(&dev->fileop_lock)) 604 + if (mutex_lock_interruptible(&dev->fileop_lock)) 605 605 return POLLERR; 606 606 607 607 if (dev->state & DEV_DISCONNECTED) { ··· 627 627 if (!list_empty(&dev->outqueue)) 628 628 mask |= POLLIN | POLLRDNORM; 629 629 630 - up(&dev->fileop_lock); 630 + mutex_unlock(&dev->fileop_lock); 631 631 632 632 return mask; 633 633 } 634 634 } 635 635 636 - up(&dev->fileop_lock); 636 + mutex_unlock(&dev->fileop_lock); 637 637 return POLLERR; 638 638 } 639 639 ··· 673 673 674 674 struct em28xx *dev = filp->private_data; 675 675 676 - if (down_interruptible(&dev->fileop_lock)) 676 + if (mutex_lock_interruptible(&dev->fileop_lock)) 677 677 return -ERESTARTSYS; 678 678 679 679 if (dev->state & DEV_DISCONNECTED) { 680 680 em28xx_videodbg("mmap: device not present\n"); 681 - up(&dev->fileop_lock); 681 + mutex_unlock(&dev->fileop_lock); 682 682 return -ENODEV; 683 683 } 684 684 685 685 if (dev->state & DEV_MISCONFIGURED) { 686 686 em28xx_videodbg ("mmap: Device is misconfigured; close and " 687 687 "open it again\n"); 688 - up(&dev->fileop_lock); 688 + mutex_unlock(&dev->fileop_lock); 689 689 return -EIO; 690 690 } 691 691 692 692 if (dev->io != IO_MMAP || !(vma->vm_flags & VM_WRITE) || 693 693 size != PAGE_ALIGN(dev->frame[0].buf.length)) { 694 - up(&dev->fileop_lock); 694 + mutex_unlock(&dev->fileop_lock); 695 695 return -EINVAL; 696 696 } 697 697 ··· 701 701 } 702 702 if (i == dev->num_frames) { 703 703 em28xx_videodbg("mmap: user supplied mapping address is out of range\n"); 704 - up(&dev->fileop_lock); 704 + mutex_unlock(&dev->fileop_lock); 705 705 return -EINVAL; 706 706 } 707 707 ··· 713 713 while (size > 0) { /* size is page-aligned */ 714 714 if (vm_insert_page(vma, start, vmalloc_to_page(pos))) { 715 715 em28xx_videodbg("mmap: vm_insert_page failed\n"); 716 - up(&dev->fileop_lock); 716 + mutex_unlock(&dev->fileop_lock); 717 717 return -EAGAIN; 718 718 } 719 719 start += PAGE_SIZE; ··· 725 725 vma->vm_private_data = &dev->frame[i]; 726 726 727 727 em28xx_vm_open(vma); 728 - up(&dev->fileop_lock); 728 + mutex_unlock(&dev->fileop_lock); 729 729 return 0; 730 730 } 731 731 ··· 1125 1125 if (i == TVNORMS) 1126 1126 return -EINVAL; 1127 1127 1128 - down(&dev->lock); 1128 + mutex_lock(&dev->lock); 1129 1129 dev->tvnorm = &tvnorms[i]; 1130 1130 1131 1131 em28xx_set_norm(dev, dev->width, dev->height); ··· 1135 1135 em28xx_i2c_call_clients(dev, VIDIOC_S_STD, 1136 1136 &dev->tvnorm->id); 1137 1137 1138 - up(&dev->lock); 1138 + mutex_unlock(&dev->lock); 1139 1139 1140 1140 return 0; 1141 1141 } ··· 1189 1189 if (0 == INPUT(*index)->type) 1190 1190 return -EINVAL; 1191 1191 1192 - down(&dev->lock); 1192 + mutex_lock(&dev->lock); 1193 1193 video_mux(dev, *index); 1194 - up(&dev->lock); 1194 + mutex_unlock(&dev->lock); 1195 1195 1196 1196 return 0; 1197 1197 } ··· 1338 1338 /* t->signal = 0xffff;*/ 1339 1339 /* em28xx_i2c_call_clients(dev,VIDIOC_G_TUNER,t);*/ 1340 1340 /* No way to get signal strength? */ 1341 - down(&dev->lock); 1341 + mutex_lock(&dev->lock); 1342 1342 em28xx_i2c_call_clients(dev, DECODER_GET_STATUS, 1343 1343 &status); 1344 - up(&dev->lock); 1344 + mutex_unlock(&dev->lock); 1345 1345 t->signal = 1346 1346 (status & DECODER_STATUS_GOOD) != 0 ? 0xffff : 0; 1347 1347 ··· 1363 1363 t->rangehigh = 0xffffffffUL; /* FIXME: set correct range */ 1364 1364 /* t->signal = 0xffff; */ 1365 1365 /* No way to get signal strength? */ 1366 - down(&dev->lock); 1366 + mutex_lock(&dev->lock); 1367 1367 em28xx_i2c_call_clients(dev, DECODER_GET_STATUS, 1368 1368 &status); 1369 - up(&dev->lock); 1369 + mutex_unlock(&dev->lock); 1370 1370 t->signal = 1371 1371 (status & DECODER_STATUS_GOOD) != 0 ? 0xffff : 0; 1372 1372 ··· 1394 1394 if (V4L2_TUNER_ANALOG_TV != f->type) 1395 1395 return -EINVAL; 1396 1396 1397 - down(&dev->lock); 1397 + mutex_lock(&dev->lock); 1398 1398 dev->ctl_freq = f->frequency; 1399 1399 em28xx_i2c_call_clients(dev, VIDIOC_S_FREQUENCY, f); 1400 - up(&dev->lock); 1400 + mutex_unlock(&dev->lock); 1401 1401 return 0; 1402 1402 } 1403 1403 case VIDIOC_CROPCAP: ··· 1660 1660 int ret = 0; 1661 1661 struct em28xx *dev = filp->private_data; 1662 1662 1663 - if (down_interruptible(&dev->fileop_lock)) 1663 + if (mutex_lock_interruptible(&dev->fileop_lock)) 1664 1664 return -ERESTARTSYS; 1665 1665 1666 1666 if (dev->state & DEV_DISCONNECTED) { 1667 1667 em28xx_errdev("v4l2 ioctl: device not present\n"); 1668 - up(&dev->fileop_lock); 1668 + mutex_unlock(&dev->fileop_lock); 1669 1669 return -ENODEV; 1670 1670 } 1671 1671 1672 1672 if (dev->state & DEV_MISCONFIGURED) { 1673 1673 em28xx_errdev 1674 1674 ("v4l2 ioctl: device is misconfigured; close and open it again\n"); 1675 - up(&dev->fileop_lock); 1675 + mutex_unlock(&dev->fileop_lock); 1676 1676 return -EIO; 1677 1677 } 1678 1678 1679 1679 ret = video_usercopy(inode, filp, cmd, arg, em28xx_video_do_ioctl); 1680 1680 1681 - up(&dev->fileop_lock); 1681 + mutex_unlock(&dev->fileop_lock); 1682 1682 1683 1683 return ret; 1684 1684 } ··· 1712 1712 1713 1713 dev->udev = udev; 1714 1714 dev->model = model; 1715 - init_MUTEX(&dev->lock); 1715 + mutex_init(&dev->lock); 1716 1716 init_waitqueue_head(&dev->open); 1717 1717 1718 1718 dev->em28xx_write_regs = em28xx_write_regs; ··· 1788 1788 return -ENOMEM; 1789 1789 } 1790 1790 1791 - down(&dev->lock); 1791 + mutex_lock(&dev->lock); 1792 1792 /* register i2c bus */ 1793 1793 em28xx_i2c_register(dev); 1794 1794 ··· 1798 1798 /* configure the device */ 1799 1799 em28xx_config_i2c(dev); 1800 1800 1801 - up(&dev->lock); 1801 + mutex_unlock(&dev->lock); 1802 1802 1803 1803 errCode = em28xx_config(dev); 1804 1804 ··· 1849 1849 list_add_tail(&dev->devlist,&em28xx_devlist); 1850 1850 1851 1851 /* register v4l2 device */ 1852 - down(&dev->lock); 1852 + mutex_lock(&dev->lock); 1853 1853 if ((retval = video_register_device(dev->vdev, VFL_TYPE_GRABBER, 1854 1854 video_nr[dev->devno]))) { 1855 1855 em28xx_errdev("unable to register video device (error=%i).\n", 1856 1856 retval); 1857 - up(&dev->lock); 1857 + mutex_unlock(&dev->lock); 1858 1858 list_del(&dev->devlist); 1859 1859 video_device_release(dev->vdev); 1860 1860 kfree(dev); ··· 1865 1865 if (video_register_device(dev->vbi_dev, VFL_TYPE_VBI, 1866 1866 vbi_nr[dev->devno]) < 0) { 1867 1867 printk("unable to register vbi device\n"); 1868 - up(&dev->lock); 1868 + mutex_unlock(&dev->lock); 1869 1869 list_del(&dev->devlist); 1870 1870 video_device_release(dev->vbi_dev); 1871 1871 video_device_release(dev->vdev); ··· 1886 1886 } 1887 1887 video_mux(dev, 0); 1888 1888 1889 - up(&dev->lock); 1889 + mutex_unlock(&dev->lock); 1890 1890 1891 1891 em28xx_info("V4L2 device registered as /dev/video%d and /dev/vbi%d\n", 1892 1892 dev->vdev->minor-MINOR_VFL_TYPE_GRABBER_MIN, ··· 2035 2035 2036 2036 down_write(&em28xx_disconnect); 2037 2037 2038 - down(&dev->lock); 2038 + mutex_lock(&dev->lock); 2039 2039 2040 2040 em28xx_info("disconnecting %s\n", dev->vdev->name); 2041 2041 ··· 2057 2057 em28xx_release_resources(dev); 2058 2058 } 2059 2059 2060 - up(&dev->lock); 2060 + mutex_unlock(&dev->lock); 2061 2061 2062 2062 if (!dev->users) { 2063 2063 kfree(dev->alt_max_pkt_size);
+2 -1
drivers/media/video/em28xx/em28xx.h
··· 27 27 28 28 #include <linux/videodev.h> 29 29 #include <linux/i2c.h> 30 + #include <linux/mutex.h> 30 31 #include <media/ir-kbd-i2c.h> 31 32 32 33 /* Boards supported by driver */ ··· 261 260 enum em28xx_stream_state stream; 262 261 enum em28xx_io_method io; 263 262 /* locks */ 264 - struct semaphore lock, fileop_lock; 263 + struct mutex lock, fileop_lock; 265 264 spinlock_t queue_lock; 266 265 struct list_head inqueue, outqueue; 267 266 wait_queue_head_t open, wait_frame, wait_stream;
+56 -56
drivers/media/video/meye.c
··· 925 925 return -EINVAL; 926 926 if (p->palette != VIDEO_PALETTE_YUV422) 927 927 return -EINVAL; 928 - down(&meye.lock); 928 + mutex_lock(&meye.lock); 929 929 sonypi_camera_command(SONYPI_COMMAND_SETCAMERABRIGHTNESS, 930 930 p->brightness >> 10); 931 931 sonypi_camera_command(SONYPI_COMMAND_SETCAMERAHUE, ··· 935 935 sonypi_camera_command(SONYPI_COMMAND_SETCAMERACONTRAST, 936 936 p->contrast >> 10); 937 937 meye.picture = *p; 938 - up(&meye.lock); 938 + mutex_unlock(&meye.lock); 939 939 break; 940 940 } 941 941 ··· 946 946 if (*i < 0 || *i >= gbuffers) 947 947 return -EINVAL; 948 948 949 - down(&meye.lock); 949 + mutex_lock(&meye.lock); 950 950 951 951 switch (meye.grab_buffer[*i].state) { 952 952 953 953 case MEYE_BUF_UNUSED: 954 - up(&meye.lock); 954 + mutex_unlock(&meye.lock); 955 955 return -EINVAL; 956 956 case MEYE_BUF_USING: 957 957 if (file->f_flags & O_NONBLOCK) { 958 - up(&meye.lock); 958 + mutex_unlock(&meye.lock); 959 959 return -EAGAIN; 960 960 } 961 961 if (wait_event_interruptible(meye.proc_list, 962 962 (meye.grab_buffer[*i].state != MEYE_BUF_USING))) { 963 - up(&meye.lock); 963 + mutex_unlock(&meye.lock); 964 964 return -EINTR; 965 965 } 966 966 /* fall through */ ··· 968 968 meye.grab_buffer[*i].state = MEYE_BUF_UNUSED; 969 969 kfifo_get(meye.doneq, (unsigned char *)&unused, sizeof(int)); 970 970 } 971 - up(&meye.lock); 971 + mutex_unlock(&meye.lock); 972 972 break; 973 973 } 974 974 ··· 987 987 if (meye.grab_buffer[vm->frame].state != MEYE_BUF_UNUSED) 988 988 return -EBUSY; 989 989 990 - down(&meye.lock); 990 + mutex_lock(&meye.lock); 991 991 if (vm->width == 640 && vm->height == 480) { 992 992 if (meye.params.subsample) { 993 993 meye.params.subsample = 0; ··· 999 999 restart = 1; 1000 1000 } 1001 1001 } else { 1002 - up(&meye.lock); 1002 + mutex_unlock(&meye.lock); 1003 1003 return -EINVAL; 1004 1004 } 1005 1005 ··· 1007 1007 mchip_continuous_start(); 1008 1008 meye.grab_buffer[vm->frame].state = MEYE_BUF_USING; 1009 1009 kfifo_put(meye.grabq, (unsigned char *)&vm->frame, sizeof(int)); 1010 - up(&meye.lock); 1010 + mutex_unlock(&meye.lock); 1011 1011 break; 1012 1012 } 1013 1013 ··· 1039 1039 return -EINVAL; 1040 1040 if (jp->framerate > 31) 1041 1041 return -EINVAL; 1042 - down(&meye.lock); 1042 + mutex_lock(&meye.lock); 1043 1043 if (meye.params.subsample != jp->subsample || 1044 1044 meye.params.quality != jp->quality) 1045 1045 mchip_hic_stop(); /* need restart */ ··· 1050 1050 meye.params.agc); 1051 1051 sonypi_camera_command(SONYPI_COMMAND_SETCAMERAPICTURE, 1052 1052 meye.params.picture); 1053 - up(&meye.lock); 1053 + mutex_unlock(&meye.lock); 1054 1054 break; 1055 1055 } 1056 1056 ··· 1068 1068 } 1069 1069 if (meye.grab_buffer[*nb].state != MEYE_BUF_UNUSED) 1070 1070 return -EBUSY; 1071 - down(&meye.lock); 1071 + mutex_lock(&meye.lock); 1072 1072 if (meye.mchip_mode != MCHIP_HIC_MODE_CONT_COMP) 1073 1073 mchip_cont_compression_start(); 1074 1074 meye.grab_buffer[*nb].state = MEYE_BUF_USING; 1075 1075 kfifo_put(meye.grabq, (unsigned char *)nb, sizeof(int)); 1076 - up(&meye.lock); 1076 + mutex_unlock(&meye.lock); 1077 1077 break; 1078 1078 } 1079 1079 ··· 1084 1084 if (*i < 0 || *i >= gbuffers) 1085 1085 return -EINVAL; 1086 1086 1087 - down(&meye.lock); 1087 + mutex_lock(&meye.lock); 1088 1088 switch (meye.grab_buffer[*i].state) { 1089 1089 1090 1090 case MEYE_BUF_UNUSED: 1091 - up(&meye.lock); 1091 + mutex_unlock(&meye.lock); 1092 1092 return -EINVAL; 1093 1093 case MEYE_BUF_USING: 1094 1094 if (file->f_flags & O_NONBLOCK) { 1095 - up(&meye.lock); 1095 + mutex_unlock(&meye.lock); 1096 1096 return -EAGAIN; 1097 1097 } 1098 1098 if (wait_event_interruptible(meye.proc_list, 1099 1099 (meye.grab_buffer[*i].state != MEYE_BUF_USING))) { 1100 - up(&meye.lock); 1100 + mutex_unlock(&meye.lock); 1101 1101 return -EINTR; 1102 1102 } 1103 1103 /* fall through */ ··· 1106 1106 kfifo_get(meye.doneq, (unsigned char *)&unused, sizeof(int)); 1107 1107 } 1108 1108 *i = meye.grab_buffer[*i].size; 1109 - up(&meye.lock); 1109 + mutex_unlock(&meye.lock); 1110 1110 break; 1111 1111 } 1112 1112 ··· 1116 1116 return -EINVAL; 1117 1117 if (meye.grab_buffer[0].state != MEYE_BUF_UNUSED) 1118 1118 return -EBUSY; 1119 - down(&meye.lock); 1119 + mutex_lock(&meye.lock); 1120 1120 meye.grab_buffer[0].state = MEYE_BUF_USING; 1121 1121 mchip_take_picture(); 1122 1122 mchip_get_picture( 1123 1123 meye.grab_fbuffer, 1124 1124 mchip_hsize() * mchip_vsize() * 2); 1125 1125 meye.grab_buffer[0].state = MEYE_BUF_DONE; 1126 - up(&meye.lock); 1126 + mutex_unlock(&meye.lock); 1127 1127 break; 1128 1128 } 1129 1129 ··· 1134 1134 return -EINVAL; 1135 1135 if (meye.grab_buffer[0].state != MEYE_BUF_UNUSED) 1136 1136 return -EBUSY; 1137 - down(&meye.lock); 1137 + mutex_lock(&meye.lock); 1138 1138 meye.grab_buffer[0].state = MEYE_BUF_USING; 1139 1139 *len = -1; 1140 1140 while (*len == -1) { ··· 1142 1142 *len = mchip_compress_frame(meye.grab_fbuffer, gbufsize); 1143 1143 } 1144 1144 meye.grab_buffer[0].state = MEYE_BUF_DONE; 1145 - up(&meye.lock); 1145 + mutex_unlock(&meye.lock); 1146 1146 break; 1147 1147 } 1148 1148 ··· 1285 1285 case VIDIOC_S_CTRL: { 1286 1286 struct v4l2_control *c = arg; 1287 1287 1288 - down(&meye.lock); 1288 + mutex_lock(&meye.lock); 1289 1289 switch (c->id) { 1290 1290 case V4L2_CID_BRIGHTNESS: 1291 1291 sonypi_camera_command( ··· 1329 1329 meye.params.framerate = c->value; 1330 1330 break; 1331 1331 default: 1332 - up(&meye.lock); 1332 + mutex_unlock(&meye.lock); 1333 1333 return -EINVAL; 1334 1334 } 1335 - up(&meye.lock); 1335 + mutex_unlock(&meye.lock); 1336 1336 break; 1337 1337 } 1338 1338 1339 1339 case VIDIOC_G_CTRL: { 1340 1340 struct v4l2_control *c = arg; 1341 1341 1342 - down(&meye.lock); 1342 + mutex_lock(&meye.lock); 1343 1343 switch (c->id) { 1344 1344 case V4L2_CID_BRIGHTNESS: 1345 1345 c->value = meye.picture.brightness >> 10; ··· 1369 1369 c->value = meye.params.framerate; 1370 1370 break; 1371 1371 default: 1372 - up(&meye.lock); 1372 + mutex_unlock(&meye.lock); 1373 1373 return -EINVAL; 1374 1374 } 1375 - up(&meye.lock); 1375 + mutex_unlock(&meye.lock); 1376 1376 break; 1377 1377 } 1378 1378 ··· 1469 1469 f->fmt.pix.field != V4L2_FIELD_NONE) 1470 1470 return -EINVAL; 1471 1471 f->fmt.pix.field = V4L2_FIELD_NONE; 1472 - down(&meye.lock); 1472 + mutex_lock(&meye.lock); 1473 1473 if (f->fmt.pix.width <= 320) { 1474 1474 f->fmt.pix.width = 320; 1475 1475 f->fmt.pix.height = 240; ··· 1487 1487 meye.mchip_mode = MCHIP_HIC_MODE_CONT_COMP; 1488 1488 break; 1489 1489 } 1490 - up(&meye.lock); 1490 + mutex_unlock(&meye.lock); 1491 1491 f->fmt.pix.bytesperline = f->fmt.pix.width * 2; 1492 1492 f->fmt.pix.sizeimage = f->fmt.pix.height * 1493 1493 f->fmt.pix.bytesperline; ··· 1509 1509 /* already allocated, no modifications */ 1510 1510 break; 1511 1511 } 1512 - down(&meye.lock); 1512 + mutex_lock(&meye.lock); 1513 1513 if (meye.grab_fbuffer) { 1514 1514 for (i = 0; i < gbuffers; i++) 1515 1515 if (meye.vma_use_count[i]) { 1516 - up(&meye.lock); 1516 + mutex_unlock(&meye.lock); 1517 1517 return -EINVAL; 1518 1518 } 1519 1519 rvfree(meye.grab_fbuffer, gbuffers * gbufsize); ··· 1525 1525 if (!meye.grab_fbuffer) { 1526 1526 printk(KERN_ERR "meye: v4l framebuffer allocation" 1527 1527 " failed\n"); 1528 - up(&meye.lock); 1528 + mutex_unlock(&meye.lock); 1529 1529 return -ENOMEM; 1530 1530 } 1531 1531 for (i = 0; i < gbuffers; i++) 1532 1532 meye.vma_use_count[i] = 0; 1533 - up(&meye.lock); 1533 + mutex_unlock(&meye.lock); 1534 1534 break; 1535 1535 } 1536 1536 ··· 1569 1569 return -EINVAL; 1570 1570 if (meye.grab_buffer[buf->index].state != MEYE_BUF_UNUSED) 1571 1571 return -EINVAL; 1572 - down(&meye.lock); 1572 + mutex_lock(&meye.lock); 1573 1573 buf->flags |= V4L2_BUF_FLAG_QUEUED; 1574 1574 buf->flags &= ~V4L2_BUF_FLAG_DONE; 1575 1575 meye.grab_buffer[buf->index].state = MEYE_BUF_USING; 1576 1576 kfifo_put(meye.grabq, (unsigned char *)&buf->index, sizeof(int)); 1577 - up(&meye.lock); 1577 + mutex_unlock(&meye.lock); 1578 1578 break; 1579 1579 } 1580 1580 ··· 1587 1587 if (buf->memory != V4L2_MEMORY_MMAP) 1588 1588 return -EINVAL; 1589 1589 1590 - down(&meye.lock); 1590 + mutex_lock(&meye.lock); 1591 1591 if (kfifo_len(meye.doneq) == 0 && file->f_flags & O_NONBLOCK) { 1592 - up(&meye.lock); 1592 + mutex_unlock(&meye.lock); 1593 1593 return -EAGAIN; 1594 1594 } 1595 1595 if (wait_event_interruptible(meye.proc_list, 1596 1596 kfifo_len(meye.doneq) != 0) < 0) { 1597 - up(&meye.lock); 1597 + mutex_unlock(&meye.lock); 1598 1598 return -EINTR; 1599 1599 } 1600 1600 if (!kfifo_get(meye.doneq, (unsigned char *)&reqnr, 1601 1601 sizeof(int))) { 1602 - up(&meye.lock); 1602 + mutex_unlock(&meye.lock); 1603 1603 return -EBUSY; 1604 1604 } 1605 1605 if (meye.grab_buffer[reqnr].state != MEYE_BUF_DONE) { 1606 - up(&meye.lock); 1606 + mutex_unlock(&meye.lock); 1607 1607 return -EINVAL; 1608 1608 } 1609 1609 buf->index = reqnr; ··· 1616 1616 buf->m.offset = reqnr * gbufsize; 1617 1617 buf->length = gbufsize; 1618 1618 meye.grab_buffer[reqnr].state = MEYE_BUF_UNUSED; 1619 - up(&meye.lock); 1619 + mutex_unlock(&meye.lock); 1620 1620 break; 1621 1621 } 1622 1622 1623 1623 case VIDIOC_STREAMON: { 1624 - down(&meye.lock); 1624 + mutex_lock(&meye.lock); 1625 1625 switch (meye.mchip_mode) { 1626 1626 case MCHIP_HIC_MODE_CONT_OUT: 1627 1627 mchip_continuous_start(); ··· 1630 1630 mchip_cont_compression_start(); 1631 1631 break; 1632 1632 default: 1633 - up(&meye.lock); 1633 + mutex_unlock(&meye.lock); 1634 1634 return -EINVAL; 1635 1635 } 1636 - up(&meye.lock); 1636 + mutex_unlock(&meye.lock); 1637 1637 break; 1638 1638 } 1639 1639 1640 1640 case VIDIOC_STREAMOFF: { 1641 1641 int i; 1642 1642 1643 - down(&meye.lock); 1643 + mutex_lock(&meye.lock); 1644 1644 mchip_hic_stop(); 1645 1645 kfifo_reset(meye.grabq); 1646 1646 kfifo_reset(meye.doneq); 1647 1647 for (i = 0; i < MEYE_MAX_BUFNBRS; i++) 1648 1648 meye.grab_buffer[i].state = MEYE_BUF_UNUSED; 1649 - up(&meye.lock); 1649 + mutex_unlock(&meye.lock); 1650 1650 break; 1651 1651 } 1652 1652 ··· 1672 1672 { 1673 1673 unsigned int res = 0; 1674 1674 1675 - down(&meye.lock); 1675 + mutex_lock(&meye.lock); 1676 1676 poll_wait(file, &meye.proc_list, wait); 1677 1677 if (kfifo_len(meye.doneq)) 1678 1678 res = POLLIN | POLLRDNORM; 1679 - up(&meye.lock); 1679 + mutex_unlock(&meye.lock); 1680 1680 return res; 1681 1681 } 1682 1682 ··· 1704 1704 unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; 1705 1705 unsigned long page, pos; 1706 1706 1707 - down(&meye.lock); 1707 + mutex_lock(&meye.lock); 1708 1708 if (size > gbuffers * gbufsize) { 1709 - up(&meye.lock); 1709 + mutex_unlock(&meye.lock); 1710 1710 return -EINVAL; 1711 1711 } 1712 1712 if (!meye.grab_fbuffer) { ··· 1716 1716 meye.grab_fbuffer = rvmalloc(gbuffers*gbufsize); 1717 1717 if (!meye.grab_fbuffer) { 1718 1718 printk(KERN_ERR "meye: v4l framebuffer allocation failed\n"); 1719 - up(&meye.lock); 1719 + mutex_unlock(&meye.lock); 1720 1720 return -ENOMEM; 1721 1721 } 1722 1722 for (i = 0; i < gbuffers; i++) ··· 1727 1727 while (size > 0) { 1728 1728 page = vmalloc_to_pfn((void *)pos); 1729 1729 if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) { 1730 - up(&meye.lock); 1730 + mutex_unlock(&meye.lock); 1731 1731 return -EAGAIN; 1732 1732 } 1733 1733 start += PAGE_SIZE; ··· 1744 1744 vma->vm_private_data = (void *) (offset / gbufsize); 1745 1745 meye_vm_open(vma); 1746 1746 1747 - up(&meye.lock); 1747 + mutex_unlock(&meye.lock); 1748 1748 return 0; 1749 1749 } 1750 1750 ··· 1913 1913 goto outvideoreg; 1914 1914 } 1915 1915 1916 - init_MUTEX(&meye.lock); 1916 + mutex_init(&meye.lock); 1917 1917 init_waitqueue_head(&meye.proc_list); 1918 1918 meye.picture.depth = 16; 1919 1919 meye.picture.palette = VIDEO_PALETTE_YUV422;
+3 -1
drivers/media/video/meye.h
··· 260 260 261 261 /* private API definitions */ 262 262 #include <linux/meye.h> 263 + #include <linux/mutex.h> 264 + 263 265 264 266 /* Enable jpg software correction */ 265 267 #define MEYE_JPEG_CORRECTION 1 ··· 303 301 /* list of buffers */ 304 302 struct meye_grab_buffer grab_buffer[MEYE_MAX_BUFNBRS]; 305 303 int vma_use_count[MEYE_MAX_BUFNBRS]; /* mmap count */ 306 - struct semaphore lock; /* semaphore for open/mmap... */ 304 + struct mutex lock; /* mutex for open/mmap... */ 307 305 struct kfifo *grabq; /* queue for buffers to be grabbed */ 308 306 spinlock_t grabq_lock; /* lock protecting the queue */ 309 307 struct kfifo *doneq; /* queue for grabbed buffers */
+2 -2
drivers/media/video/mxb.c
··· 625 625 } 626 626 627 627 /* fixme: locke das setzen des inputs mit hilfe des mutexes 628 - down(&dev->lock); 628 + mutex_lock(&dev->lock); 629 629 video_mux(dev,*i); 630 - up(&dev->lock); 630 + mutex_unlock(&dev->lock); 631 631 */ 632 632 633 633 /* fixme: check if streaming capture
+4 -4
drivers/media/video/planb.c
··· 48 48 #include <asm/pgtable.h> 49 49 #include <asm/page.h> 50 50 #include <asm/irq.h> 51 - #include <asm/semaphore.h> 51 + #include <linux/mutex.h> 52 52 53 53 #include "planb.h" 54 54 #include "saa7196.h" ··· 329 329 330 330 static inline void planb_lock(struct planb *pb) 331 331 { 332 - down(&pb->lock); 332 + mutex_lock(&pb->lock); 333 333 } 334 334 335 335 static inline void planb_unlock(struct planb *pb) 336 336 { 337 - up(&pb->lock); 337 + mutex_unlock(&pb->lock); 338 338 } 339 339 340 340 /***************/ ··· 2067 2067 #endif 2068 2068 pb->tab_size = PLANB_MAXLINES + 40; 2069 2069 pb->suspend = 0; 2070 - init_MUTEX(&pb->lock); 2070 + mutex_init(&pb->lock); 2071 2071 pb->ch1_cmd = 0; 2072 2072 pb->ch2_cmd = 0; 2073 2073 pb->mask = 0;
+1 -1
drivers/media/video/planb.h
··· 174 174 int user; 175 175 unsigned int tab_size; 176 176 int maxlines; 177 - struct semaphore lock; 177 + struct mutex lock; 178 178 unsigned int irq; /* interrupt number */ 179 179 volatile unsigned int intr_mask; 180 180
+15 -13
drivers/media/video/pms.c
··· 30 30 #include <asm/io.h> 31 31 #include <linux/sched.h> 32 32 #include <linux/videodev.h> 33 + #include <linux/mutex.h> 34 + 33 35 #include <asm/uaccess.h> 34 36 35 37 ··· 46 44 struct video_picture picture; 47 45 int height; 48 46 int width; 49 - struct semaphore lock; 47 + struct mutex lock; 50 48 }; 51 49 52 50 struct i2c_info ··· 726 724 struct video_channel *v = arg; 727 725 if(v->channel<0 || v->channel>3) 728 726 return -EINVAL; 729 - down(&pd->lock); 727 + mutex_lock(&pd->lock); 730 728 pms_videosource(v->channel&1); 731 729 pms_vcrinput(v->channel>>1); 732 - up(&pd->lock); 730 + mutex_unlock(&pd->lock); 733 731 return 0; 734 732 } 735 733 case VIDIOCGTUNER: ··· 763 761 struct video_tuner *v = arg; 764 762 if(v->tuner) 765 763 return -EINVAL; 766 - down(&pd->lock); 764 + mutex_lock(&pd->lock); 767 765 switch(v->mode) 768 766 { 769 767 case VIDEO_MODE_AUTO: ··· 787 785 pms_format(2); 788 786 break; 789 787 default: 790 - up(&pd->lock); 788 + mutex_unlock(&pd->lock); 791 789 return -EINVAL; 792 790 } 793 - up(&pd->lock); 791 + mutex_unlock(&pd->lock); 794 792 return 0; 795 793 } 796 794 case VIDIOCGPICT: ··· 811 809 * Now load the card. 812 810 */ 813 811 814 - down(&pd->lock); 812 + mutex_lock(&pd->lock); 815 813 pms_brightness(p->brightness>>8); 816 814 pms_hue(p->hue>>8); 817 815 pms_colour(p->colour>>8); 818 816 pms_contrast(p->contrast>>8); 819 - up(&pd->lock); 817 + mutex_unlock(&pd->lock); 820 818 return 0; 821 819 } 822 820 case VIDIOCSWIN: ··· 832 830 return -EINVAL; 833 831 pd->width=vw->width; 834 832 pd->height=vw->height; 835 - down(&pd->lock); 833 + mutex_lock(&pd->lock); 836 834 pms_resolution(pd->width, pd->height); 837 - up(&pd->lock); /* Ok we figured out what to use from our wide choice */ 835 + mutex_unlock(&pd->lock); /* Ok we figured out what to use from our wide choice */ 838 836 return 0; 839 837 } 840 838 case VIDIOCGWIN: ··· 874 872 struct pms_device *pd=(struct pms_device *)v; 875 873 int len; 876 874 877 - down(&pd->lock); 875 + mutex_lock(&pd->lock); 878 876 len=pms_capture(pd, buf, (pd->picture.depth==16)?0:1,count); 879 - up(&pd->lock); 877 + mutex_unlock(&pd->lock); 880 878 return len; 881 879 } 882 880 ··· 1031 1029 return -ENODEV; 1032 1030 } 1033 1031 memcpy(&pms_device, &pms_template, sizeof(pms_template)); 1034 - init_MUTEX(&pms_device.lock); 1032 + mutex_init(&pms_device.lock); 1035 1033 pms_device.height=240; 1036 1034 pms_device.width=320; 1037 1035 pms_swsense(75);
+6 -4
drivers/media/video/saa5246a.c
··· 46 46 #include <linux/i2c.h> 47 47 #include <linux/videotext.h> 48 48 #include <linux/videodev.h> 49 + #include <linux/mutex.h> 50 + 49 51 #include "saa5246a.h" 50 52 51 53 MODULE_AUTHOR("Michael Geng <linux@MichaelGeng.de>"); ··· 59 57 u8 pgbuf[NUM_DAUS][VTX_VIRTUALSIZE]; 60 58 int is_searching[NUM_DAUS]; 61 59 struct i2c_client *client; 62 - struct semaphore lock; 60 + struct mutex lock; 63 61 }; 64 62 65 63 static struct video_device saa_template; /* Declared near bottom */ ··· 92 90 return -ENOMEM; 93 91 } 94 92 strlcpy(client->name, IF_NAME, I2C_NAME_SIZE); 95 - init_MUTEX(&t->lock); 93 + mutex_init(&t->lock); 96 94 97 95 /* 98 96 * Now create a video4linux device ··· 721 719 int err; 722 720 723 721 cmd = vtx_fix_command(cmd); 724 - down(&t->lock); 722 + mutex_lock(&t->lock); 725 723 err = video_usercopy(inode, file, cmd, arg, do_saa5246a_ioctl); 726 - up(&t->lock); 724 + mutex_unlock(&t->lock); 727 725 return err; 728 726 } 729 727
+6 -4
drivers/media/video/saa5249.c
··· 56 56 #include <linux/i2c.h> 57 57 #include <linux/videotext.h> 58 58 #include <linux/videodev.h> 59 + #include <linux/mutex.h> 60 + 59 61 60 62 #include <asm/io.h> 61 63 #include <asm/uaccess.h> ··· 107 105 int disp_mode; 108 106 int virtual_mode; 109 107 struct i2c_client *client; 110 - struct semaphore lock; 108 + struct mutex lock; 111 109 }; 112 110 113 111 ··· 160 158 return -ENOMEM; 161 159 } 162 160 strlcpy(client->name, IF_NAME, I2C_NAME_SIZE); 163 - init_MUTEX(&t->lock); 161 + mutex_init(&t->lock); 164 162 165 163 /* 166 164 * Now create a video4linux device ··· 621 619 int err; 622 620 623 621 cmd = vtx_fix_command(cmd); 624 - down(&t->lock); 622 + mutex_lock(&t->lock); 625 623 err = video_usercopy(inode,file,cmd,arg,do_saa5249_ioctl); 626 - up(&t->lock); 624 + mutex_unlock(&t->lock); 627 625 return err; 628 626 } 629 627
+3 -3
drivers/media/video/saa7134/saa7134-alsa.c
··· 609 609 struct saa7134_dev *dev = saa7134->dev; 610 610 int err; 611 611 612 - down(&dev->dmasound.lock); 612 + mutex_lock(&dev->dmasound.lock); 613 613 614 614 dev->dmasound.read_count = 0; 615 615 dev->dmasound.read_offset = 0; 616 616 617 - up(&dev->dmasound.lock); 617 + mutex_unlock(&dev->dmasound.lock); 618 618 619 619 pcm = kzalloc(sizeof(*pcm), GFP_KERNEL); 620 620 if (pcm == NULL) ··· 932 932 933 933 chip->irq = dev->pci->irq; 934 934 935 - init_MUTEX(&dev->dmasound.lock); 935 + mutex_init(&dev->dmasound.lock); 936 936 937 937 if ((err = snd_card_saa7134_new_mixer(chip)) < 0) 938 938 goto __nodev;
+1 -1
drivers/media/video/saa7134/saa7134-core.c
··· 613 613 614 614 saa_writel(SAA7134_IRQ1, 0); 615 615 saa_writel(SAA7134_IRQ2, 0); 616 - init_MUTEX(&dev->lock); 616 + mutex_init(&dev->lock); 617 617 spin_lock_init(&dev->slock); 618 618 619 619 saa7134_track_gpio(dev,"pre-init");
+4 -4
drivers/media/video/saa7134/saa7134-empress.c
··· 89 89 90 90 dprintk("open minor=%d\n",minor); 91 91 err = -EBUSY; 92 - if (down_trylock(&dev->empress_tsq.lock)) 92 + if (!mutex_trylock(&dev->empress_tsq.lock)) 93 93 goto done; 94 94 if (dev->empress_users) 95 95 goto done_up; ··· 99 99 err = 0; 100 100 101 101 done_up: 102 - up(&dev->empress_tsq.lock); 102 + mutex_unlock(&dev->empress_tsq.lock); 103 103 done: 104 104 return err; 105 105 } ··· 110 110 111 111 if (dev->empress_tsq.streaming) 112 112 videobuf_streamoff(&dev->empress_tsq); 113 - down(&dev->empress_tsq.lock); 113 + mutex_lock(&dev->empress_tsq.lock); 114 114 if (dev->empress_tsq.reading) 115 115 videobuf_read_stop(&dev->empress_tsq); 116 116 videobuf_mmap_free(&dev->empress_tsq); ··· 119 119 /* stop the encoder */ 120 120 ts_reset_encoder(dev); 121 121 122 - up(&dev->empress_tsq.lock); 122 + mutex_unlock(&dev->empress_tsq.lock); 123 123 return 0; 124 124 } 125 125
+20 -20
drivers/media/video/saa7134/saa7134-oss.c
··· 254 254 if (NULL == dev) 255 255 return -ENODEV; 256 256 257 - down(&dev->dmasound.lock); 257 + mutex_lock(&dev->dmasound.lock); 258 258 err = -EBUSY; 259 259 if (dev->dmasound.users_dsp) 260 260 goto fail1; ··· 270 270 if (0 != err) 271 271 goto fail2; 272 272 273 - up(&dev->dmasound.lock); 273 + mutex_unlock(&dev->dmasound.lock); 274 274 return 0; 275 275 276 276 fail2: 277 277 dev->dmasound.users_dsp--; 278 278 fail1: 279 - up(&dev->dmasound.lock); 279 + mutex_unlock(&dev->dmasound.lock); 280 280 return err; 281 281 } 282 282 ··· 284 284 { 285 285 struct saa7134_dev *dev = file->private_data; 286 286 287 - down(&dev->dmasound.lock); 287 + mutex_lock(&dev->dmasound.lock); 288 288 if (dev->dmasound.recording_on) 289 289 dsp_rec_stop(dev); 290 290 dsp_buffer_free(dev); 291 291 dev->dmasound.users_dsp--; 292 292 file->private_data = NULL; 293 - up(&dev->dmasound.lock); 293 + mutex_unlock(&dev->dmasound.lock); 294 294 return 0; 295 295 } 296 296 ··· 304 304 int err,ret = 0; 305 305 306 306 add_wait_queue(&dev->dmasound.wq, &wait); 307 - down(&dev->dmasound.lock); 307 + mutex_lock(&dev->dmasound.lock); 308 308 while (count > 0) { 309 309 /* wait for data if needed */ 310 310 if (0 == dev->dmasound.read_count) { ··· 328 328 ret = -EAGAIN; 329 329 break; 330 330 } 331 - up(&dev->dmasound.lock); 331 + mutex_unlock(&dev->dmasound.lock); 332 332 set_current_state(TASK_INTERRUPTIBLE); 333 333 if (0 == dev->dmasound.read_count) 334 334 schedule(); 335 335 set_current_state(TASK_RUNNING); 336 - down(&dev->dmasound.lock); 336 + mutex_lock(&dev->dmasound.lock); 337 337 if (signal_pending(current)) { 338 338 if (0 == ret) 339 339 ret = -EINTR; ··· 362 362 if (dev->dmasound.read_offset == dev->dmasound.bufsize) 363 363 dev->dmasound.read_offset = 0; 364 364 } 365 - up(&dev->dmasound.lock); 365 + mutex_unlock(&dev->dmasound.lock); 366 366 remove_wait_queue(&dev->dmasound.wq, &wait); 367 367 return ret; 368 368 } ··· 435 435 case SNDCTL_DSP_STEREO: 436 436 if (get_user(val, p)) 437 437 return -EFAULT; 438 - down(&dev->dmasound.lock); 438 + mutex_lock(&dev->dmasound.lock); 439 439 dev->dmasound.channels = val ? 2 : 1; 440 440 if (dev->dmasound.recording_on) { 441 441 dsp_rec_stop(dev); 442 442 dsp_rec_start(dev); 443 443 } 444 - up(&dev->dmasound.lock); 444 + mutex_unlock(&dev->dmasound.lock); 445 445 return put_user(dev->dmasound.channels-1, p); 446 446 447 447 case SNDCTL_DSP_CHANNELS: ··· 449 449 return -EFAULT; 450 450 if (val != 1 && val != 2) 451 451 return -EINVAL; 452 - down(&dev->dmasound.lock); 452 + mutex_lock(&dev->dmasound.lock); 453 453 dev->dmasound.channels = val; 454 454 if (dev->dmasound.recording_on) { 455 455 dsp_rec_stop(dev); 456 456 dsp_rec_start(dev); 457 457 } 458 - up(&dev->dmasound.lock); 458 + mutex_unlock(&dev->dmasound.lock); 459 459 /* fall through */ 460 460 case SOUND_PCM_READ_CHANNELS: 461 461 return put_user(dev->dmasound.channels, p); ··· 478 478 case AFMT_U16_BE: 479 479 case AFMT_S16_LE: 480 480 case AFMT_S16_BE: 481 - down(&dev->dmasound.lock); 481 + mutex_lock(&dev->dmasound.lock); 482 482 dev->dmasound.afmt = val; 483 483 if (dev->dmasound.recording_on) { 484 484 dsp_rec_stop(dev); 485 485 dsp_rec_start(dev); 486 486 } 487 - up(&dev->dmasound.lock); 487 + mutex_unlock(&dev->dmasound.lock); 488 488 return put_user(dev->dmasound.afmt, p); 489 489 default: 490 490 return -EINVAL; ··· 509 509 return 0; 510 510 511 511 case SNDCTL_DSP_RESET: 512 - down(&dev->dmasound.lock); 512 + mutex_lock(&dev->dmasound.lock); 513 513 if (dev->dmasound.recording_on) 514 514 dsp_rec_stop(dev); 515 - up(&dev->dmasound.lock); 515 + mutex_unlock(&dev->dmasound.lock); 516 516 return 0; 517 517 case SNDCTL_DSP_GETBLKSIZE: 518 518 return put_user(dev->dmasound.blksize, p); ··· 556 556 poll_wait(file, &dev->dmasound.wq, wait); 557 557 558 558 if (0 == dev->dmasound.read_count) { 559 - down(&dev->dmasound.lock); 559 + mutex_lock(&dev->dmasound.lock); 560 560 if (!dev->dmasound.recording_on) 561 561 dsp_rec_start(dev); 562 - up(&dev->dmasound.lock); 562 + mutex_unlock(&dev->dmasound.lock); 563 563 } else 564 564 mask |= (POLLIN | POLLRDNORM); 565 565 return mask; ··· 852 852 return -1; 853 853 854 854 /* general */ 855 - init_MUTEX(&dev->dmasound.lock); 855 + mutex_init(&dev->dmasound.lock); 856 856 init_waitqueue_head(&dev->dmasound.wq); 857 857 858 858 switch (dev->pci->device) {
+20 -20
drivers/media/video/saa7134/saa7134-video.c
··· 460 460 return 1; 461 461 462 462 /* is it free? */ 463 - down(&dev->lock); 463 + mutex_lock(&dev->lock); 464 464 if (dev->resources & bit) { 465 465 /* no, someone else uses it */ 466 - up(&dev->lock); 466 + mutex_unlock(&dev->lock); 467 467 return 0; 468 468 } 469 469 /* it's free, grab it */ 470 470 fh->resources |= bit; 471 471 dev->resources |= bit; 472 472 dprintk("res: get %d\n",bit); 473 - up(&dev->lock); 473 + mutex_unlock(&dev->lock); 474 474 return 1; 475 475 } 476 476 ··· 492 492 if ((fh->resources & bits) != bits) 493 493 BUG(); 494 494 495 - down(&dev->lock); 495 + mutex_lock(&dev->lock); 496 496 fh->resources &= ~bits; 497 497 dev->resources &= ~bits; 498 498 dprintk("res: put %d\n",bits); 499 - up(&dev->lock); 499 + mutex_unlock(&dev->lock); 500 500 } 501 501 502 502 /* ------------------------------------------------------------------ */ ··· 1340 1340 if (!list_empty(&fh->cap.stream)) 1341 1341 buf = list_entry(fh->cap.stream.next, struct videobuf_buffer, stream); 1342 1342 } else { 1343 - down(&fh->cap.lock); 1343 + mutex_lock(&fh->cap.lock); 1344 1344 if (UNSET == fh->cap.read_off) { 1345 1345 /* need to capture a new frame */ 1346 1346 if (res_locked(fh->dev,RESOURCE_VIDEO)) { 1347 - up(&fh->cap.lock); 1347 + mutex_unlock(&fh->cap.lock); 1348 1348 return POLLERR; 1349 1349 } 1350 1350 if (0 != fh->cap.ops->buf_prepare(&fh->cap,fh->cap.read_buf,fh->cap.field)) { 1351 - up(&fh->cap.lock); 1351 + mutex_unlock(&fh->cap.lock); 1352 1352 return POLLERR; 1353 1353 } 1354 1354 fh->cap.ops->buf_queue(&fh->cap,fh->cap.read_buf); 1355 1355 fh->cap.read_off = 0; 1356 1356 } 1357 - up(&fh->cap.lock); 1357 + mutex_unlock(&fh->cap.lock); 1358 1358 buf = fh->cap.read_buf; 1359 1359 } 1360 1360 ··· 1561 1561 if (0 != err) 1562 1562 return err; 1563 1563 1564 - down(&dev->lock); 1564 + mutex_lock(&dev->lock); 1565 1565 fh->win = f->fmt.win; 1566 1566 fh->nclips = f->fmt.win.clipcount; 1567 1567 if (fh->nclips > 8) 1568 1568 fh->nclips = 8; 1569 1569 if (copy_from_user(fh->clips,f->fmt.win.clips, 1570 1570 sizeof(struct v4l2_clip)*fh->nclips)) { 1571 - up(&dev->lock); 1571 + mutex_unlock(&dev->lock); 1572 1572 return -EFAULT; 1573 1573 } 1574 1574 ··· 1578 1578 start_preview(dev,fh); 1579 1579 spin_unlock_irqrestore(&dev->slock,flags); 1580 1580 } 1581 - up(&dev->lock); 1581 + mutex_unlock(&dev->lock); 1582 1582 return 0; 1583 1583 case V4L2_BUF_TYPE_VBI_CAPTURE: 1584 1584 saa7134_vbi_fmt(dev,f); ··· 1612 1612 return get_control(dev,arg); 1613 1613 case VIDIOC_S_CTRL: 1614 1614 { 1615 - down(&dev->lock); 1615 + mutex_lock(&dev->lock); 1616 1616 err = set_control(dev,NULL,arg); 1617 - up(&dev->lock); 1617 + mutex_unlock(&dev->lock); 1618 1618 return err; 1619 1619 } 1620 1620 /* --- input switching --------------------------------------- */ ··· 1664 1664 return -EINVAL; 1665 1665 if (NULL == card_in(dev,*i).name) 1666 1666 return -EINVAL; 1667 - down(&dev->lock); 1667 + mutex_lock(&dev->lock); 1668 1668 video_mux(dev,*i); 1669 - up(&dev->lock); 1669 + mutex_unlock(&dev->lock); 1670 1670 return 0; 1671 1671 } 1672 1672 ··· 1766 1766 if (i == TVNORMS) 1767 1767 return -EINVAL; 1768 1768 1769 - down(&dev->lock); 1769 + mutex_lock(&dev->lock); 1770 1770 if (res_check(fh, RESOURCE_OVERLAY)) { 1771 1771 spin_lock_irqsave(&dev->slock,flags); 1772 1772 stop_preview(dev,fh); ··· 1776 1776 } else 1777 1777 set_tvnorm(dev,&tvnorms[i]); 1778 1778 saa7134_tvaudio_do_scan(dev); 1779 - up(&dev->lock); 1779 + mutex_unlock(&dev->lock); 1780 1780 return 0; 1781 1781 } 1782 1782 ··· 1909 1909 return -EINVAL; 1910 1910 if (1 == fh->radio && V4L2_TUNER_RADIO != f->type) 1911 1911 return -EINVAL; 1912 - down(&dev->lock); 1912 + mutex_lock(&dev->lock); 1913 1913 dev->ctl_freq = f->frequency; 1914 1914 1915 1915 saa7134_i2c_call_clients(dev,VIDIOC_S_FREQUENCY,f); 1916 1916 1917 1917 saa7134_tvaudio_do_scan(dev); 1918 - up(&dev->lock); 1918 + mutex_unlock(&dev->lock); 1919 1919 return 0; 1920 1920 } 1921 1921
+3 -2
drivers/media/video/saa7134/saa7134.h
··· 29 29 #include <linux/input.h> 30 30 #include <linux/notifier.h> 31 31 #include <linux/delay.h> 32 + #include <linux/mutex.h> 32 33 33 34 #include <asm/io.h> 34 35 ··· 365 364 366 365 /* dmasound dsp status */ 367 366 struct saa7134_dmasound { 368 - struct semaphore lock; 367 + struct mutex lock; 369 368 int minor_mixer; 370 369 int minor_dsp; 371 370 unsigned int users_dsp; ··· 429 428 /* global device status */ 430 429 struct saa7134_dev { 431 430 struct list_head devlist; 432 - struct semaphore lock; 431 + struct mutex lock; 433 432 spinlock_t slock; 434 433 #ifdef VIDIOC_G_PRIORITY 435 434 struct v4l2_prio_state prio;
+5 -5
drivers/media/video/video-buf-dvb.c
··· 96 96 if (!demux->dmx.frontend) 97 97 return -EINVAL; 98 98 99 - down(&dvb->lock); 99 + mutex_lock(&dvb->lock); 100 100 dvb->nfeeds++; 101 101 rc = dvb->nfeeds; 102 102 ··· 110 110 } 111 111 112 112 out: 113 - up(&dvb->lock); 113 + mutex_unlock(&dvb->lock); 114 114 return rc; 115 115 } 116 116 ··· 120 120 struct videobuf_dvb *dvb = demux->priv; 121 121 int err = 0; 122 122 123 - down(&dvb->lock); 123 + mutex_lock(&dvb->lock); 124 124 dvb->nfeeds--; 125 125 if (0 == dvb->nfeeds && NULL != dvb->thread) { 126 126 // FIXME: cx8802_cancel_buffers(dev); 127 127 err = kthread_stop(dvb->thread); 128 128 dvb->thread = NULL; 129 129 } 130 - up(&dvb->lock); 130 + mutex_unlock(&dvb->lock); 131 131 return err; 132 132 } 133 133 ··· 139 139 { 140 140 int result; 141 141 142 - init_MUTEX(&dvb->lock); 142 + mutex_init(&dvb->lock); 143 143 144 144 /* register adapter */ 145 145 result = dvb_register_adapter(&dvb->adapter, dvb->name, module);
+21 -21
drivers/media/video/video-buf.c
··· 385 385 q->ops = ops; 386 386 q->priv_data = priv; 387 387 388 - init_MUTEX(&q->lock); 388 + mutex_init(&q->lock); 389 389 INIT_LIST_HEAD(&q->stream); 390 390 } 391 391 ··· 549 549 if (!list_empty(&q->stream)) 550 550 return -EBUSY; 551 551 552 - down(&q->lock); 552 + mutex_lock(&q->lock); 553 553 count = req->count; 554 554 if (count > VIDEO_MAX_FRAME) 555 555 count = VIDEO_MAX_FRAME; ··· 566 566 req->count = count; 567 567 568 568 done: 569 - up(&q->lock); 569 + mutex_unlock(&q->lock); 570 570 return retval; 571 571 } 572 572 ··· 592 592 unsigned long flags; 593 593 int retval; 594 594 595 - down(&q->lock); 595 + mutex_lock(&q->lock); 596 596 retval = -EBUSY; 597 597 if (q->reading) 598 598 goto done; ··· 652 652 retval = 0; 653 653 654 654 done: 655 - up(&q->lock); 655 + mutex_unlock(&q->lock); 656 656 return retval; 657 657 } 658 658 ··· 663 663 struct videobuf_buffer *buf; 664 664 int retval; 665 665 666 - down(&q->lock); 666 + mutex_lock(&q->lock); 667 667 retval = -EBUSY; 668 668 if (q->reading) 669 669 goto done; ··· 693 693 videobuf_status(b,buf,q->type); 694 694 695 695 done: 696 - up(&q->lock); 696 + mutex_unlock(&q->lock); 697 697 return retval; 698 698 } 699 699 ··· 704 704 unsigned long flags; 705 705 int retval; 706 706 707 - down(&q->lock); 707 + mutex_lock(&q->lock); 708 708 retval = -EBUSY; 709 709 if (q->reading) 710 710 goto done; ··· 721 721 spin_unlock_irqrestore(q->irqlock,flags); 722 722 723 723 done: 724 - up(&q->lock); 724 + mutex_unlock(&q->lock); 725 725 return retval; 726 726 } 727 727 ··· 729 729 { 730 730 int retval = -EINVAL; 731 731 732 - down(&q->lock); 732 + mutex_lock(&q->lock); 733 733 if (!q->streaming) 734 734 goto done; 735 735 videobuf_queue_cancel(q); ··· 737 737 retval = 0; 738 738 739 739 done: 740 - up(&q->lock); 740 + mutex_unlock(&q->lock); 741 741 return retval; 742 742 } 743 743 ··· 792 792 unsigned size, nbufs, bytes; 793 793 int retval; 794 794 795 - down(&q->lock); 795 + mutex_lock(&q->lock); 796 796 797 797 nbufs = 1; size = 0; 798 798 q->ops->buf_setup(q,&nbufs,&size); ··· 860 860 } 861 861 862 862 done: 863 - up(&q->lock); 863 + mutex_unlock(&q->lock); 864 864 return retval; 865 865 } 866 866 ··· 922 922 unsigned long flags; 923 923 924 924 dprintk(2,"%s\n",__FUNCTION__); 925 - down(&q->lock); 925 + mutex_lock(&q->lock); 926 926 retval = -EBUSY; 927 927 if (q->streaming) 928 928 goto done; ··· 996 996 } 997 997 998 998 done: 999 - up(&q->lock); 999 + mutex_unlock(&q->lock); 1000 1000 return retval; 1001 1001 } 1002 1002 ··· 1007 1007 struct videobuf_buffer *buf = NULL; 1008 1008 unsigned int rc = 0; 1009 1009 1010 - down(&q->lock); 1010 + mutex_lock(&q->lock); 1011 1011 if (q->streaming) { 1012 1012 if (!list_empty(&q->stream)) 1013 1013 buf = list_entry(q->stream.next, ··· 1035 1035 buf->state == STATE_ERROR) 1036 1036 rc = POLLIN|POLLRDNORM; 1037 1037 } 1038 - up(&q->lock); 1038 + mutex_unlock(&q->lock); 1039 1039 return rc; 1040 1040 } 1041 1041 ··· 1064 1064 map->count--; 1065 1065 if (0 == map->count) { 1066 1066 dprintk(1,"munmap %p q=%p\n",map,q); 1067 - down(&q->lock); 1067 + mutex_lock(&q->lock); 1068 1068 for (i = 0; i < VIDEO_MAX_FRAME; i++) { 1069 1069 if (NULL == q->bufs[i]) 1070 1070 continue; ··· 1076 1076 q->bufs[i]->baddr = 0; 1077 1077 q->ops->buf_release(q,q->bufs[i]); 1078 1078 } 1079 - up(&q->lock); 1079 + mutex_unlock(&q->lock); 1080 1080 kfree(map); 1081 1081 } 1082 1082 return; ··· 1170 1170 unsigned int first,last,size,i; 1171 1171 int retval; 1172 1172 1173 - down(&q->lock); 1173 + mutex_lock(&q->lock); 1174 1174 retval = -EINVAL; 1175 1175 if (!(vma->vm_flags & VM_WRITE)) { 1176 1176 dprintk(1,"mmap app bug: PROT_WRITE please\n"); ··· 1238 1238 retval = 0; 1239 1239 1240 1240 done: 1241 - up(&q->lock); 1241 + mutex_unlock(&q->lock); 1242 1242 return retval; 1243 1243 } 1244 1244
+3 -3
drivers/media/video/videodev.c
··· 224 224 struct video_device *vfl = video_devdata(file); 225 225 int retval = 0; 226 226 227 - down(&vfl->lock); 227 + mutex_lock(&vfl->lock); 228 228 if (vfl->users) { 229 229 retval = -EBUSY; 230 230 } else { 231 231 vfl->users++; 232 232 } 233 - up(&vfl->lock); 233 + mutex_unlock(&vfl->lock); 234 234 return retval; 235 235 } 236 236 ··· 328 328 sprintf(vfd->devfs_name, "v4l/%s%d", name_base, i - base); 329 329 devfs_mk_cdev(MKDEV(VIDEO_MAJOR, vfd->minor), 330 330 S_IFCHR | S_IRUSR | S_IWUSR, vfd->devfs_name); 331 - init_MUTEX(&vfd->lock); 331 + mutex_init(&vfd->lock); 332 332 333 333 /* sysfs class */ 334 334 memset(&vfd->class_dev, 0x00, sizeof(vfd->class_dev));
+17 -16
drivers/media/video/vino.c
··· 42 42 #include <linux/videodev.h> 43 43 #include <linux/videodev2.h> 44 44 #include <linux/video_decoder.h> 45 + #include <linux/mutex.h> 45 46 46 47 #include <asm/paccess.h> 47 48 #include <asm/io.h> ··· 246 245 struct vino_framebuffer *buffer[VINO_FRAMEBUFFER_COUNT_MAX]; 247 246 248 247 spinlock_t queue_lock; 249 - struct semaphore queue_sem; 248 + struct mutex queue_mutex; 250 249 wait_queue_head_t frame_wait_queue; 251 250 }; 252 251 ··· 284 283 /* the driver is currently processing the queue */ 285 284 int capturing; 286 285 287 - struct semaphore sem; 286 + struct mutex mutex; 288 287 spinlock_t capture_lock; 289 288 290 289 unsigned int users; ··· 1132 1131 if (q->type != VINO_MEMORY_MMAP) 1133 1132 return; 1134 1133 1135 - down(&q->queue_sem); 1134 + mutex_lock(&q->queue_mutex); 1136 1135 1137 1136 vino_queue_free_with_count(q, q->length); 1138 1137 1139 - up(&q->queue_sem); 1138 + mutex_unlock(&q->queue_mutex); 1140 1139 } 1141 1140 1142 1141 static int vino_queue_init(struct vino_framebuffer_queue *q, ··· 1160 1159 if (*length < 1) 1161 1160 return -EINVAL; 1162 1161 1163 - down(&q->queue_sem); 1162 + mutex_lock(&q->queue_mutex); 1164 1163 1165 1164 if (*length > VINO_FRAMEBUFFER_COUNT_MAX) 1166 1165 *length = VINO_FRAMEBUFFER_COUNT_MAX; ··· 1212 1211 q->magic = VINO_QUEUE_MAGIC; 1213 1212 } 1214 1213 1215 - up(&q->queue_sem); 1214 + mutex_unlock(&q->queue_mutex); 1216 1215 1217 1216 return ret; 1218 1217 } ··· 4046 4045 dprintk("open(): channel = %c\n", 4047 4046 (vcs->channel == VINO_CHANNEL_A) ? 'A' : 'B'); 4048 4047 4049 - down(&vcs->sem); 4048 + mutex_lock(&vcs->mutex); 4050 4049 4051 4050 if (vcs->users) { 4052 4051 dprintk("open(): driver busy\n"); ··· 4063 4062 vcs->users++; 4064 4063 4065 4064 out: 4066 - up(&vcs->sem); 4065 + mutex_unlock(&vcs->mutex); 4067 4066 4068 4067 dprintk("open(): %s!\n", ret ? "failed" : "complete"); 4069 4068 ··· 4076 4075 struct vino_channel_settings *vcs = video_get_drvdata(dev); 4077 4076 dprintk("close():\n"); 4078 4077 4079 - down(&vcs->sem); 4078 + mutex_lock(&vcs->mutex); 4080 4079 4081 4080 vcs->users--; 4082 4081 ··· 4088 4087 vino_queue_free(&vcs->fb_queue); 4089 4088 } 4090 4089 4091 - up(&vcs->sem); 4090 + mutex_unlock(&vcs->mutex); 4092 4091 4093 4092 return 0; 4094 4093 } ··· 4131 4130 4132 4131 // TODO: reject mmap if already mapped 4133 4132 4134 - if (down_interruptible(&vcs->sem)) 4133 + if (mutex_lock_interruptible(&vcs->mutex)) 4135 4134 return -EINTR; 4136 4135 4137 4136 if (vcs->reading) { ··· 4215 4214 vma->vm_ops = &vino_vm_ops; 4216 4215 4217 4216 out: 4218 - up(&vcs->sem); 4217 + mutex_unlock(&vcs->mutex); 4219 4218 4220 4219 return ret; 4221 4220 } ··· 4375 4374 struct vino_channel_settings *vcs = video_get_drvdata(dev); 4376 4375 int ret; 4377 4376 4378 - if (down_interruptible(&vcs->sem)) 4377 + if (mutex_lock_interruptible(&vcs->mutex)) 4379 4378 return -EINTR; 4380 4379 4381 4380 ret = video_usercopy(inode, file, cmd, arg, vino_do_ioctl); 4382 4381 4383 - up(&vcs->sem); 4382 + mutex_unlock(&vcs->mutex); 4384 4383 4385 4384 return ret; 4386 4385 } ··· 4565 4564 4566 4565 vcs->capturing = 0; 4567 4566 4568 - init_MUTEX(&vcs->sem); 4567 + mutex_init(&vcs->mutex); 4569 4568 spin_lock_init(&vcs->capture_lock); 4570 4569 4571 - init_MUTEX(&vcs->fb_queue.queue_sem); 4570 + mutex_init(&vcs->fb_queue.queue_mutex); 4572 4571 spin_lock_init(&vcs->fb_queue.queue_lock); 4573 4572 init_waitqueue_head(&vcs->fb_queue.frame_wait_queue); 4574 4573
+2 -1
include/linux/videodev2.h
··· 17 17 #include <linux/time.h> /* need struct timeval */ 18 18 #include <linux/poll.h> 19 19 #include <linux/device.h> 20 + #include <linux/mutex.h> 20 21 #endif 21 22 #include <linux/compiler.h> /* need __user */ 22 23 ··· 91 90 92 91 /* for videodev.c intenal usage -- please don't touch */ 93 92 int users; /* video_exclusive_{open|close} ... */ 94 - struct semaphore lock; /* ... helper function uses these */ 93 + struct mutex lock; /* ... helper function uses these */ 95 94 char devfs_name[64]; /* devfs */ 96 95 struct class_device class_dev; /* sysfs */ 97 96 };
+12 -9
include/media/saa7146.h
··· 11 11 #include <linux/i2c.h> /* for i2c subsystem */ 12 12 #include <asm/io.h> /* for accessing devices */ 13 13 #include <linux/stringify.h> 14 + #include <linux/mutex.h> 15 + 14 16 #include <linux/vmalloc.h> /* for vmalloc() */ 15 17 #include <linux/mm.h> /* for vmalloc_to_page() */ 16 18 ··· 114 112 115 113 /* different device locks */ 116 114 spinlock_t slock; 117 - struct semaphore lock; 115 + struct mutex lock; 118 116 119 117 unsigned char __iomem *mem; /* pointer to mapped IO memory */ 120 118 int revision; /* chip revision; needed for bug-workarounds*/ ··· 135 133 void (*vv_callback)(struct saa7146_dev *dev, unsigned long status); 136 134 137 135 /* i2c-stuff */ 138 - struct semaphore i2c_lock; 139 - u32 i2c_bitrate; 140 - struct saa7146_dma d_i2c; /* pointer to i2c memory */ 141 - wait_queue_head_t i2c_wq; 142 - int i2c_op; 136 + struct mutex i2c_lock; 137 + 138 + u32 i2c_bitrate; 139 + struct saa7146_dma d_i2c; /* pointer to i2c memory */ 140 + wait_queue_head_t i2c_wq; 141 + int i2c_op; 143 142 144 143 /* memories */ 145 - struct saa7146_dma d_rps0; 146 - struct saa7146_dma d_rps1; 144 + struct saa7146_dma d_rps0; 145 + struct saa7146_dma d_rps1; 147 146 }; 148 147 149 148 /* from saa7146_i2c.c */ ··· 153 150 154 151 /* from saa7146_core.c */ 155 152 extern struct list_head saa7146_devices; 156 - extern struct semaphore saa7146_devices_lock; 153 + extern struct mutex saa7146_devices_lock; 157 154 int saa7146_register_extension(struct saa7146_extension*); 158 155 int saa7146_unregister_extension(struct saa7146_extension*); 159 156 struct saa7146_format* format_by_fourcc(struct saa7146_dev *dev, int fourcc);
+1 -1
include/media/video-buf-dvb.h
··· 11 11 struct videobuf_queue dvbq; 12 12 13 13 /* video-buf-dvb state info */ 14 - struct semaphore lock; 14 + struct mutex lock; 15 15 struct task_struct *thread; 16 16 int nfeeds; 17 17
+1 -1
include/media/video-buf.h
··· 177 177 }; 178 178 179 179 struct videobuf_queue { 180 - struct semaphore lock; 180 + struct mutex lock; 181 181 spinlock_t *irqlock; 182 182 struct pci_dev *pci; 183 183