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 tag 'media/v3.19-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media fixes from Mauro Carvalho Chehab:
- fix some race conditions caused by a regression on videobuf2
- fix a interrupt release bug on cx23885
- fix support for Mygica T230 and HVR4400
- fix compilation breakage when USB is not selected on tlg2300
- fix capabilities report on ompa3isp, soc-camera, rcar_vin and
pvrusb2

* tag 'media/v3.19-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
[media] omap3isp: Correctly set QUERYCAP capabilities
[media] cx23885: fix free interrupt bug
[media] pvrusb2: fix missing device_caps in querycap
[media] vb2: fix vb2_thread_stop race conditions
[media] rcar_vin: Update device_caps and capabilities in querycap
[media] soc-camera: fix device capabilities in multiple camera host drivers
[media] Fix Mygica T230 support
[media] cx23885: Split Hauppauge WinTV Starburst from HVR4400 card entry
[media] tlg2300: Fix media dependencies

+77 -40
+17 -6
drivers/media/pci/cx23885/cx23885-cards.c
··· 614 614 .portb = CX23885_MPEG_DVB, 615 615 }, 616 616 [CX23885_BOARD_HAUPPAUGE_HVR4400] = { 617 - .name = "Hauppauge WinTV-HVR4400", 617 + .name = "Hauppauge WinTV-HVR4400/HVR5500", 618 618 .porta = CX23885_ANALOG_VIDEO, 619 619 .portb = CX23885_MPEG_DVB, 620 620 .portc = CX23885_MPEG_DVB, 621 621 .tuner_type = TUNER_NXP_TDA18271, 622 622 .tuner_addr = 0x60, /* 0xc0 >> 1 */ 623 623 .tuner_bus = 1, 624 + }, 625 + [CX23885_BOARD_HAUPPAUGE_STARBURST] = { 626 + .name = "Hauppauge WinTV Starburst", 627 + .portb = CX23885_MPEG_DVB, 624 628 }, 625 629 [CX23885_BOARD_AVERMEDIA_HC81R] = { 626 630 .name = "AVerTV Hybrid Express Slim HC81R", ··· 940 936 }, { 941 937 .subvendor = 0x0070, 942 938 .subdevice = 0xc108, 943 - .card = CX23885_BOARD_HAUPPAUGE_HVR4400, 939 + .card = CX23885_BOARD_HAUPPAUGE_HVR4400, /* Hauppauge WinTV HVR-4400 (Model 121xxx, Hybrid DVB-T/S2, IR) */ 944 940 }, { 945 941 .subvendor = 0x0070, 946 942 .subdevice = 0xc138, 947 - .card = CX23885_BOARD_HAUPPAUGE_HVR4400, 943 + .card = CX23885_BOARD_HAUPPAUGE_HVR4400, /* Hauppauge WinTV HVR-5500 (Model 121xxx, Hybrid DVB-T/C/S2, IR) */ 948 944 }, { 949 945 .subvendor = 0x0070, 950 946 .subdevice = 0xc12a, 951 - .card = CX23885_BOARD_HAUPPAUGE_HVR4400, 947 + .card = CX23885_BOARD_HAUPPAUGE_STARBURST, /* Hauppauge WinTV Starburst (Model 121x00, DVB-S2, IR) */ 952 948 }, { 953 949 .subvendor = 0x0070, 954 950 .subdevice = 0xc1f8, 955 - .card = CX23885_BOARD_HAUPPAUGE_HVR4400, 951 + .card = CX23885_BOARD_HAUPPAUGE_HVR4400, /* Hauppauge WinTV HVR-5500 (Model 121xxx, Hybrid DVB-T/C/S2, IR) */ 956 952 }, { 957 953 .subvendor = 0x1461, 958 954 .subdevice = 0xd939, ··· 1549 1545 cx_write(GPIO_ISM, 0x00000000);/* INTERRUPTS active low*/ 1550 1546 break; 1551 1547 case CX23885_BOARD_HAUPPAUGE_HVR4400: 1548 + case CX23885_BOARD_HAUPPAUGE_STARBURST: 1552 1549 /* GPIO-8 tda10071 demod reset */ 1553 - /* GPIO-9 si2165 demod reset */ 1550 + /* GPIO-9 si2165 demod reset (only HVR4400/HVR5500)*/ 1554 1551 1555 1552 /* Put the parts into reset and back */ 1556 1553 cx23885_gpio_enable(dev, GPIO_8 | GPIO_9, 1); ··· 1877 1872 case CX23885_BOARD_HAUPPAUGE_HVR1850: 1878 1873 case CX23885_BOARD_HAUPPAUGE_HVR1290: 1879 1874 case CX23885_BOARD_HAUPPAUGE_HVR4400: 1875 + case CX23885_BOARD_HAUPPAUGE_STARBURST: 1880 1876 case CX23885_BOARD_HAUPPAUGE_IMPACTVCBE: 1881 1877 if (dev->i2c_bus[0].i2c_rc == 0) 1882 1878 hauppauge_eeprom(dev, eeprom+0xc0); ··· 1985 1979 ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ 1986 1980 ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ 1987 1981 ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; 1982 + break; 1983 + case CX23885_BOARD_HAUPPAUGE_STARBURST: 1984 + ts1->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ 1985 + ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ 1986 + ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; 1988 1987 break; 1989 1988 case CX23885_BOARD_DVBSKY_T9580: 1990 1989 case CX23885_BOARD_DVBSKY_T982:
+2 -2
drivers/media/pci/cx23885/cx23885-core.c
··· 2049 2049 2050 2050 cx23885_shutdown(dev); 2051 2051 2052 - pci_disable_device(pci_dev); 2053 - 2054 2052 /* unregister stuff */ 2055 2053 free_irq(pci_dev->irq, dev); 2054 + 2055 + pci_disable_device(pci_dev); 2056 2056 2057 2057 cx23885_dev_unregister(dev); 2058 2058 vb2_dma_sg_cleanup_ctx(dev->alloc_ctx);
+11
drivers/media/pci/cx23885/cx23885-dvb.c
··· 1710 1710 break; 1711 1711 } 1712 1712 break; 1713 + case CX23885_BOARD_HAUPPAUGE_STARBURST: 1714 + i2c_bus = &dev->i2c_bus[0]; 1715 + fe0->dvb.frontend = dvb_attach(tda10071_attach, 1716 + &hauppauge_tda10071_config, 1717 + &i2c_bus->i2c_adap); 1718 + if (fe0->dvb.frontend != NULL) { 1719 + dvb_attach(a8293_attach, fe0->dvb.frontend, 1720 + &i2c_bus->i2c_adap, 1721 + &hauppauge_a8293_config); 1722 + } 1723 + break; 1713 1724 case CX23885_BOARD_DVBSKY_T9580: 1714 1725 case CX23885_BOARD_DVBSKY_S950: 1715 1726 i2c_bus = &dev->i2c_bus[0];
+1
drivers/media/pci/cx23885/cx23885.h
··· 99 99 #define CX23885_BOARD_DVBSKY_S950 49 100 100 #define CX23885_BOARD_DVBSKY_S952 50 101 101 #define CX23885_BOARD_DVBSKY_T982 51 102 + #define CX23885_BOARD_HAUPPAUGE_STARBURST 52 102 103 103 104 #define GPIO_0 0x00000001 104 105 #define GPIO_1 0x00000002
+5 -2
drivers/media/platform/omap3isp/ispvideo.c
··· 602 602 strlcpy(cap->card, video->video.name, sizeof(cap->card)); 603 603 strlcpy(cap->bus_info, "media", sizeof(cap->bus_info)); 604 604 605 + cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT 606 + | V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS; 607 + 605 608 if (video->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) 606 - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 609 + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 607 610 else 608 - cap->capabilities = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING; 611 + cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING; 609 612 610 613 return 0; 611 614 }
+3 -2
drivers/media/platform/soc_camera/atmel-isi.c
··· 760 760 { 761 761 strcpy(cap->driver, "atmel-isi"); 762 762 strcpy(cap->card, "Atmel Image Sensor Interface"); 763 - cap->capabilities = (V4L2_CAP_VIDEO_CAPTURE | 764 - V4L2_CAP_STREAMING); 763 + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 764 + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; 765 + 765 766 return 0; 766 767 } 767 768
+2 -1
drivers/media/platform/soc_camera/mx2_camera.c
··· 1256 1256 { 1257 1257 /* cap->name is set by the friendly caller:-> */ 1258 1258 strlcpy(cap->card, MX2_CAM_DRIVER_DESCRIPTION, sizeof(cap->card)); 1259 - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 1259 + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 1260 + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; 1260 1261 1261 1262 return 0; 1262 1263 }
+2 -1
drivers/media/platform/soc_camera/mx3_camera.c
··· 967 967 { 968 968 /* cap->name is set by the firendly caller:-> */ 969 969 strlcpy(cap->card, "i.MX3x Camera", sizeof(cap->card)); 970 - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 970 + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 971 + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; 971 972 972 973 return 0; 973 974 }
+2 -1
drivers/media/platform/soc_camera/omap1_camera.c
··· 1427 1427 { 1428 1428 /* cap->name is set by the friendly caller:-> */ 1429 1429 strlcpy(cap->card, "OMAP1 Camera", sizeof(cap->card)); 1430 - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 1430 + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 1431 + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; 1431 1432 1432 1433 return 0; 1433 1434 }
+2 -1
drivers/media/platform/soc_camera/pxa_camera.c
··· 1576 1576 { 1577 1577 /* cap->name is set by the firendly caller:-> */ 1578 1578 strlcpy(cap->card, pxa_cam_driver_description, sizeof(cap->card)); 1579 - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 1579 + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 1580 + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; 1580 1581 1581 1582 return 0; 1582 1583 }
+3 -1
drivers/media/platform/soc_camera/rcar_vin.c
··· 1799 1799 struct v4l2_capability *cap) 1800 1800 { 1801 1801 strlcpy(cap->card, "R_Car_VIN", sizeof(cap->card)); 1802 - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 1802 + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 1803 + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; 1804 + 1803 1805 return 0; 1804 1806 } 1805 1807
+3 -1
drivers/media/platform/soc_camera/sh_mobile_ceu_camera.c
··· 1652 1652 struct v4l2_capability *cap) 1653 1653 { 1654 1654 strlcpy(cap->card, "SuperH_Mobile_CEU", sizeof(cap->card)); 1655 - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 1655 + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 1656 + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; 1657 + 1656 1658 return 0; 1657 1659 } 1658 1660
+1 -1
drivers/media/usb/dvb-usb/cxusb.c
··· 2232 2232 { 2233 2233 "Mygica T230 DVB-T/T2/C", 2234 2234 { NULL }, 2235 - { &cxusb_table[22], NULL }, 2235 + { &cxusb_table[20], NULL }, 2236 2236 }, 2237 2237 } 2238 2238 };
+13 -11
drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
··· 89 89 module_param_array(vbi_nr, int, NULL, 0444); 90 90 MODULE_PARM_DESC(vbi_nr, "Offset for device's vbi dev minor"); 91 91 92 - static struct v4l2_capability pvr_capability ={ 93 - .driver = "pvrusb2", 94 - .card = "Hauppauge WinTV pvr-usb2", 95 - .bus_info = "usb", 96 - .version = LINUX_VERSION_CODE, 97 - .capabilities = (V4L2_CAP_VIDEO_CAPTURE | 98 - V4L2_CAP_TUNER | V4L2_CAP_AUDIO | V4L2_CAP_RADIO | 99 - V4L2_CAP_READWRITE), 100 - }; 101 - 102 92 static struct v4l2_fmtdesc pvr_fmtdesc [] = { 103 93 { 104 94 .index = 0, ··· 150 160 struct pvr2_v4l2_fh *fh = file->private_data; 151 161 struct pvr2_hdw *hdw = fh->channel.mc_head->hdw; 152 162 153 - memcpy(cap, &pvr_capability, sizeof(struct v4l2_capability)); 163 + strlcpy(cap->driver, "pvrusb2", sizeof(cap->driver)); 154 164 strlcpy(cap->bus_info, pvr2_hdw_get_bus_info(hdw), 155 165 sizeof(cap->bus_info)); 156 166 strlcpy(cap->card, pvr2_hdw_get_desc(hdw), sizeof(cap->card)); 167 + cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER | 168 + V4L2_CAP_AUDIO | V4L2_CAP_RADIO | 169 + V4L2_CAP_READWRITE | V4L2_CAP_DEVICE_CAPS; 170 + switch (fh->pdi->devbase.vfl_type) { 171 + case VFL_TYPE_GRABBER: 172 + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_AUDIO; 173 + break; 174 + case VFL_TYPE_RADIO: 175 + cap->device_caps = V4L2_CAP_RADIO; 176 + break; 177 + } 178 + cap->device_caps |= V4L2_CAP_TUNER | V4L2_CAP_READWRITE; 157 179 return 0; 158 180 } 159 181
+9 -10
drivers/media/v4l2-core/videobuf2-core.c
··· 3146 3146 prequeue--; 3147 3147 } else { 3148 3148 call_void_qop(q, wait_finish, q); 3149 - ret = vb2_internal_dqbuf(q, &fileio->b, 0); 3149 + if (!threadio->stop) 3150 + ret = vb2_internal_dqbuf(q, &fileio->b, 0); 3150 3151 call_void_qop(q, wait_prepare, q); 3151 3152 dprintk(5, "file io: vb2_dqbuf result: %d\n", ret); 3152 3153 } 3153 - if (threadio->stop) 3154 - break; 3155 - if (ret) 3154 + if (ret || threadio->stop) 3156 3155 break; 3157 3156 try_to_freeze(); 3158 3157 3159 3158 vb = q->bufs[fileio->b.index]; 3160 3159 if (!(fileio->b.flags & V4L2_BUF_FLAG_ERROR)) 3161 - ret = threadio->fnc(vb, threadio->priv); 3162 - if (ret) 3163 - break; 3160 + if (threadio->fnc(vb, threadio->priv)) 3161 + break; 3164 3162 call_void_qop(q, wait_finish, q); 3165 3163 if (set_timestamp) 3166 3164 v4l2_get_timestamp(&fileio->b.timestamp); 3167 - ret = vb2_internal_qbuf(q, &fileio->b); 3165 + if (!threadio->stop) 3166 + ret = vb2_internal_qbuf(q, &fileio->b); 3168 3167 call_void_qop(q, wait_prepare, q); 3169 - if (ret) 3168 + if (ret || threadio->stop) 3170 3169 break; 3171 3170 } 3172 3171 ··· 3234 3235 threadio->stop = true; 3235 3236 vb2_internal_streamoff(q, q->type); 3236 3237 call_void_qop(q, wait_prepare, q); 3238 + err = kthread_stop(threadio->thread); 3237 3239 q->fileio = NULL; 3238 3240 fileio->req.count = 0; 3239 3241 vb2_reqbufs(q, &fileio->req); 3240 3242 kfree(fileio); 3241 - err = kthread_stop(threadio->thread); 3242 3243 threadio->thread = NULL; 3243 3244 kfree(threadio); 3244 3245 q->fileio = NULL;
+1
drivers/staging/media/tlg2300/Kconfig
··· 1 1 config VIDEO_TLG2300 2 2 tristate "Telegent TLG2300 USB video capture support (Deprecated)" 3 3 depends on VIDEO_DEV && I2C && SND && DVB_CORE 4 + depends on MEDIA_USB_SUPPORT 4 5 select VIDEO_TUNER 5 6 select VIDEO_TVEEPROM 6 7 depends on RC_CORE