Merge git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb
* git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb: V4L/DVB (7367): bug #10211: Fix depencencies for cx2341x V4L/DVB (7362): tvp5150.c: logical-bitwise and confusion V4L/DVB (7334): usb video: add a device link to usbvideo devices, else hal will ignore them V4L/DVB (7330): V4L1 - fix v4l_compat_translate_ioctl possible NULL deref V4L/DVB (7328): usb/opera1.c: fix a memory leak V4L/DVB (7291): em28xx: correct use of and fix V4L/DVB (7285): em28xx: Correct use of ! and & V4L/DVB (7279): ivtv: Add missing sg_init_table() V4L/DVB (7268): saa7134: fix: tuner should be loaded before calling saa7134_board_init2() V4L/DVB (7267): cx88: Fix: Loads tuner module before sending commands to it V4L/DVB (7251): VIDEO_VIVI must depend on VIDEO_DEV V4L/DVB (7242): ivtv: fix for yuv filter table check V4L/DVB (7236): bttv: struct member initialized twice V4L/DVB (7228): saa7134: fix FM radio support for the Pinnacle PCTV 110i
This commit is contained in:
Коммит
ba42242829
|
@ -478,9 +478,9 @@ static int opera1_xilinx_load_firmware(struct usb_device *dev,
|
||||||
err("could not restart the USB controller CPU.");
|
err("could not restart the USB controller CPU.");
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
}
|
}
|
||||||
kfree(p);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
kfree(p);
|
||||||
if (fw) {
|
if (fw) {
|
||||||
release_firmware(fw);
|
release_firmware(fw);
|
||||||
}
|
}
|
||||||
|
|
|
@ -305,7 +305,7 @@ comment "MPEG video encoders"
|
||||||
|
|
||||||
config VIDEO_CX2341X
|
config VIDEO_CX2341X
|
||||||
tristate "Conexant CX2341x MPEG encoders"
|
tristate "Conexant CX2341x MPEG encoders"
|
||||||
depends on VIDEO_V4L2 && EXPERIMENTAL
|
depends on VIDEO_V4L2 && EXPERIMENTAL && VIDEO_V4L2_COMMON
|
||||||
---help---
|
---help---
|
||||||
Support for the Conexant CX23416 MPEG encoders
|
Support for the Conexant CX23416 MPEG encoders
|
||||||
and CX23415 MPEG encoder/decoders.
|
and CX23415 MPEG encoder/decoders.
|
||||||
|
@ -382,7 +382,7 @@ endmenu # encoder / decoder chips
|
||||||
|
|
||||||
config VIDEO_VIVI
|
config VIDEO_VIVI
|
||||||
tristate "Virtual Video Driver"
|
tristate "Virtual Video Driver"
|
||||||
depends on VIDEO_V4L2 && !SPARC32 && !SPARC64
|
depends on VIDEO_DEV && VIDEO_V4L2 && !SPARC32 && !SPARC64
|
||||||
select VIDEOBUF_VMALLOC
|
select VIDEOBUF_VMALLOC
|
||||||
default n
|
default n
|
||||||
---help---
|
---help---
|
||||||
|
|
|
@ -3388,7 +3388,6 @@ static struct video_device bttv_video_template =
|
||||||
#ifdef CONFIG_VIDEO_V4L1_COMPAT
|
#ifdef CONFIG_VIDEO_V4L1_COMPAT
|
||||||
.vidiocgmbuf = vidiocgmbuf,
|
.vidiocgmbuf = vidiocgmbuf,
|
||||||
#endif
|
#endif
|
||||||
.vidioc_g_crop = bttv_g_crop,
|
|
||||||
.vidioc_g_crop = bttv_g_crop,
|
.vidioc_g_crop = bttv_g_crop,
|
||||||
.vidioc_s_crop = bttv_s_crop,
|
.vidioc_s_crop = bttv_s_crop,
|
||||||
.vidioc_g_fbuf = bttv_g_fbuf,
|
.vidioc_g_fbuf = bttv_g_fbuf,
|
||||||
|
|
|
@ -2196,6 +2196,11 @@ struct cx88_core *cx88_core_create(struct pci_dev *pci, int nr)
|
||||||
cx88_reset(core);
|
cx88_reset(core);
|
||||||
cx88_card_setup_pre_i2c(core);
|
cx88_card_setup_pre_i2c(core);
|
||||||
cx88_i2c_init(core, pci);
|
cx88_i2c_init(core, pci);
|
||||||
|
|
||||||
|
/* load tuner module, if needed */
|
||||||
|
if (TUNER_ABSENT != core->board.tuner_type)
|
||||||
|
request_module("tuner");
|
||||||
|
|
||||||
cx88_call_i2c_clients (core, TUNER_SET_STANDBY, NULL);
|
cx88_call_i2c_clients (core, TUNER_SET_STANDBY, NULL);
|
||||||
cx88_card_setup(core);
|
cx88_card_setup(core);
|
||||||
cx88_ir_init(core, pci);
|
cx88_ir_init(core, pci);
|
||||||
|
|
|
@ -1826,8 +1826,6 @@ static int __devinit cx8800_initdev(struct pci_dev *pci_dev,
|
||||||
cx_set(MO_PCI_INTMSK, core->pci_irqmask);
|
cx_set(MO_PCI_INTMSK, core->pci_irqmask);
|
||||||
|
|
||||||
/* load and configure helper modules */
|
/* load and configure helper modules */
|
||||||
if (TUNER_ABSENT != core->board.tuner_type)
|
|
||||||
request_module("tuner");
|
|
||||||
|
|
||||||
if (core->board.audio_chip == AUDIO_CHIP_WM8775)
|
if (core->board.audio_chip == AUDIO_CHIP_WM8775)
|
||||||
request_module("wm8775");
|
request_module("wm8775");
|
||||||
|
|
|
@ -267,7 +267,7 @@ static int em28xx_write_ac97(struct em28xx *dev, u8 reg, u8 *val)
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
if ((ret = em28xx_read_reg(dev, AC97BUSY_REG)) < 0)
|
if ((ret = em28xx_read_reg(dev, AC97BUSY_REG)) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
if (!((u8) ret) & 0x01)
|
if (!(ret & 0x01))
|
||||||
return 0;
|
return 0;
|
||||||
msleep(5);
|
msleep(5);
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,6 @@
|
||||||
#include "ivtv-vbi.h"
|
#include "ivtv-vbi.h"
|
||||||
#include "ivtv-routing.h"
|
#include "ivtv-routing.h"
|
||||||
#include "ivtv-gpio.h"
|
#include "ivtv-gpio.h"
|
||||||
#include "ivtv-yuv.h"
|
|
||||||
|
|
||||||
#include <media/tveeprom.h>
|
#include <media/tveeprom.h>
|
||||||
#include <media/saa7115.h>
|
#include <media/saa7115.h>
|
||||||
|
@ -700,6 +699,9 @@ static int __devinit ivtv_init_struct1(struct ivtv *itv)
|
||||||
itv->vbi.in.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
|
itv->vbi.in.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
|
||||||
itv->vbi.sliced_in = &itv->vbi.in.fmt.sliced;
|
itv->vbi.sliced_in = &itv->vbi.in.fmt.sliced;
|
||||||
|
|
||||||
|
/* Init the sg table for osd/yuv output */
|
||||||
|
sg_init_table(itv->udma.SGlist, IVTV_DMA_SG_OSD_ENT);
|
||||||
|
|
||||||
/* OSD */
|
/* OSD */
|
||||||
itv->osd_global_alpha_state = 1;
|
itv->osd_global_alpha_state = 1;
|
||||||
itv->osd_global_alpha = 255;
|
itv->osd_global_alpha = 255;
|
||||||
|
@ -1053,9 +1055,6 @@ static int __devinit ivtv_probe(struct pci_dev *dev,
|
||||||
goto free_io;
|
goto free_io;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check yuv output filter table */
|
|
||||||
if (itv->has_cx23415) ivtv_yuv_filter_check(itv);
|
|
||||||
|
|
||||||
ivtv_gpio_init(itv);
|
ivtv_gpio_init(itv);
|
||||||
|
|
||||||
/* active i2c */
|
/* active i2c */
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "ivtv-driver.h"
|
#include "ivtv-driver.h"
|
||||||
#include "ivtv-mailbox.h"
|
#include "ivtv-mailbox.h"
|
||||||
#include "ivtv-firmware.h"
|
#include "ivtv-firmware.h"
|
||||||
|
#include "ivtv-yuv.h"
|
||||||
#include <linux/firmware.h>
|
#include <linux/firmware.h>
|
||||||
|
|
||||||
#define IVTV_MASK_SPU_ENABLE 0xFFFFFFFE
|
#define IVTV_MASK_SPU_ENABLE 0xFFFFFFFE
|
||||||
|
@ -225,11 +226,14 @@ int ivtv_firmware_init(struct ivtv *itv)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
itv->dec_mbox.mbox = ivtv_search_mailbox(itv->dec_mem, IVTV_DECODER_SIZE);
|
itv->dec_mbox.mbox = ivtv_search_mailbox(itv->dec_mem, IVTV_DECODER_SIZE);
|
||||||
if (itv->dec_mbox.mbox == NULL)
|
if (itv->dec_mbox.mbox == NULL) {
|
||||||
IVTV_ERR("Decoder mailbox not found\n");
|
IVTV_ERR("Decoder mailbox not found\n");
|
||||||
else if (itv->has_cx23415 && ivtv_vapi(itv, CX2341X_DEC_PING_FW, 0)) {
|
} else if (itv->has_cx23415 && ivtv_vapi(itv, CX2341X_DEC_PING_FW, 0)) {
|
||||||
IVTV_ERR("Decoder firmware dead!\n");
|
IVTV_ERR("Decoder firmware dead!\n");
|
||||||
itv->dec_mbox.mbox = NULL;
|
itv->dec_mbox.mbox = NULL;
|
||||||
|
} else {
|
||||||
|
/* Firmware okay, so check yuv output filter table */
|
||||||
|
ivtv_yuv_filter_check(itv);
|
||||||
}
|
}
|
||||||
return itv->dec_mbox.mbox ? 0 : -ENODEV;
|
return itv->dec_mbox.mbox ? 0 : -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2484,27 +2484,28 @@ struct saa7134_board saa7134_boards[] = {
|
||||||
.tuner_addr = ADDR_UNSET,
|
.tuner_addr = ADDR_UNSET,
|
||||||
.radio_addr = ADDR_UNSET,
|
.radio_addr = ADDR_UNSET,
|
||||||
.gpiomask = 0x080200000,
|
.gpiomask = 0x080200000,
|
||||||
.inputs = {{
|
.inputs = { {
|
||||||
.name = name_tv,
|
.name = name_tv,
|
||||||
.vmux = 4,
|
.vmux = 4,
|
||||||
.amux = TV,
|
.amux = TV,
|
||||||
.tv = 1,
|
.tv = 1,
|
||||||
},{
|
}, {
|
||||||
.name = name_comp1,
|
.name = name_comp1,
|
||||||
.vmux = 1,
|
.vmux = 1,
|
||||||
.amux = LINE2,
|
.amux = LINE2,
|
||||||
},{
|
}, {
|
||||||
.name = name_comp2,
|
.name = name_comp2,
|
||||||
.vmux = 0,
|
.vmux = 0,
|
||||||
.amux = LINE2,
|
.amux = LINE2,
|
||||||
},{
|
}, {
|
||||||
.name = name_svideo,
|
.name = name_svideo,
|
||||||
.vmux = 8,
|
.vmux = 8,
|
||||||
.amux = LINE2,
|
.amux = LINE2,
|
||||||
}},
|
} },
|
||||||
.radio = {
|
.radio = {
|
||||||
.name = name_radio,
|
.name = name_radio,
|
||||||
.amux = LINE1,
|
.amux = TV,
|
||||||
|
.gpio = 0x0200000,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
[SAA7134_BOARD_ASUSTeK_P7131_DUAL] = {
|
[SAA7134_BOARD_ASUSTeK_P7131_DUAL] = {
|
||||||
|
|
|
@ -1022,12 +1022,13 @@ static int __devinit saa7134_initdev(struct pci_dev *pci_dev,
|
||||||
saa7134_i2c_register(dev);
|
saa7134_i2c_register(dev);
|
||||||
|
|
||||||
/* initialize hardware #2 */
|
/* initialize hardware #2 */
|
||||||
|
if (TUNER_ABSENT != dev->tuner_type)
|
||||||
|
request_module("tuner");
|
||||||
saa7134_board_init2(dev);
|
saa7134_board_init2(dev);
|
||||||
|
|
||||||
saa7134_hwinit2(dev);
|
saa7134_hwinit2(dev);
|
||||||
|
|
||||||
/* load i2c helpers */
|
/* load i2c helpers */
|
||||||
if (TUNER_ABSENT != dev->tuner_type)
|
|
||||||
request_module("tuner");
|
|
||||||
if (card_is_empress(dev)) {
|
if (card_is_empress(dev)) {
|
||||||
request_module("saa6752hs");
|
request_module("saa6752hs");
|
||||||
}
|
}
|
||||||
|
|
|
@ -672,7 +672,7 @@ static int tvp5150_set_vbi(struct i2c_client *c,
|
||||||
if (std == V4L2_STD_ALL) {
|
if (std == V4L2_STD_ALL) {
|
||||||
tvp5150_err("VBI can't be configured without knowing number of lines\n");
|
tvp5150_err("VBI can't be configured without knowing number of lines\n");
|
||||||
return 0;
|
return 0;
|
||||||
} else if (std && V4L2_STD_625_50) {
|
} else if (std & V4L2_STD_625_50) {
|
||||||
/* Don't follow NTSC Line number convension */
|
/* Don't follow NTSC Line number convension */
|
||||||
line += 3;
|
line += 3;
|
||||||
}
|
}
|
||||||
|
@ -719,7 +719,7 @@ static int tvp5150_get_vbi(struct i2c_client *c,
|
||||||
if (std == V4L2_STD_ALL) {
|
if (std == V4L2_STD_ALL) {
|
||||||
tvp5150_err("VBI can't be configured without knowing number of lines\n");
|
tvp5150_err("VBI can't be configured without knowing number of lines\n");
|
||||||
return 0;
|
return 0;
|
||||||
} else if (std && V4L2_STD_625_50) {
|
} else if (std & V4L2_STD_625_50) {
|
||||||
/* Don't follow NTSC Line number convension */
|
/* Don't follow NTSC Line number convension */
|
||||||
line += 3;
|
line += 3;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1034,6 +1034,11 @@ int usbvideo_RegisterVideoDevice(struct uvd *uvd)
|
||||||
info("%s: iface=%d. endpoint=$%02x paletteBits=$%08lx",
|
info("%s: iface=%d. endpoint=$%02x paletteBits=$%08lx",
|
||||||
__FUNCTION__, uvd->iface, uvd->video_endp, uvd->paletteBits);
|
__FUNCTION__, uvd->iface, uvd->video_endp, uvd->paletteBits);
|
||||||
}
|
}
|
||||||
|
if (uvd->dev == NULL) {
|
||||||
|
err("%s: uvd->dev == NULL", __FUNCTION__);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
uvd->vdev.dev=&(uvd->dev->dev);
|
||||||
if (video_register_device(&uvd->vdev, VFL_TYPE_GRABBER, video_nr) == -1) {
|
if (video_register_device(&uvd->vdev, VFL_TYPE_GRABBER, video_nr) == -1) {
|
||||||
err("%s: video_register_device failed", __FUNCTION__);
|
err("%s: video_register_device failed", __FUNCTION__);
|
||||||
return -EPIPE;
|
return -EPIPE;
|
||||||
|
@ -1041,10 +1046,6 @@ int usbvideo_RegisterVideoDevice(struct uvd *uvd)
|
||||||
if (uvd->debug > 1) {
|
if (uvd->debug > 1) {
|
||||||
info("%s: video_register_device() successful", __FUNCTION__);
|
info("%s: video_register_device() successful", __FUNCTION__);
|
||||||
}
|
}
|
||||||
if (uvd->dev == NULL) {
|
|
||||||
err("%s: uvd->dev == NULL", __FUNCTION__);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
info("%s on /dev/video%d: canvas=%s videosize=%s",
|
info("%s on /dev/video%d: canvas=%s videosize=%s",
|
||||||
(uvd->handle != NULL) ? uvd->handle->drvName : "???",
|
(uvd->handle != NULL) ? uvd->handle->drvName : "???",
|
||||||
|
|
|
@ -303,7 +303,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
|
||||||
{
|
{
|
||||||
struct video_capability *cap = arg;
|
struct video_capability *cap = arg;
|
||||||
|
|
||||||
cap2 = kzalloc(sizeof(*cap2),GFP_KERNEL);
|
cap2 = kzalloc(sizeof(*cap2), GFP_KERNEL);
|
||||||
|
if (!cap2) {
|
||||||
|
err = -ENOMEM;
|
||||||
|
break;
|
||||||
|
}
|
||||||
memset(cap, 0, sizeof(*cap));
|
memset(cap, 0, sizeof(*cap));
|
||||||
memset(&fbuf2, 0, sizeof(fbuf2));
|
memset(&fbuf2, 0, sizeof(fbuf2));
|
||||||
|
|
||||||
|
@ -426,7 +430,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
|
||||||
{
|
{
|
||||||
struct video_window *win = arg;
|
struct video_window *win = arg;
|
||||||
|
|
||||||
fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL);
|
fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
|
||||||
|
if (!fmt2) {
|
||||||
|
err = -ENOMEM;
|
||||||
|
break;
|
||||||
|
}
|
||||||
memset(win,0,sizeof(*win));
|
memset(win,0,sizeof(*win));
|
||||||
|
|
||||||
fmt2->type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
|
fmt2->type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
|
||||||
|
@ -464,7 +472,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
|
||||||
struct video_window *win = arg;
|
struct video_window *win = arg;
|
||||||
int err1,err2;
|
int err1,err2;
|
||||||
|
|
||||||
fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL);
|
fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
|
||||||
|
if (!fmt2) {
|
||||||
|
err = -ENOMEM;
|
||||||
|
break;
|
||||||
|
}
|
||||||
fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
drv(inode, file, VIDIOC_STREAMOFF, &fmt2->type);
|
drv(inode, file, VIDIOC_STREAMOFF, &fmt2->type);
|
||||||
err1 = drv(inode, file, VIDIOC_G_FMT, fmt2);
|
err1 = drv(inode, file, VIDIOC_G_FMT, fmt2);
|
||||||
|
@ -586,6 +598,12 @@ v4l_compat_translate_ioctl(struct inode *inode,
|
||||||
{
|
{
|
||||||
struct video_picture *pict = arg;
|
struct video_picture *pict = arg;
|
||||||
|
|
||||||
|
fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
|
||||||
|
if (!fmt2) {
|
||||||
|
err = -ENOMEM;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
pict->brightness = get_v4l_control(inode, file,
|
pict->brightness = get_v4l_control(inode, file,
|
||||||
V4L2_CID_BRIGHTNESS,drv);
|
V4L2_CID_BRIGHTNESS,drv);
|
||||||
pict->hue = get_v4l_control(inode, file,
|
pict->hue = get_v4l_control(inode, file,
|
||||||
|
@ -597,7 +615,6 @@ v4l_compat_translate_ioctl(struct inode *inode,
|
||||||
pict->whiteness = get_v4l_control(inode, file,
|
pict->whiteness = get_v4l_control(inode, file,
|
||||||
V4L2_CID_WHITENESS, drv);
|
V4L2_CID_WHITENESS, drv);
|
||||||
|
|
||||||
fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL);
|
|
||||||
fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
err = drv(inode, file, VIDIOC_G_FMT, fmt2);
|
err = drv(inode, file, VIDIOC_G_FMT, fmt2);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
|
@ -617,6 +634,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
|
||||||
struct video_picture *pict = arg;
|
struct video_picture *pict = arg;
|
||||||
int mem_err = 0, ovl_err = 0;
|
int mem_err = 0, ovl_err = 0;
|
||||||
|
|
||||||
|
fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
|
||||||
|
if (!fmt2) {
|
||||||
|
err = -ENOMEM;
|
||||||
|
break;
|
||||||
|
}
|
||||||
memset(&fbuf2, 0, sizeof(fbuf2));
|
memset(&fbuf2, 0, sizeof(fbuf2));
|
||||||
|
|
||||||
set_v4l_control(inode, file,
|
set_v4l_control(inode, file,
|
||||||
|
@ -636,7 +658,6 @@ v4l_compat_translate_ioctl(struct inode *inode,
|
||||||
* different pixel formats for memory vs overlay.
|
* different pixel formats for memory vs overlay.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL);
|
|
||||||
fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
err = drv(inode, file, VIDIOC_G_FMT, fmt2);
|
err = drv(inode, file, VIDIOC_G_FMT, fmt2);
|
||||||
/* If VIDIOC_G_FMT failed, then the driver likely doesn't
|
/* If VIDIOC_G_FMT failed, then the driver likely doesn't
|
||||||
|
@ -890,7 +911,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
|
||||||
{
|
{
|
||||||
struct video_mmap *mm = arg;
|
struct video_mmap *mm = arg;
|
||||||
|
|
||||||
fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL);
|
fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
|
||||||
|
if (!fmt2) {
|
||||||
|
err = -ENOMEM;
|
||||||
|
break;
|
||||||
|
}
|
||||||
memset(&buf2,0,sizeof(buf2));
|
memset(&buf2,0,sizeof(buf2));
|
||||||
|
|
||||||
fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
|
@ -986,7 +1011,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
|
||||||
{
|
{
|
||||||
struct vbi_format *fmt = arg;
|
struct vbi_format *fmt = arg;
|
||||||
|
|
||||||
fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL);
|
fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
|
||||||
|
if (!fmt2) {
|
||||||
|
err = -ENOMEM;
|
||||||
|
break;
|
||||||
|
}
|
||||||
fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE;
|
fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE;
|
||||||
|
|
||||||
err = drv(inode, file, VIDIOC_G_FMT, fmt2);
|
err = drv(inode, file, VIDIOC_G_FMT, fmt2);
|
||||||
|
@ -1018,8 +1047,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL);
|
fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
|
||||||
|
if (!fmt2) {
|
||||||
|
err = -ENOMEM;
|
||||||
|
break;
|
||||||
|
}
|
||||||
fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE;
|
fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE;
|
||||||
fmt2->fmt.vbi.samples_per_line = fmt->samples_per_line;
|
fmt2->fmt.vbi.samples_per_line = fmt->samples_per_line;
|
||||||
fmt2->fmt.vbi.sampling_rate = fmt->sampling_rate;
|
fmt2->fmt.vbi.sampling_rate = fmt->sampling_rate;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче