diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-09 22:50:49 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-09 22:50:49 -0500 |
commit | 3e7468313758913c5e4d372f35b271b96bad1298 (patch) | |
tree | eb612d252a9e2349a1173451cd779beebd18a33e /drivers/media/video/davinci | |
parent | 6825fbc4cb219f2c98bb7d157915d797cf5cb823 (diff) | |
parent | e97f4677961f68e29bd906022ebf60a6df7f530a (diff) |
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (345 commits)
V4L/DVB (13542): ir-keytable: Allow dynamic table change
V4L/DVB (13541): atbm8830: replace 64-bit division and floating point usage
V4L/DVB (13540): ir-common: Cleanup get key evdev code
V4L/DVB (13539): ir-common: add __func__ for debug messages
V4L/DVB (13538): ir-common: Use a dynamic keycode table
V4L/DVB (13537): ir: Prepare the code for dynamic keycode table allocation
V4L/DVB (13536): em28xx: Use the full RC5 code on HVR-950 Remote Controller
V4L/DVB (13535): ir-common: Add a hauppauge new table with the complete RC5 code
V4L/DVB (13534): ir-common: Remove some unused fields/structs
V4L/DVB (13533): ir: use dynamic tables, instead of static ones
V4L/DVB (13532): ir-common: Add infrastructure to use a dynamic keycode table
V4L/DVB (13531): ir-common: rename the debug routine to allow exporting it
V4L/DVB (13458): go7007: subdev conversion
V4L/DVB (13457): s2250: subdev conversion
V4L/DVB (13456): s2250: Change module structure
V4L/DVB (13528): em28xx: add support for em2800 VC211A card
em28xx: don't reduce scale to half size for em2800
em28xx: don't load audio modules when AC97 is mis-detected
em28xx: em2800 chips support max width of 640
V4L/DVB (13523): dvb-bt8xx: fix compile warning
...
Fix up trivial conflicts due to spelling fixes from the trivial tree in
Documentation/video4linux/gspca.txt
drivers/media/video/cx18/cx18-mailbox.h
Diffstat (limited to 'drivers/media/video/davinci')
-rw-r--r-- | drivers/media/video/davinci/vpfe_capture.c | 47 |
1 files changed, 42 insertions, 5 deletions
diff --git a/drivers/media/video/davinci/vpfe_capture.c b/drivers/media/video/davinci/vpfe_capture.c index 402ce43ef38e..12a1b3d7132d 100644 --- a/drivers/media/video/davinci/vpfe_capture.c +++ b/drivers/media/video/davinci/vpfe_capture.c | |||
@@ -660,7 +660,7 @@ static void vpfe_detach_irq(struct vpfe_device *vpfe_dev) | |||
660 | 660 | ||
661 | frame_format = ccdc_dev->hw_ops.get_frame_format(); | 661 | frame_format = ccdc_dev->hw_ops.get_frame_format(); |
662 | if (frame_format == CCDC_FRMFMT_PROGRESSIVE) | 662 | if (frame_format == CCDC_FRMFMT_PROGRESSIVE) |
663 | free_irq(IRQ_VDINT1, vpfe_dev); | 663 | free_irq(vpfe_dev->ccdc_irq1, vpfe_dev); |
664 | } | 664 | } |
665 | 665 | ||
666 | static int vpfe_attach_irq(struct vpfe_device *vpfe_dev) | 666 | static int vpfe_attach_irq(struct vpfe_device *vpfe_dev) |
@@ -1338,7 +1338,7 @@ static int vpfe_reqbufs(struct file *file, void *priv, | |||
1338 | vpfe_dev->memory = req_buf->memory; | 1338 | vpfe_dev->memory = req_buf->memory; |
1339 | videobuf_queue_dma_contig_init(&vpfe_dev->buffer_queue, | 1339 | videobuf_queue_dma_contig_init(&vpfe_dev->buffer_queue, |
1340 | &vpfe_videobuf_qops, | 1340 | &vpfe_videobuf_qops, |
1341 | NULL, | 1341 | vpfe_dev->pdev, |
1342 | &vpfe_dev->irqlock, | 1342 | &vpfe_dev->irqlock, |
1343 | req_buf->type, | 1343 | req_buf->type, |
1344 | vpfe_dev->fmt.fmt.pix.field, | 1344 | vpfe_dev->fmt.fmt.pix.field, |
@@ -1413,6 +1413,41 @@ static int vpfe_dqbuf(struct file *file, void *priv, | |||
1413 | buf, file->f_flags & O_NONBLOCK); | 1413 | buf, file->f_flags & O_NONBLOCK); |
1414 | } | 1414 | } |
1415 | 1415 | ||
1416 | static int vpfe_queryctrl(struct file *file, void *priv, | ||
1417 | struct v4l2_queryctrl *qctrl) | ||
1418 | { | ||
1419 | struct vpfe_device *vpfe_dev = video_drvdata(file); | ||
1420 | struct vpfe_subdev_info *sdinfo; | ||
1421 | |||
1422 | sdinfo = vpfe_dev->current_subdev; | ||
1423 | |||
1424 | return v4l2_device_call_until_err(&vpfe_dev->v4l2_dev, sdinfo->grp_id, | ||
1425 | core, queryctrl, qctrl); | ||
1426 | |||
1427 | } | ||
1428 | |||
1429 | static int vpfe_g_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl) | ||
1430 | { | ||
1431 | struct vpfe_device *vpfe_dev = video_drvdata(file); | ||
1432 | struct vpfe_subdev_info *sdinfo; | ||
1433 | |||
1434 | sdinfo = vpfe_dev->current_subdev; | ||
1435 | |||
1436 | return v4l2_device_call_until_err(&vpfe_dev->v4l2_dev, sdinfo->grp_id, | ||
1437 | core, g_ctrl, ctrl); | ||
1438 | } | ||
1439 | |||
1440 | static int vpfe_s_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl) | ||
1441 | { | ||
1442 | struct vpfe_device *vpfe_dev = video_drvdata(file); | ||
1443 | struct vpfe_subdev_info *sdinfo; | ||
1444 | |||
1445 | sdinfo = vpfe_dev->current_subdev; | ||
1446 | |||
1447 | return v4l2_device_call_until_err(&vpfe_dev->v4l2_dev, sdinfo->grp_id, | ||
1448 | core, s_ctrl, ctrl); | ||
1449 | } | ||
1450 | |||
1416 | /* | 1451 | /* |
1417 | * vpfe_calculate_offsets : This function calculates buffers offset | 1452 | * vpfe_calculate_offsets : This function calculates buffers offset |
1418 | * for top and bottom field | 1453 | * for top and bottom field |
@@ -1577,7 +1612,7 @@ static int vpfe_cropcap(struct file *file, void *priv, | |||
1577 | 1612 | ||
1578 | v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_cropcap\n"); | 1613 | v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_cropcap\n"); |
1579 | 1614 | ||
1580 | if (vpfe_dev->std_index > ARRAY_SIZE(vpfe_standards)) | 1615 | if (vpfe_dev->std_index >= ARRAY_SIZE(vpfe_standards)) |
1581 | return -EINVAL; | 1616 | return -EINVAL; |
1582 | 1617 | ||
1583 | memset(crop, 0, sizeof(struct v4l2_cropcap)); | 1618 | memset(crop, 0, sizeof(struct v4l2_cropcap)); |
@@ -1710,6 +1745,9 @@ static const struct v4l2_ioctl_ops vpfe_ioctl_ops = { | |||
1710 | .vidioc_querystd = vpfe_querystd, | 1745 | .vidioc_querystd = vpfe_querystd, |
1711 | .vidioc_s_std = vpfe_s_std, | 1746 | .vidioc_s_std = vpfe_s_std, |
1712 | .vidioc_g_std = vpfe_g_std, | 1747 | .vidioc_g_std = vpfe_g_std, |
1748 | .vidioc_queryctrl = vpfe_queryctrl, | ||
1749 | .vidioc_g_ctrl = vpfe_g_ctrl, | ||
1750 | .vidioc_s_ctrl = vpfe_s_ctrl, | ||
1713 | .vidioc_reqbufs = vpfe_reqbufs, | 1751 | .vidioc_reqbufs = vpfe_reqbufs, |
1714 | .vidioc_querybuf = vpfe_querybuf, | 1752 | .vidioc_querybuf = vpfe_querybuf, |
1715 | .vidioc_qbuf = vpfe_qbuf, | 1753 | .vidioc_qbuf = vpfe_qbuf, |
@@ -1978,8 +2016,7 @@ static __init int vpfe_probe(struct platform_device *pdev) | |||
1978 | platform_set_drvdata(pdev, vpfe_dev); | 2016 | platform_set_drvdata(pdev, vpfe_dev); |
1979 | /* set driver private data */ | 2017 | /* set driver private data */ |
1980 | video_set_drvdata(vpfe_dev->video_dev, vpfe_dev); | 2018 | video_set_drvdata(vpfe_dev->video_dev, vpfe_dev); |
1981 | i2c_adap = i2c_get_adapter(1); | 2019 | i2c_adap = i2c_get_adapter(vpfe_cfg->i2c_adapter_id); |
1982 | vpfe_cfg = pdev->dev.platform_data; | ||
1983 | num_subdevs = vpfe_cfg->num_subdevs; | 2020 | num_subdevs = vpfe_cfg->num_subdevs; |
1984 | vpfe_dev->sd = kmalloc(sizeof(struct v4l2_subdev *) * num_subdevs, | 2021 | vpfe_dev->sd = kmalloc(sizeof(struct v4l2_subdev *) * num_subdevs, |
1985 | GFP_KERNEL); | 2022 | GFP_KERNEL); |