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

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media fixes from Mauro Carvalho Chehab:
- Fixes a regression at DVB core when switching from DVB-S2 to DVB-S on
Kaffeine (Fedora 16 Bugzilla #812895);
- Fixes a mutex unlock at an error condition at drx-k;
- Fix winbond-cir set mode;
- mt9m032: Fix a compilation breakage with some random Kconfig;
- mt9m032: fix two dead locks;
- xc5000: don't require an special firmware (that won't be provided by
the vendor) just because the xtal frequency is different;
- V4L DocBook: fix some typos at multi-plane formats description.

* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
[media] xc5000: support 32MHz & 31.875MHz xtal using the 41.024.5 firmware
[media] V4L: mt9m032: fix compilation breakage
[media] V4L: DocBook: Fix typos in the multi-plane formats description
[media] V4L: mt9m032: fix two dead-locks
[media] rc-core: set mode for winbond-cir
[media] drxk: Does not unlock mutex if sanity check failed in scu_command()
[media] dvb_frontend: Fix a regression when switching back to DVB-S

+71 -12
+1 -1
Documentation/DocBook/media/v4l/pixfmt-nv12m.xml
··· 1 1 <refentry id="V4L2-PIX-FMT-NV12M"> 2 2 <refmeta> 3 - <refentrytitle>V4L2_PIX_FMT_NV12M ('NV12M')</refentrytitle> 3 + <refentrytitle>V4L2_PIX_FMT_NV12M ('NM12')</refentrytitle> 4 4 &manvol; 5 5 </refmeta> 6 6 <refnamediv>
+1 -1
Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
··· 1 1 <refentry id="V4L2-PIX-FMT-YUV420M"> 2 2 <refmeta> 3 - <refentrytitle>V4L2_PIX_FMT_YUV420M ('YU12M')</refentrytitle> 3 + <refentrytitle>V4L2_PIX_FMT_YUV420M ('YM12')</refentrytitle> 4 4 &manvol; 5 5 </refmeta> 6 6 <refnamediv>
+35 -4
drivers/media/common/tuners/xc5000.c
··· 54 54 struct list_head hybrid_tuner_instance_list; 55 55 56 56 u32 if_khz; 57 + u32 xtal_khz; 57 58 u32 freq_hz; 58 59 u32 bandwidth; 59 60 u8 video_standard; ··· 215 214 .size = 12401, 216 215 }; 217 216 218 - static const struct xc5000_fw_cfg xc5000c_41_024_5_31875 = { 219 - .name = "dvb-fe-xc5000c-41.024.5-31875.fw", 220 - .size = 16503, 217 + static const struct xc5000_fw_cfg xc5000c_41_024_5 = { 218 + .name = "dvb-fe-xc5000c-41.024.5.fw", 219 + .size = 16497, 221 220 }; 222 221 223 222 static inline const struct xc5000_fw_cfg *xc5000_assign_firmware(int chip_id) ··· 227 226 case XC5000A: 228 227 return &xc5000a_1_6_114; 229 228 case XC5000C: 230 - return &xc5000c_41_024_5_31875; 229 + return &xc5000c_41_024_5; 231 230 } 232 231 } 233 232 ··· 573 572 return found; 574 573 } 575 574 575 + static int xc_set_xtal(struct dvb_frontend *fe) 576 + { 577 + struct xc5000_priv *priv = fe->tuner_priv; 578 + int ret = XC_RESULT_SUCCESS; 579 + 580 + switch (priv->chip_id) { 581 + default: 582 + case XC5000A: 583 + /* 32.000 MHz xtal is default */ 584 + break; 585 + case XC5000C: 586 + switch (priv->xtal_khz) { 587 + default: 588 + case 32000: 589 + /* 32.000 MHz xtal is default */ 590 + break; 591 + case 31875: 592 + /* 31.875 MHz xtal configuration */ 593 + ret = xc_write_reg(priv, 0x000f, 0x8081); 594 + break; 595 + } 596 + break; 597 + } 598 + return ret; 599 + } 576 600 577 601 static int xc5000_fwupload(struct dvb_frontend *fe) 578 602 { ··· 629 603 } else { 630 604 printk(KERN_INFO "xc5000: firmware uploading...\n"); 631 605 ret = xc_load_i2c_sequence(fe, fw->data); 606 + if (XC_RESULT_SUCCESS == ret) 607 + ret = xc_set_xtal(fe); 632 608 printk(KERN_INFO "xc5000: firmware upload complete...\n"); 633 609 } 634 610 ··· 1191 1163 call to xc5000_attach occurs before the digital side) */ 1192 1164 priv->if_khz = cfg->if_khz; 1193 1165 } 1166 + 1167 + if (priv->xtal_khz == 0) 1168 + priv->xtal_khz = cfg->xtal_khz; 1194 1169 1195 1170 if (priv->radio_input == 0) 1196 1171 priv->radio_input = cfg->radio_input;
+1
drivers/media/common/tuners/xc5000.h
··· 34 34 u8 i2c_address; 35 35 u32 if_khz; 36 36 u8 radio_input; 37 + u32 xtal_khz; 37 38 38 39 int chip_id; 39 40 };
+24 -1
drivers/media/dvb/dvb-core/dvb_frontend.c
··· 1446 1446 __func__); 1447 1447 return -EINVAL; 1448 1448 } 1449 + /* 1450 + * Get a delivery system that is compatible with DVBv3 1451 + * NOTE: in order for this to work with softwares like Kaffeine that 1452 + * uses a DVBv5 call for DVB-S2 and a DVBv3 call to go back to 1453 + * DVB-S, drivers that support both should put the SYS_DVBS entry 1454 + * before the SYS_DVBS2, otherwise it won't switch back to DVB-S. 1455 + * The real fix is that userspace applications should not use DVBv3 1456 + * and not trust on calling FE_SET_FRONTEND to switch the delivery 1457 + * system. 1458 + */ 1459 + ncaps = 0; 1460 + while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) { 1461 + if (fe->ops.delsys[ncaps] == desired_system) { 1462 + delsys = desired_system; 1463 + break; 1464 + } 1465 + ncaps++; 1466 + } 1467 + if (delsys == SYS_UNDEFINED) { 1468 + dprintk("%s() Couldn't find a delivery system that matches %d\n", 1469 + __func__, desired_system); 1470 + } 1449 1471 } else { 1450 1472 /* 1451 1473 * This is a DVBv5 call. So, it likely knows the supported ··· 1516 1494 __func__); 1517 1495 return -EINVAL; 1518 1496 } 1519 - c->delivery_system = delsys; 1520 1497 } 1498 + 1499 + c->delivery_system = delsys; 1521 1500 1522 1501 /* 1523 1502 * The DVBv3 or DVBv5 call is requesting a different system. So,
+4 -2
drivers/media/dvb/frontends/drxk_hard.c
··· 1520 1520 dprintk(1, "\n"); 1521 1521 1522 1522 if ((cmd == 0) || ((parameterLen > 0) && (parameter == NULL)) || 1523 - ((resultLen > 0) && (result == NULL))) 1524 - goto error; 1523 + ((resultLen > 0) && (result == NULL))) { 1524 + printk(KERN_ERR "drxk: Error %d on %s\n", status, __func__); 1525 + return status; 1526 + } 1525 1527 1526 1528 mutex_lock(&state->mutex); 1527 1529
+1
drivers/media/rc/winbond-cir.c
··· 1046 1046 goto exit_unregister_led; 1047 1047 } 1048 1048 1049 + data->dev->driver_type = RC_DRIVER_IR_RAW; 1049 1050 data->dev->driver_name = WBCIR_NAME; 1050 1051 data->dev->input_name = WBCIR_NAME; 1051 1052 data->dev->input_phys = "wbcir/cir0";
+1 -1
drivers/media/video/Kconfig
··· 492 492 493 493 config VIDEO_MT9M032 494 494 tristate "MT9M032 camera sensor support" 495 - depends on I2C && VIDEO_V4L2 495 + depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API 496 496 select VIDEO_APTINA_PLL 497 497 ---help--- 498 498 This driver supports MT9M032 camera sensors from Aptina, monochrome
+3 -2
drivers/media/video/mt9m032.c
··· 392 392 } 393 393 394 394 /* Scaling is not supported, the format is thus fixed. */ 395 - ret = mt9m032_get_pad_format(subdev, fh, fmt); 395 + fmt->format = *__mt9m032_get_pad_format(sensor, fh, fmt->which); 396 + ret = 0; 396 397 397 398 done: 398 - mutex_lock(&sensor->lock); 399 + mutex_unlock(&sensor->lock); 399 400 return ret; 400 401 } 401 402