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

Merge master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb

* master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb:
V4L/DVB (3568k): zoran: Use i2c_master_send when possible
V4L/DVB (3568j): adv7175: Drop unused encoder dump command
V4L/DVB (3568i): adv7175: Drop unused register cache
V4L/DVB (3568h): cpia: correct email address
V4L/DVB (3568g): sem2mutex: zoran
V4L/DVB (3568f): saa7110: Fix array overrun
V4L/DVB (3568e): bt856: Spare memory
V4L/DVB (3568d): saa7111.c fix
V4L/DVB (3568c): zoran: Init cleanups
V4L/DVB (3568b): saa7111: Prevent array overrun
V4L/DVB (3568a): saa7114: Fix i2c block write

+200 -263
+7 -10
drivers/media/video/adv7170.c
··· 124 124 if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { 125 125 /* do raw I2C, not smbus compatible */ 126 126 struct adv7170 *encoder = i2c_get_clientdata(client); 127 - struct i2c_msg msg; 128 127 u8 block_data[32]; 128 + int block_len; 129 129 130 - msg.addr = client->addr; 131 - msg.flags = 0; 132 130 while (len >= 2) { 133 - msg.buf = (char *) block_data; 134 - msg.len = 0; 135 - block_data[msg.len++] = reg = data[0]; 131 + block_len = 0; 132 + block_data[block_len++] = reg = data[0]; 136 133 do { 137 - block_data[msg.len++] = 134 + block_data[block_len++] = 138 135 encoder->reg[reg++] = data[1]; 139 136 len -= 2; 140 137 data += 2; 141 138 } while (len >= 2 && data[0] == reg && 142 - msg.len < 32); 143 - if ((ret = i2c_transfer(client->adapter, 144 - &msg, 1)) < 0) 139 + block_len < 32); 140 + if ((ret = i2c_master_send(client, block_data, 141 + block_len)) < 0) 145 142 break; 146 143 } 147 144 } else {
+8 -43
drivers/media/video/adv7175.c
··· 67 67 /* ----------------------------------------------------------------------- */ 68 68 69 69 struct adv7175 { 70 - unsigned char reg[128]; 71 - 72 70 int norm; 73 71 int input; 74 72 int enable; ··· 92 94 u8 reg, 93 95 u8 value) 94 96 { 95 - struct adv7175 *encoder = i2c_get_clientdata(client); 96 - 97 - encoder->reg[reg] = value; 98 97 return i2c_smbus_write_byte_data(client, reg, value); 99 98 } 100 99 ··· 114 119 * the adapter understands raw I2C */ 115 120 if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { 116 121 /* do raw I2C, not smbus compatible */ 117 - struct adv7175 *encoder = i2c_get_clientdata(client); 118 - struct i2c_msg msg; 119 122 u8 block_data[32]; 123 + int block_len; 120 124 121 - msg.addr = client->addr; 122 - msg.flags = 0; 123 125 while (len >= 2) { 124 - msg.buf = (char *) block_data; 125 - msg.len = 0; 126 - block_data[msg.len++] = reg = data[0]; 126 + block_len = 0; 127 + block_data[block_len++] = reg = data[0]; 127 128 do { 128 - block_data[msg.len++] = 129 - encoder->reg[reg++] = data[1]; 129 + block_data[block_len++] = data[1]; 130 + reg++; 130 131 len -= 2; 131 132 data += 2; 132 133 } while (len >= 2 && data[0] == reg && 133 - msg.len < 32); 134 - if ((ret = i2c_transfer(client->adapter, 135 - &msg, 1)) < 0) 134 + block_len < 32); 135 + if ((ret = i2c_master_send(client, block_data, 136 + block_len)) < 0) 136 137 break; 137 138 } 138 139 } else { ··· 160 169 adv7175_write(client, 0x04, 0x55); 161 170 adv7175_write(client, 0x05, 0x25); 162 171 } 163 - 164 - #ifdef ENCODER_DUMP 165 - static void 166 - dump (struct i2c_client *client) 167 - { 168 - struct adv7175 *encoder = i2c_get_clientdata(client); 169 - int i, j; 170 - 171 - printk(KERN_INFO "%s: registry dump\n", I2C_NAME(client)); 172 - for (i = 0; i < 182 / 8; i++) { 173 - printk("%s: 0x%02x -", I2C_NAME(client), i * 8); 174 - for (j = 0; j < 8; j++) { 175 - printk(" 0x%02x", encoder->reg[i * 8 + j]); 176 - } 177 - printk("\n"); 178 - } 179 - } 180 - #endif 181 172 182 173 /* ----------------------------------------------------------------------- */ 183 174 // Output filter: S-Video Composite ··· 378 405 encoder->enable = !!*iarg; 379 406 } 380 407 break; 381 - 382 - #ifdef ENCODER_DUMP 383 - case ENCODER_DUMP: 384 - { 385 - dump(client); 386 - } 387 - break; 388 - #endif 389 408 390 409 default: 391 410 return -EINVAL;
+7 -10
drivers/media/video/bt819.c
··· 140 140 if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { 141 141 /* do raw I2C, not smbus compatible */ 142 142 struct bt819 *decoder = i2c_get_clientdata(client); 143 - struct i2c_msg msg; 144 143 u8 block_data[32]; 144 + int block_len; 145 145 146 - msg.addr = client->addr; 147 - msg.flags = 0; 148 146 while (len >= 2) { 149 - msg.buf = (char *) block_data; 150 - msg.len = 0; 151 - block_data[msg.len++] = reg = data[0]; 147 + block_len = 0; 148 + block_data[block_len++] = reg = data[0]; 152 149 do { 153 - block_data[msg.len++] = 150 + block_data[block_len++] = 154 151 decoder->reg[reg++] = data[1]; 155 152 len -= 2; 156 153 data += 2; 157 154 } while (len >= 2 && data[0] == reg && 158 - msg.len < 32); 159 - if ((ret = i2c_transfer(client->adapter, 160 - &msg, 1)) < 0) 155 + block_len < 32); 156 + if ((ret = i2c_master_send(client, block_data, 157 + block_len)) < 0) 161 158 break; 162 159 } 163 160 } else {
+5 -8
drivers/media/video/bt856.c
··· 70 70 71 71 /* ----------------------------------------------------------------------- */ 72 72 73 - #define REG_OFFSET 0xCE 73 + #define REG_OFFSET 0xDA 74 + #define BT856_NR_REG 6 74 75 75 76 struct bt856 { 76 - unsigned char reg[32]; 77 + unsigned char reg[BT856_NR_REG]; 77 78 78 79 int norm; 79 80 int enable; 80 - int bright; 81 - int contrast; 82 - int hue; 83 - int sat; 84 81 }; 85 82 86 83 #define I2C_BT856 0x88 ··· 116 119 struct bt856 *encoder = i2c_get_clientdata(client); 117 120 118 121 printk(KERN_INFO "%s: register dump:", I2C_NAME(client)); 119 - for (i = 0xd6; i <= 0xde; i += 2) 120 - printk(" %02x", encoder->reg[i - REG_OFFSET]); 122 + for (i = 0; i < BT856_NR_REG; i += 2) 123 + printk(" %02x", encoder->reg[i]); 121 124 printk("\n"); 122 125 } 123 126
+1 -1
drivers/media/video/cpia.c
··· 58 58 59 59 #ifdef MODULE 60 60 module_param(video_nr, int, 0); 61 - MODULE_AUTHOR("Scott J. Bertin <sbertin@securenym.net> & Peter Pregler <Peter_Pregler@email.com> & Johannes Erdfelt <johannes@erdfeld.com>"); 61 + MODULE_AUTHOR("Scott J. Bertin <sbertin@securenym.net> & Peter Pregler <Peter_Pregler@email.com> & Johannes Erdfelt <johannes@erdfelt.com>"); 62 62 MODULE_DESCRIPTION("V4L-driver for Vision CPiA based cameras"); 63 63 MODULE_LICENSE("GPL"); 64 64 MODULE_SUPPORTED_DEVICE("video");
+6 -13
drivers/media/video/saa7110.c
··· 107 107 * the adapter understands raw I2C */ 108 108 if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { 109 109 struct saa7110 *decoder = i2c_get_clientdata(client); 110 - struct i2c_msg msg; 111 110 112 - msg.len = len; 113 - msg.buf = (char *) data; 114 - msg.addr = client->addr; 115 - msg.flags = 0; 116 - ret = i2c_transfer(client->adapter, &msg, 1); 111 + ret = i2c_master_send(client, data, len); 117 112 118 113 /* Cache the written data */ 119 114 memcpy(decoder->reg + reg, data + 1, len - 1); ··· 426 431 break; 427 432 428 433 case DECODER_DUMP: 429 - for (v = 0; v < 0x34; v += 16) { 434 + for (v = 0; v < SAA7110_NR_REG; v += 16) { 430 435 int j; 431 - dprintk(1, KERN_INFO "%s: %03x\n", I2C_NAME(client), 436 + dprintk(1, KERN_DEBUG "%s: %02x:", I2C_NAME(client), 432 437 v); 433 - for (j = 0; j < 16; j++) { 434 - dprintk(1, KERN_INFO " %02x", 435 - decoder->reg[v + j]); 436 - } 437 - dprintk(1, KERN_INFO "\n"); 438 + for (j = 0; j < 16 && v + j < SAA7110_NR_REG; j++) 439 + dprintk(1, " %02x", decoder->reg[v + j]); 440 + dprintk(1, "\n"); 438 441 } 439 442 break; 440 443
+13 -13
drivers/media/video/saa7111.c
··· 69 69 70 70 /* ----------------------------------------------------------------------- */ 71 71 72 + #define SAA7111_NR_REG 0x18 73 + 72 74 struct saa7111 { 73 - unsigned char reg[32]; 75 + unsigned char reg[SAA7111_NR_REG]; 74 76 75 77 int norm; 76 78 int input; ··· 111 109 if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { 112 110 /* do raw I2C, not smbus compatible */ 113 111 struct saa7111 *decoder = i2c_get_clientdata(client); 114 - struct i2c_msg msg; 115 112 u8 block_data[32]; 113 + int block_len; 116 114 117 - msg.addr = client->addr; 118 - msg.flags = 0; 119 115 while (len >= 2) { 120 - msg.buf = (char *) block_data; 121 - msg.len = 0; 122 - block_data[msg.len++] = reg = data[0]; 116 + block_len = 0; 117 + block_data[block_len++] = reg = data[0]; 123 118 do { 124 - block_data[msg.len++] = 119 + block_data[block_len++] = 125 120 decoder->reg[reg++] = data[1]; 126 121 len -= 2; 127 122 data += 2; 128 123 } while (len >= 2 && data[0] == reg && 129 - msg.len < 32); 130 - if ((ret = i2c_transfer(client->adapter, 131 - &msg, 1)) < 0) 124 + block_len < 32); 125 + if ((ret = i2c_master_send(client, block_data, 126 + block_len)) < 0) 132 127 break; 133 128 } 134 129 } else { ··· 208 209 switch (cmd) { 209 210 210 211 case 0: 212 + break; 211 213 case DECODER_INIT: 212 214 { 213 215 struct video_decoder_init *init = arg; ··· 226 226 { 227 227 int i; 228 228 229 - for (i = 0; i < 32; i += 16) { 229 + for (i = 0; i < SAA7111_NR_REG; i += 16) { 230 230 int j; 231 231 232 232 printk(KERN_DEBUG "%s: %03x", I2C_NAME(client), i); 233 - for (j = 0; j < 16; ++j) { 233 + for (j = 0; j < 16 && i + j < SAA7111_NR_REG; ++j) { 234 234 printk(" %02x", 235 235 saa7111_read(client, i + j)); 236 236 }
+8 -15
drivers/media/video/saa7114.c
··· 138 138 u8 reg, 139 139 u8 value) 140 140 { 141 - /*struct saa7114 *decoder = i2c_get_clientdata(client);*/ 142 - 143 - /*decoder->reg[reg] = value;*/ 144 141 return i2c_smbus_write_byte_data(client, reg, value); 145 142 } 146 143 ··· 153 156 * the adapter understands raw I2C */ 154 157 if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { 155 158 /* do raw I2C, not smbus compatible */ 156 - /*struct saa7114 *decoder = i2c_get_clientdata(client);*/ 157 - struct i2c_msg msg; 158 159 u8 block_data[32]; 160 + int block_len; 159 161 160 - msg.addr = client->addr; 161 - msg.flags = 0; 162 162 while (len >= 2) { 163 - msg.buf = (char *) block_data; 164 - msg.len = 0; 165 - block_data[msg.len++] = reg = data[0]; 163 + block_len = 0; 164 + block_data[block_len++] = reg = data[0]; 166 165 do { 167 - block_data[msg.len++] = 168 - /*decoder->reg[reg++] =*/ data[1]; 166 + block_data[block_len++] = data[1]; 167 + reg++; 169 168 len -= 2; 170 169 data += 2; 171 170 } while (len >= 2 && data[0] == reg && 172 - msg.len < 32); 173 - if ((ret = i2c_transfer(client->adapter, 174 - &msg, 1)) < 0) 171 + block_len < 32); 172 + if ((ret = i2c_master_send(client, block_data, 173 + block_len)) < 0) 175 174 break; 176 175 } 177 176 } else {
+7 -10
drivers/media/video/saa7185.c
··· 112 112 if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { 113 113 /* do raw I2C, not smbus compatible */ 114 114 struct saa7185 *encoder = i2c_get_clientdata(client); 115 - struct i2c_msg msg; 116 115 u8 block_data[32]; 116 + int block_len; 117 117 118 - msg.addr = client->addr; 119 - msg.flags = 0; 120 118 while (len >= 2) { 121 - msg.buf = (char *) block_data; 122 - msg.len = 0; 123 - block_data[msg.len++] = reg = data[0]; 119 + block_len = 0; 120 + block_data[block_len++] = reg = data[0]; 124 121 do { 125 - block_data[msg.len++] = 122 + block_data[block_len++] = 126 123 encoder->reg[reg++] = data[1]; 127 124 len -= 2; 128 125 data += 2; 129 126 } while (len >= 2 && data[0] == reg && 130 - msg.len < 32); 131 - if ((ret = i2c_transfer(client->adapter, 132 - &msg, 1)) < 0) 127 + block_len < 32); 128 + if ((ret = i2c_master_send(client, block_data, 129 + block_len)) < 0) 133 130 break; 134 131 } 135 132 } else {
+1 -1
drivers/media/video/zoran.h
··· 395 395 struct videocodec *codec; /* video codec */ 396 396 struct videocodec *vfe; /* video front end */ 397 397 398 - struct semaphore resource_lock; /* prevent evil stuff */ 398 + struct mutex resource_lock; /* prevent evil stuff */ 399 399 400 400 u8 initialized; /* flag if zoran has been correctly initalized */ 401 401 int user; /* number of current users */
+23 -26
drivers/media/video/zoran_card.c
··· 47 47 #include <linux/interrupt.h> 48 48 #include <linux/video_decoder.h> 49 49 #include <linux/video_encoder.h> 50 + #include <linux/mutex.h> 50 51 51 52 #include <asm/io.h> 52 53 ··· 674 673 KERN_DEBUG "%s: i2c_client_register() - driver id = %d\n", 675 674 ZR_DEVNAME(zr), client->driver->id); 676 675 677 - down(&zr->resource_lock); 676 + mutex_lock(&zr->resource_lock); 678 677 679 678 if (zr->user > 0) { 680 679 /* we're already busy, so we keep a reference to ··· 695 694 } 696 695 697 696 clientreg_unlock_and_return: 698 - up(&zr->resource_lock); 697 + mutex_unlock(&zr->resource_lock); 699 698 700 699 return res; 701 700 } ··· 708 707 709 708 dprintk(2, KERN_DEBUG "%s: i2c_client_unregister()\n", ZR_DEVNAME(zr)); 710 709 711 - down(&zr->resource_lock); 710 + mutex_lock(&zr->resource_lock); 712 711 713 712 if (zr->user > 0) { 714 713 res = -EBUSY; ··· 723 722 snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "MJPEG[%d]", zr->id); 724 723 } 725 724 clientunreg_unlock_and_return: 726 - up(&zr->resource_lock); 725 + mutex_unlock(&zr->resource_lock); 727 726 return res; 728 727 } 729 728 ··· 996 995 static int __devinit 997 996 zr36057_init (struct zoran *zr) 998 997 { 999 - u32 *mem; 1000 - void *vdev; 1001 - unsigned mem_needed; 1002 - int j; 998 + int j, err; 1003 999 int two = 2; 1004 1000 int zero = 0; 1005 1001 ··· 1047 1049 1048 1050 /* allocate memory *before* doing anything to the hardware 1049 1051 * in case allocation fails */ 1050 - mem_needed = BUZ_NUM_STAT_COM * 4; 1051 - mem = kzalloc(mem_needed, GFP_KERNEL); 1052 - vdev = (void *) kmalloc(sizeof(struct video_device), GFP_KERNEL); 1053 - if (!mem || !vdev) { 1052 + zr->stat_com = kzalloc(BUZ_NUM_STAT_COM * 4, GFP_KERNEL); 1053 + zr->video_dev = kmalloc(sizeof(struct video_device), GFP_KERNEL); 1054 + if (!zr->stat_com || !zr->video_dev) { 1054 1055 dprintk(1, 1055 1056 KERN_ERR 1056 1057 "%s: zr36057_init() - kmalloc (STAT_COM) failed\n", 1057 1058 ZR_DEVNAME(zr)); 1058 - kfree(vdev); 1059 - kfree(mem); 1060 - return -ENOMEM; 1059 + err = -ENOMEM; 1060 + goto exit_free; 1061 1061 } 1062 - zr->stat_com = mem; 1063 1062 for (j = 0; j < BUZ_NUM_STAT_COM; j++) { 1064 1063 zr->stat_com[j] = 1; /* mark as unavailable to zr36057 */ 1065 1064 } ··· 1064 1069 /* 1065 1070 * Now add the template and register the device unit. 1066 1071 */ 1067 - zr->video_dev = vdev; 1068 1072 memcpy(zr->video_dev, &zoran_template, sizeof(zoran_template)); 1069 1073 strcpy(zr->video_dev->name, ZR_DEVNAME(zr)); 1070 - if (video_register_device(zr->video_dev, VFL_TYPE_GRABBER, 1071 - video_nr) < 0) { 1072 - zoran_unregister_i2c(zr); 1073 - kfree((void *) zr->stat_com); 1074 - kfree(vdev); 1075 - return -1; 1076 - } 1074 + err = video_register_device(zr->video_dev, VFL_TYPE_GRABBER, video_nr); 1075 + if (err < 0) 1076 + goto exit_unregister; 1077 1077 1078 1078 zoran_init_hardware(zr); 1079 1079 if (*zr_debug > 2) ··· 1082 1092 zr->zoran_proc = NULL; 1083 1093 zr->initialized = 1; 1084 1094 return 0; 1095 + 1096 + exit_unregister: 1097 + zoran_unregister_i2c(zr); 1098 + exit_free: 1099 + kfree(zr->stat_com); 1100 + kfree(zr->video_dev); 1101 + return err; 1085 1102 } 1086 1103 1087 1104 static void ··· 1118 1121 btwrite(0, ZR36057_SPGPPCR); 1119 1122 free_irq(zr->pci_dev->irq, zr); 1120 1123 /* unmap and free memory */ 1121 - kfree((void *) zr->stat_com); 1124 + kfree(zr->stat_com); 1122 1125 zoran_proc_cleanup(zr); 1123 1126 iounmap(zr->zr36057_mem); 1124 1127 pci_disable_device(zr->pci_dev); ··· 1203 1206 zr->id = zoran_num; 1204 1207 snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "MJPEG[%u]", zr->id); 1205 1208 spin_lock_init(&zr->spinlock); 1206 - init_MUTEX(&zr->resource_lock); 1209 + mutex_init(&zr->resource_lock); 1207 1210 if (pci_enable_device(dev)) 1208 1211 continue; 1209 1212 zr->zr36057_adr = pci_resource_start(zr->pci_dev, 0);
+114 -113
drivers/media/video/zoran_driver.c
··· 81 81 82 82 #include <linux/video_decoder.h> 83 83 #include <linux/video_encoder.h> 84 + #include <linux/mutex.h> 84 85 #include "zoran.h" 85 86 #include "zoran_device.h" 86 87 #include "zoran_card.h" ··· 1293 1292 1294 1293 /* see fs/device.c - the kernel already locks during open(), 1295 1294 * so locking ourselves only causes deadlocks */ 1296 - /*down(&zr->resource_lock);*/ 1295 + /*mutex_lock(&zr->resource_lock);*/ 1297 1296 1298 1297 if (!zr->decoder) { 1299 1298 dprintk(1, ··· 1372 1371 if (zr->user++ == 0) 1373 1372 first_open = 1; 1374 1373 1375 - /*up(&zr->resource_lock);*/ 1374 + /*mutex_unlock(&zr->resource_lock);*/ 1376 1375 1377 1376 /* default setup - TODO: look at flags */ 1378 1377 if (first_open) { /* First device open */ ··· 1402 1401 1403 1402 /* if there's no device found, we didn't obtain the lock either */ 1404 1403 if (zr) { 1405 - /*up(&zr->resource_lock);*/ 1404 + /*mutex_unlock(&zr->resource_lock);*/ 1406 1405 } 1407 1406 1408 1407 return res; ··· 1420 1419 1421 1420 /* kernel locks (fs/device.c), so don't do that ourselves 1422 1421 * (prevents deadlocks) */ 1423 - /*down(&zr->resource_lock);*/ 1422 + /*mutex_lock(&zr->resource_lock);*/ 1424 1423 1425 1424 zoran_close_end_session(file); 1426 1425 ··· 1467 1466 } 1468 1467 module_put(THIS_MODULE); 1469 1468 1470 - /*up(&zr->resource_lock);*/ 1469 + /*mutex_unlock(&zr->resource_lock);*/ 1471 1470 1472 1471 dprintk(4, KERN_INFO "%s: zoran_close() done\n", ZR_DEVNAME(zr)); 1473 1472 ··· 2028 2027 * but moving the free code outside the munmap() handler fixes 2029 2028 * all this... If someone knows why, please explain me (Ronald) 2030 2029 */ 2031 - if (!down_trylock(&zr->resource_lock)) { 2030 + if (!!mutex_trylock(&zr->resource_lock)) { 2032 2031 /* we obtained it! Let's try to free some things */ 2033 2032 if (fh->jpg_buffers.ready_to_be_freed) 2034 2033 jpg_fbuffer_free(file); 2035 2034 if (fh->v4l_buffers.ready_to_be_freed) 2036 2035 v4l_fbuffer_free(file); 2037 2036 2038 - up(&zr->resource_lock); 2037 + mutex_unlock(&zr->resource_lock); 2039 2038 } 2040 2039 2041 2040 switch (cmd) { ··· 2052 2051 2053 2052 vcap->channels = zr->card.inputs; 2054 2053 vcap->audios = 0; 2055 - down(&zr->resource_lock); 2054 + mutex_lock(&zr->resource_lock); 2056 2055 vcap->maxwidth = BUZ_MAX_WIDTH; 2057 2056 vcap->maxheight = BUZ_MAX_HEIGHT; 2058 2057 vcap->minwidth = BUZ_MIN_WIDTH; 2059 2058 vcap->minheight = BUZ_MIN_HEIGHT; 2060 - up(&zr->resource_lock); 2059 + mutex_unlock(&zr->resource_lock); 2061 2060 2062 2061 return 0; 2063 2062 } ··· 2085 2084 vchan->tuners = 0; 2086 2085 vchan->flags = 0; 2087 2086 vchan->type = VIDEO_TYPE_CAMERA; 2088 - down(&zr->resource_lock); 2087 + mutex_lock(&zr->resource_lock); 2089 2088 vchan->norm = zr->norm; 2090 - up(&zr->resource_lock); 2089 + mutex_unlock(&zr->resource_lock); 2091 2090 vchan->channel = channel; 2092 2091 2093 2092 return 0; ··· 2114 2113 "%s: VIDIOCSCHAN - channel=%d, norm=%d\n", 2115 2114 ZR_DEVNAME(zr), vchan->channel, vchan->norm); 2116 2115 2117 - down(&zr->resource_lock); 2116 + mutex_lock(&zr->resource_lock); 2118 2117 if ((res = zoran_set_input(zr, vchan->channel))) 2119 2118 goto schan_unlock_and_return; 2120 2119 if ((res = zoran_set_norm(zr, vchan->norm))) ··· 2123 2122 /* Make sure the changes come into effect */ 2124 2123 res = wait_grab_pending(zr); 2125 2124 schan_unlock_and_return: 2126 - up(&zr->resource_lock); 2125 + mutex_unlock(&zr->resource_lock); 2127 2126 return res; 2128 2127 } 2129 2128 break; ··· 2135 2134 dprintk(3, KERN_DEBUG "%s: VIDIOCGPICT\n", ZR_DEVNAME(zr)); 2136 2135 2137 2136 memset(vpict, 0, sizeof(struct video_picture)); 2138 - down(&zr->resource_lock); 2137 + mutex_lock(&zr->resource_lock); 2139 2138 vpict->hue = zr->hue; 2140 2139 vpict->brightness = zr->brightness; 2141 2140 vpict->contrast = zr->contrast; ··· 2146 2145 } else { 2147 2146 vpict->depth = 0; 2148 2147 } 2149 - up(&zr->resource_lock); 2148 + mutex_unlock(&zr->resource_lock); 2150 2149 2151 2150 return 0; 2152 2151 } ··· 2181 2180 return -EINVAL; 2182 2181 } 2183 2182 2184 - down(&zr->resource_lock); 2183 + mutex_lock(&zr->resource_lock); 2185 2184 2186 2185 decoder_command(zr, DECODER_SET_PICTURE, vpict); 2187 2186 ··· 2192 2191 2193 2192 fh->overlay_settings.format = &zoran_formats[i]; 2194 2193 2195 - up(&zr->resource_lock); 2194 + mutex_unlock(&zr->resource_lock); 2196 2195 2197 2196 return 0; 2198 2197 } ··· 2205 2204 dprintk(3, KERN_DEBUG "%s: VIDIOCCAPTURE - on=%d\n", 2206 2205 ZR_DEVNAME(zr), *on); 2207 2206 2208 - down(&zr->resource_lock); 2207 + mutex_lock(&zr->resource_lock); 2209 2208 res = setup_overlay(file, *on); 2210 - up(&zr->resource_lock); 2209 + mutex_unlock(&zr->resource_lock); 2211 2210 2212 2211 return res; 2213 2212 } ··· 2220 2219 dprintk(3, KERN_DEBUG "%s: VIDIOCGWIN\n", ZR_DEVNAME(zr)); 2221 2220 2222 2221 memset(vwin, 0, sizeof(struct video_window)); 2223 - down(&zr->resource_lock); 2222 + mutex_lock(&zr->resource_lock); 2224 2223 vwin->x = fh->overlay_settings.x; 2225 2224 vwin->y = fh->overlay_settings.y; 2226 2225 vwin->width = fh->overlay_settings.width; 2227 2226 vwin->height = fh->overlay_settings.height; 2228 - up(&zr->resource_lock); 2227 + mutex_unlock(&zr->resource_lock); 2229 2228 vwin->clipcount = 0; 2230 2229 return 0; 2231 2230 } ··· 2242 2241 ZR_DEVNAME(zr), vwin->x, vwin->y, vwin->width, 2243 2242 vwin->height, vwin->clipcount); 2244 2243 2245 - down(&zr->resource_lock); 2244 + mutex_lock(&zr->resource_lock); 2246 2245 res = 2247 2246 setup_window(file, vwin->x, vwin->y, vwin->width, 2248 2247 vwin->height, vwin->clips, 2249 2248 vwin->clipcount, NULL); 2250 - up(&zr->resource_lock); 2249 + mutex_unlock(&zr->resource_lock); 2251 2250 2252 2251 return res; 2253 2252 } ··· 2259 2258 2260 2259 dprintk(3, KERN_DEBUG "%s: VIDIOCGFBUF\n", ZR_DEVNAME(zr)); 2261 2260 2262 - down(&zr->resource_lock); 2261 + mutex_lock(&zr->resource_lock); 2263 2262 *vbuf = zr->buffer; 2264 - up(&zr->resource_lock); 2263 + mutex_unlock(&zr->resource_lock); 2265 2264 return 0; 2266 2265 } 2267 2266 break; ··· 2288 2287 return -EINVAL; 2289 2288 } 2290 2289 2291 - down(&zr->resource_lock); 2290 + mutex_lock(&zr->resource_lock); 2292 2291 res = 2293 2292 setup_fbuffer(file, vbuf->base, &zoran_formats[i], 2294 2293 vbuf->width, vbuf->height, 2295 2294 vbuf->bytesperline); 2296 - up(&zr->resource_lock); 2295 + mutex_unlock(&zr->resource_lock); 2297 2296 2298 2297 return res; 2299 2298 } ··· 2306 2305 dprintk(3, KERN_DEBUG "%s: VIDIOCSYNC - frame=%d\n", 2307 2306 ZR_DEVNAME(zr), *frame); 2308 2307 2309 - down(&zr->resource_lock); 2308 + mutex_lock(&zr->resource_lock); 2310 2309 res = v4l_sync(file, *frame); 2311 - up(&zr->resource_lock); 2310 + mutex_unlock(&zr->resource_lock); 2312 2311 if (!res) 2313 2312 zr->v4l_sync_tail++; 2314 2313 return res; ··· 2326 2325 ZR_DEVNAME(zr), vmap->frame, vmap->width, vmap->height, 2327 2326 vmap->format); 2328 2327 2329 - down(&zr->resource_lock); 2328 + mutex_lock(&zr->resource_lock); 2330 2329 res = v4l_grab(file, vmap); 2331 - up(&zr->resource_lock); 2330 + mutex_unlock(&zr->resource_lock); 2332 2331 return res; 2333 2332 } 2334 2333 break; ··· 2349 2348 i * fh->v4l_buffers.buffer_size; 2350 2349 } 2351 2350 2352 - down(&zr->resource_lock); 2351 + mutex_lock(&zr->resource_lock); 2353 2352 2354 2353 if (fh->jpg_buffers.allocated || fh->v4l_buffers.allocated) { 2355 2354 dprintk(1, ··· 2368 2367 /* The next mmap will map the V4L buffers */ 2369 2368 fh->map_mode = ZORAN_MAP_MODE_RAW; 2370 2369 v4l1reqbuf_unlock_and_return: 2371 - up(&zr->resource_lock); 2370 + mutex_unlock(&zr->resource_lock); 2372 2371 2373 2372 return res; 2374 2373 } ··· 2422 2421 bparams->major_version = MAJOR_VERSION; 2423 2422 bparams->minor_version = MINOR_VERSION; 2424 2423 2425 - down(&zr->resource_lock); 2424 + mutex_lock(&zr->resource_lock); 2426 2425 2427 2426 bparams->norm = zr->norm; 2428 2427 bparams->input = zr->input; ··· 2451 2450 bparams->jpeg_markers = 2452 2451 fh->jpg_settings.jpg_comp.jpeg_markers; 2453 2452 2454 - up(&zr->resource_lock); 2453 + mutex_unlock(&zr->resource_lock); 2455 2454 2456 2455 bparams->VFIFO_FB = 0; 2457 2456 ··· 2487 2486 sizeof(bparams->COM_data)); 2488 2487 settings.jpg_comp.jpeg_markers = bparams->jpeg_markers; 2489 2488 2490 - down(&zr->resource_lock); 2489 + mutex_lock(&zr->resource_lock); 2491 2490 2492 2491 if (zr->codec_mode != BUZ_MODE_IDLE) { 2493 2492 dprintk(1, ··· 2507 2506 2508 2507 fh->jpg_settings = settings; 2509 2508 sparams_unlock_and_return: 2510 - up(&zr->resource_lock); 2509 + mutex_unlock(&zr->resource_lock); 2511 2510 2512 2511 return res; 2513 2512 } ··· 2539 2538 breq->size > MAX_KMALLOC_MEM) 2540 2539 breq->size = MAX_KMALLOC_MEM; 2541 2540 2542 - down(&zr->resource_lock); 2541 + mutex_lock(&zr->resource_lock); 2543 2542 2544 2543 if (fh->jpg_buffers.allocated || fh->v4l_buffers.allocated) { 2545 2544 dprintk(1, ··· 2562 2561 * also be *_PLAY, but it doesn't matter here */ 2563 2562 fh->map_mode = ZORAN_MAP_MODE_JPG_REC; 2564 2563 jpgreqbuf_unlock_and_return: 2565 - up(&zr->resource_lock); 2564 + mutex_unlock(&zr->resource_lock); 2566 2565 2567 2566 return res; 2568 2567 } ··· 2575 2574 dprintk(3, KERN_DEBUG "%s: BUZIOC_QBUF_CAPT - frame=%d\n", 2576 2575 ZR_DEVNAME(zr), *frame); 2577 2576 2578 - down(&zr->resource_lock); 2577 + mutex_lock(&zr->resource_lock); 2579 2578 res = jpg_qbuf(file, *frame, BUZ_MODE_MOTION_COMPRESS); 2580 - up(&zr->resource_lock); 2579 + mutex_unlock(&zr->resource_lock); 2581 2580 2582 2581 return res; 2583 2582 } ··· 2590 2589 dprintk(3, KERN_DEBUG "%s: BUZIOC_QBUF_PLAY - frame=%d\n", 2591 2590 ZR_DEVNAME(zr), *frame); 2592 2591 2593 - down(&zr->resource_lock); 2592 + mutex_lock(&zr->resource_lock); 2594 2593 res = jpg_qbuf(file, *frame, BUZ_MODE_MOTION_DECOMPRESS); 2595 - up(&zr->resource_lock); 2594 + mutex_unlock(&zr->resource_lock); 2596 2595 2597 2596 return res; 2598 2597 } ··· 2605 2604 2606 2605 dprintk(3, KERN_DEBUG "%s: BUZIOC_SYNC\n", ZR_DEVNAME(zr)); 2607 2606 2608 - down(&zr->resource_lock); 2607 + mutex_lock(&zr->resource_lock); 2609 2608 res = jpg_sync(file, bsync); 2610 - up(&zr->resource_lock); 2609 + mutex_unlock(&zr->resource_lock); 2611 2610 2612 2611 return res; 2613 2612 } ··· 2631 2630 input = zr->card.input[bstat->input].muxsel; 2632 2631 norm = VIDEO_MODE_AUTO; 2633 2632 2634 - down(&zr->resource_lock); 2633 + mutex_lock(&zr->resource_lock); 2635 2634 2636 2635 if (zr->codec_mode != BUZ_MODE_IDLE) { 2637 2636 dprintk(1, ··· 2656 2655 decoder_command(zr, DECODER_SET_INPUT, &input); 2657 2656 decoder_command(zr, DECODER_SET_NORM, &zr->norm); 2658 2657 gstat_unlock_and_return: 2659 - up(&zr->resource_lock); 2658 + mutex_unlock(&zr->resource_lock); 2660 2659 2661 2660 if (!res) { 2662 2661 bstat->signal = ··· 2764 2763 switch (fmt->type) { 2765 2764 case V4L2_BUF_TYPE_VIDEO_OVERLAY: 2766 2765 2767 - down(&zr->resource_lock); 2766 + mutex_lock(&zr->resource_lock); 2768 2767 2769 2768 fmt->fmt.win.w.left = fh->overlay_settings.x; 2770 2769 fmt->fmt.win.w.top = fh->overlay_settings.y; ··· 2777 2776 else 2778 2777 fmt->fmt.win.field = V4L2_FIELD_TOP; 2779 2778 2780 - up(&zr->resource_lock); 2779 + mutex_unlock(&zr->resource_lock); 2781 2780 2782 2781 break; 2783 2782 2784 2783 case V4L2_BUF_TYPE_VIDEO_CAPTURE: 2785 2784 case V4L2_BUF_TYPE_VIDEO_OUTPUT: 2786 2785 2787 - down(&zr->resource_lock); 2786 + mutex_lock(&zr->resource_lock); 2788 2787 2789 2788 if (fmt->type == V4L2_BUF_TYPE_VIDEO_CAPTURE && 2790 2789 fh->map_mode == ZORAN_MAP_MODE_RAW) { ··· 2838 2837 V4L2_COLORSPACE_SMPTE170M; 2839 2838 } 2840 2839 2841 - up(&zr->resource_lock); 2840 + mutex_unlock(&zr->resource_lock); 2842 2841 2843 2842 break; 2844 2843 ··· 2871 2870 fmt->fmt.win.w.height, 2872 2871 fmt->fmt.win.clipcount, 2873 2872 fmt->fmt.win.bitmap); 2874 - down(&zr->resource_lock); 2873 + mutex_lock(&zr->resource_lock); 2875 2874 res = 2876 2875 setup_window(file, fmt->fmt.win.w.left, 2877 2876 fmt->fmt.win.w.top, ··· 2881 2880 fmt->fmt.win.clips, 2882 2881 fmt->fmt.win.clipcount, 2883 2882 fmt->fmt.win.bitmap); 2884 - up(&zr->resource_lock); 2883 + mutex_unlock(&zr->resource_lock); 2885 2884 return res; 2886 2885 break; 2887 2886 ··· 2918 2917 } 2919 2918 2920 2919 if (fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_MJPEG) { 2921 - down(&zr->resource_lock); 2920 + mutex_lock(&zr->resource_lock); 2922 2921 2923 2922 settings = fh->jpg_settings; 2924 2923 ··· 2996 2995 ZORAN_MAP_MODE_JPG_REC : 2997 2996 ZORAN_MAP_MODE_JPG_PLAY; 2998 2997 sfmtjpg_unlock_and_return: 2999 - up(&zr->resource_lock); 2998 + mutex_unlock(&zr->resource_lock); 3000 2999 } else { 3001 3000 for (i = 0; i < zoran_num_formats; i++) 3002 3001 if (fmt->fmt.pix.pixelformat == ··· 3011 3010 (char *) &printformat); 3012 3011 return -EINVAL; 3013 3012 } 3014 - down(&zr->resource_lock); 3013 + mutex_lock(&zr->resource_lock); 3015 3014 if (fh->jpg_buffers.allocated || 3016 3015 (fh->v4l_buffers.allocated && 3017 3016 fh->v4l_buffers.active != ··· 3053 3052 3054 3053 fh->map_mode = ZORAN_MAP_MODE_RAW; 3055 3054 sfmtv4l_unlock_and_return: 3056 - up(&zr->resource_lock); 3055 + mutex_unlock(&zr->resource_lock); 3057 3056 } 3058 3057 3059 3058 break; ··· 3078 3077 dprintk(3, KERN_DEBUG "%s: VIDIOC_G_FBUF\n", ZR_DEVNAME(zr)); 3079 3078 3080 3079 memset(fb, 0, sizeof(*fb)); 3081 - down(&zr->resource_lock); 3080 + mutex_lock(&zr->resource_lock); 3082 3081 fb->base = zr->buffer.base; 3083 3082 fb->fmt.width = zr->buffer.width; 3084 3083 fb->fmt.height = zr->buffer.height; ··· 3087 3086 fh->overlay_settings.format->fourcc; 3088 3087 } 3089 3088 fb->fmt.bytesperline = zr->buffer.bytesperline; 3090 - up(&zr->resource_lock); 3089 + mutex_unlock(&zr->resource_lock); 3091 3090 fb->fmt.colorspace = V4L2_COLORSPACE_SRGB; 3092 3091 fb->fmt.field = V4L2_FIELD_INTERLACED; 3093 3092 fb->flags = V4L2_FBUF_FLAG_OVERLAY; ··· 3122 3121 return -EINVAL; 3123 3122 } 3124 3123 3125 - down(&zr->resource_lock); 3124 + mutex_lock(&zr->resource_lock); 3126 3125 res = 3127 3126 setup_fbuffer(file, fb->base, &zoran_formats[i], 3128 3127 fb->fmt.width, fb->fmt.height, 3129 3128 fb->fmt.bytesperline); 3130 - up(&zr->resource_lock); 3129 + mutex_unlock(&zr->resource_lock); 3131 3130 3132 3131 return res; 3133 3132 } ··· 3140 3139 dprintk(3, KERN_DEBUG "%s: VIDIOC_PREVIEW - on=%d\n", 3141 3140 ZR_DEVNAME(zr), *on); 3142 3141 3143 - down(&zr->resource_lock); 3142 + mutex_lock(&zr->resource_lock); 3144 3143 res = setup_overlay(file, *on); 3145 - up(&zr->resource_lock); 3144 + mutex_unlock(&zr->resource_lock); 3146 3145 3147 3146 return res; 3148 3147 } ··· 3164 3163 return -EINVAL; 3165 3164 } 3166 3165 3167 - down(&zr->resource_lock); 3166 + mutex_lock(&zr->resource_lock); 3168 3167 3169 3168 if (fh->v4l_buffers.allocated || fh->jpg_buffers.allocated) { 3170 3169 dprintk(1, ··· 3225 3224 goto v4l2reqbuf_unlock_and_return; 3226 3225 } 3227 3226 v4l2reqbuf_unlock_and_return: 3228 - up(&zr->resource_lock); 3227 + mutex_unlock(&zr->resource_lock); 3229 3228 3230 3229 return 0; 3231 3230 } ··· 3246 3245 buf->type = type; 3247 3246 buf->index = index; 3248 3247 3249 - down(&zr->resource_lock); 3248 + mutex_lock(&zr->resource_lock); 3250 3249 res = zoran_v4l2_buffer_status(file, buf, buf->index); 3251 - up(&zr->resource_lock); 3250 + mutex_unlock(&zr->resource_lock); 3252 3251 3253 3252 return res; 3254 3253 } ··· 3263 3262 KERN_DEBUG "%s: VIDIOC_QBUF - type=%d, index=%d\n", 3264 3263 ZR_DEVNAME(zr), buf->type, buf->index); 3265 3264 3266 - down(&zr->resource_lock); 3265 + mutex_lock(&zr->resource_lock); 3267 3266 3268 3267 switch (fh->map_mode) { 3269 3268 case ZORAN_MAP_MODE_RAW: ··· 3323 3322 goto qbuf_unlock_and_return; 3324 3323 } 3325 3324 qbuf_unlock_and_return: 3326 - up(&zr->resource_lock); 3325 + mutex_unlock(&zr->resource_lock); 3327 3326 3328 3327 return res; 3329 3328 } ··· 3337 3336 dprintk(3, KERN_DEBUG "%s: VIDIOC_DQBUF - type=%d\n", 3338 3337 ZR_DEVNAME(zr), buf->type); 3339 3338 3340 - down(&zr->resource_lock); 3339 + mutex_lock(&zr->resource_lock); 3341 3340 3342 3341 switch (fh->map_mode) { 3343 3342 case ZORAN_MAP_MODE_RAW: ··· 3411 3410 goto dqbuf_unlock_and_return; 3412 3411 } 3413 3412 dqbuf_unlock_and_return: 3414 - up(&zr->resource_lock); 3413 + mutex_unlock(&zr->resource_lock); 3415 3414 3416 3415 return res; 3417 3416 } ··· 3423 3422 3424 3423 dprintk(3, KERN_DEBUG "%s: VIDIOC_STREAMON\n", ZR_DEVNAME(zr)); 3425 3424 3426 - down(&zr->resource_lock); 3425 + mutex_lock(&zr->resource_lock); 3427 3426 3428 3427 switch (fh->map_mode) { 3429 3428 case ZORAN_MAP_MODE_RAW: /* raw capture */ ··· 3471 3470 goto strmon_unlock_and_return; 3472 3471 } 3473 3472 strmon_unlock_and_return: 3474 - up(&zr->resource_lock); 3473 + mutex_unlock(&zr->resource_lock); 3475 3474 3476 3475 return res; 3477 3476 } ··· 3483 3482 3484 3483 dprintk(3, KERN_DEBUG "%s: VIDIOC_STREAMOFF\n", ZR_DEVNAME(zr)); 3485 3484 3486 - down(&zr->resource_lock); 3485 + mutex_lock(&zr->resource_lock); 3487 3486 3488 3487 switch (fh->map_mode) { 3489 3488 case ZORAN_MAP_MODE_RAW: /* raw capture */ ··· 3541 3540 goto strmoff_unlock_and_return; 3542 3541 } 3543 3542 strmoff_unlock_and_return: 3544 - up(&zr->resource_lock); 3543 + mutex_unlock(&zr->resource_lock); 3545 3544 3546 3545 return res; 3547 3546 } ··· 3601 3600 ctrl->id > V4L2_CID_HUE) 3602 3601 return -EINVAL; 3603 3602 3604 - down(&zr->resource_lock); 3603 + mutex_lock(&zr->resource_lock); 3605 3604 switch (ctrl->id) { 3606 3605 case V4L2_CID_BRIGHTNESS: 3607 3606 ctrl->value = zr->brightness; ··· 3616 3615 ctrl->value = zr->hue; 3617 3616 break; 3618 3617 } 3619 - up(&zr->resource_lock); 3618 + mutex_unlock(&zr->resource_lock); 3620 3619 3621 3620 return 0; 3622 3621 } ··· 3643 3642 return -EINVAL; 3644 3643 } 3645 3644 3646 - down(&zr->resource_lock); 3645 + mutex_lock(&zr->resource_lock); 3647 3646 switch (ctrl->id) { 3648 3647 case V4L2_CID_BRIGHTNESS: 3649 3648 zr->brightness = ctrl->value; ··· 3665 3664 3666 3665 decoder_command(zr, DECODER_SET_PICTURE, &pict); 3667 3666 3668 - up(&zr->resource_lock); 3667 + mutex_unlock(&zr->resource_lock); 3669 3668 3670 3669 return 0; 3671 3670 } ··· 3733 3732 3734 3733 dprintk(3, KERN_DEBUG "%s: VIDIOC_G_STD\n", ZR_DEVNAME(zr)); 3735 3734 3736 - down(&zr->resource_lock); 3735 + mutex_lock(&zr->resource_lock); 3737 3736 norm = zr->norm; 3738 - up(&zr->resource_lock); 3737 + mutex_unlock(&zr->resource_lock); 3739 3738 3740 3739 switch (norm) { 3741 3740 case VIDEO_MODE_PAL: ··· 3777 3776 return -EINVAL; 3778 3777 } 3779 3778 3780 - down(&zr->resource_lock); 3779 + mutex_lock(&zr->resource_lock); 3781 3780 if ((res = zoran_set_norm(zr, norm))) 3782 3781 goto sstd_unlock_and_return; 3783 3782 3784 3783 res = wait_grab_pending(zr); 3785 3784 sstd_unlock_and_return: 3786 - up(&zr->resource_lock); 3785 + mutex_unlock(&zr->resource_lock); 3787 3786 return res; 3788 3787 } 3789 3788 break; ··· 3810 3809 inp->std = V4L2_STD_ALL; 3811 3810 3812 3811 /* Get status of video decoder */ 3813 - down(&zr->resource_lock); 3812 + mutex_lock(&zr->resource_lock); 3814 3813 decoder_command(zr, DECODER_GET_STATUS, &status); 3815 - up(&zr->resource_lock); 3814 + mutex_unlock(&zr->resource_lock); 3816 3815 3817 3816 if (!(status & DECODER_STATUS_GOOD)) { 3818 3817 inp->status |= V4L2_IN_ST_NO_POWER; ··· 3831 3830 3832 3831 dprintk(3, KERN_DEBUG "%s: VIDIOC_G_INPUT\n", ZR_DEVNAME(zr)); 3833 3832 3834 - down(&zr->resource_lock); 3833 + mutex_lock(&zr->resource_lock); 3835 3834 *input = zr->input; 3836 - up(&zr->resource_lock); 3835 + mutex_unlock(&zr->resource_lock); 3837 3836 3838 3837 return 0; 3839 3838 } ··· 3846 3845 dprintk(3, KERN_DEBUG "%s: VIDIOC_S_INPUT - input=%d\n", 3847 3846 ZR_DEVNAME(zr), *input); 3848 3847 3849 - down(&zr->resource_lock); 3848 + mutex_lock(&zr->resource_lock); 3850 3849 if ((res = zoran_set_input(zr, *input))) 3851 3850 goto sinput_unlock_and_return; 3852 3851 3853 3852 /* Make sure the changes come into effect */ 3854 3853 res = wait_grab_pending(zr); 3855 3854 sinput_unlock_and_return: 3856 - up(&zr->resource_lock); 3855 + mutex_unlock(&zr->resource_lock); 3857 3856 return res; 3858 3857 } 3859 3858 break; ··· 3915 3914 memset(cropcap, 0, sizeof(*cropcap)); 3916 3915 cropcap->type = type; 3917 3916 3918 - down(&zr->resource_lock); 3917 + mutex_lock(&zr->resource_lock); 3919 3918 3920 3919 if (cropcap->type != V4L2_BUF_TYPE_VIDEO_OUTPUT && 3921 3920 (cropcap->type != V4L2_BUF_TYPE_VIDEO_CAPTURE || ··· 3935 3934 cropcap->defrect.width = BUZ_MIN_WIDTH; 3936 3935 cropcap->defrect.height = BUZ_MIN_HEIGHT; 3937 3936 cropcap_unlock_and_return: 3938 - up(&zr->resource_lock); 3937 + mutex_unlock(&zr->resource_lock); 3939 3938 return res; 3940 3939 } 3941 3940 break; ··· 3951 3950 memset(crop, 0, sizeof(*crop)); 3952 3951 crop->type = type; 3953 3952 3954 - down(&zr->resource_lock); 3953 + mutex_lock(&zr->resource_lock); 3955 3954 3956 3955 if (crop->type != V4L2_BUF_TYPE_VIDEO_OUTPUT && 3957 3956 (crop->type != V4L2_BUF_TYPE_VIDEO_CAPTURE || ··· 3970 3969 crop->c.height = fh->jpg_settings.img_height; 3971 3970 3972 3971 gcrop_unlock_and_return: 3973 - up(&zr->resource_lock); 3972 + mutex_unlock(&zr->resource_lock); 3974 3973 3975 3974 return res; 3976 3975 } ··· 3989 3988 ZR_DEVNAME(zr), crop->type, crop->c.left, crop->c.top, 3990 3989 crop->c.width, crop->c.height); 3991 3990 3992 - down(&zr->resource_lock); 3991 + mutex_lock(&zr->resource_lock); 3993 3992 3994 3993 if (fh->jpg_buffers.allocated || fh->v4l_buffers.allocated) { 3995 3994 dprintk(1, ··· 4025 4024 fh->jpg_settings = settings; 4026 4025 4027 4026 scrop_unlock_and_return: 4028 - up(&zr->resource_lock); 4027 + mutex_unlock(&zr->resource_lock); 4029 4028 return res; 4030 4029 } 4031 4030 break; ··· 4039 4038 4040 4039 memset(params, 0, sizeof(*params)); 4041 4040 4042 - down(&zr->resource_lock); 4041 + mutex_lock(&zr->resource_lock); 4043 4042 4044 4043 params->quality = fh->jpg_settings.jpg_comp.quality; 4045 4044 params->APPn = fh->jpg_settings.jpg_comp.APPn; ··· 4054 4053 params->jpeg_markers = 4055 4054 fh->jpg_settings.jpg_comp.jpeg_markers; 4056 4055 4057 - up(&zr->resource_lock); 4056 + mutex_unlock(&zr->resource_lock); 4058 4057 4059 4058 return 0; 4060 4059 } ··· 4075 4074 4076 4075 settings.jpg_comp = *params; 4077 4076 4078 - down(&zr->resource_lock); 4077 + mutex_lock(&zr->resource_lock); 4079 4078 4080 4079 if (fh->v4l_buffers.active != ZORAN_FREE || 4081 4080 fh->jpg_buffers.active != ZORAN_FREE) { ··· 4094 4093 zoran_v4l2_calc_bufsize(&fh->jpg_settings); 4095 4094 fh->jpg_settings.jpg_comp = *params = settings.jpg_comp; 4096 4095 sjpegc_unlock_and_return: 4097 - up(&zr->resource_lock); 4096 + mutex_unlock(&zr->resource_lock); 4098 4097 4099 4098 return 0; 4100 4099 } ··· 4128 4127 4129 4128 switch (fmt->type) { 4130 4129 case V4L2_BUF_TYPE_VIDEO_OVERLAY: 4131 - down(&zr->resource_lock); 4130 + mutex_lock(&zr->resource_lock); 4132 4131 4133 4132 if (fmt->fmt.win.w.width > BUZ_MAX_WIDTH) 4134 4133 fmt->fmt.win.w.width = BUZ_MAX_WIDTH; ··· 4139 4138 if (fmt->fmt.win.w.height < BUZ_MIN_HEIGHT) 4140 4139 fmt->fmt.win.w.height = BUZ_MIN_HEIGHT; 4141 4140 4142 - up(&zr->resource_lock); 4141 + mutex_unlock(&zr->resource_lock); 4143 4142 break; 4144 4143 4145 4144 case V4L2_BUF_TYPE_VIDEO_CAPTURE: ··· 4147 4146 if (fmt->fmt.pix.bytesperline > 0) 4148 4147 return -EINVAL; 4149 4148 4150 - down(&zr->resource_lock); 4149 + mutex_lock(&zr->resource_lock); 4151 4150 4152 4151 if (fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_MJPEG) { 4153 4152 settings = fh->jpg_settings; ··· 4230 4229 goto tryfmt_unlock_and_return; 4231 4230 } 4232 4231 tryfmt_unlock_and_return: 4233 - up(&zr->resource_lock); 4232 + mutex_unlock(&zr->resource_lock); 4234 4233 4235 4234 return res; 4236 4235 break; ··· 4281 4280 * if no buffers queued or so, return POLLNVAL 4282 4281 */ 4283 4282 4284 - down(&zr->resource_lock); 4283 + mutex_lock(&zr->resource_lock); 4285 4284 4286 4285 switch (fh->map_mode) { 4287 4286 case ZORAN_MAP_MODE_RAW: ··· 4330 4329 } 4331 4330 4332 4331 poll_unlock_and_return: 4333 - up(&zr->resource_lock); 4332 + mutex_unlock(&zr->resource_lock); 4334 4333 4335 4334 return res; 4336 4335 } ··· 4386 4385 if (fh->jpg_buffers.buffer[i].map) 4387 4386 break; 4388 4387 if (i == fh->jpg_buffers.num_buffers) { 4389 - down(&zr->resource_lock); 4388 + mutex_lock(&zr->resource_lock); 4390 4389 4391 4390 if (fh->jpg_buffers.active != ZORAN_FREE) { 4392 4391 jpg_qbuf(file, -1, zr->codec_mode); ··· 4399 4398 fh->jpg_buffers.allocated = 0; 4400 4399 fh->jpg_buffers.ready_to_be_freed = 1; 4401 4400 4402 - up(&zr->resource_lock); 4401 + mutex_unlock(&zr->resource_lock); 4403 4402 } 4404 4403 4405 4404 break; ··· 4422 4421 if (fh->v4l_buffers.buffer[i].map) 4423 4422 break; 4424 4423 if (i == fh->v4l_buffers.num_buffers) { 4425 - down(&zr->resource_lock); 4424 + mutex_lock(&zr->resource_lock); 4426 4425 4427 4426 if (fh->v4l_buffers.active != ZORAN_FREE) { 4428 4427 zr36057_set_memgrab(zr, 0); ··· 4435 4434 fh->v4l_buffers.allocated = 0; 4436 4435 fh->v4l_buffers.ready_to_be_freed = 1; 4437 4436 4438 - up(&zr->resource_lock); 4437 + mutex_unlock(&zr->resource_lock); 4439 4438 } 4440 4439 4441 4440 break; ··· 4490 4489 case ZORAN_MAP_MODE_JPG_PLAY: 4491 4490 4492 4491 /* lock */ 4493 - down(&zr->resource_lock); 4492 + mutex_lock(&zr->resource_lock); 4494 4493 4495 4494 /* Map the MJPEG buffers */ 4496 4495 if (!fh->jpg_buffers.allocated) { ··· 4580 4579 4581 4580 } 4582 4581 jpg_mmap_unlock_and_return: 4583 - up(&zr->resource_lock); 4582 + mutex_unlock(&zr->resource_lock); 4584 4583 4585 4584 break; 4586 4585 4587 4586 case ZORAN_MAP_MODE_RAW: 4588 4587 4589 - down(&zr->resource_lock); 4588 + mutex_lock(&zr->resource_lock); 4590 4589 4591 4590 /* Map the V4L buffers */ 4592 4591 if (!fh->v4l_buffers.allocated) { ··· 4658 4657 break; 4659 4658 } 4660 4659 v4l_mmap_unlock_and_return: 4661 - up(&zr->resource_lock); 4660 + mutex_unlock(&zr->resource_lock); 4662 4661 4663 4662 break; 4664 4663