diff options
Diffstat (limited to 'drivers/media/video/cx88/cx88-video.c')
-rw-r--r-- | drivers/media/video/cx88/cx88-video.c | 57 |
1 files changed, 28 insertions, 29 deletions
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c index e4ca7350df15..cd5c2615d8c5 100644 --- a/drivers/media/video/cx88/cx88-video.c +++ b/drivers/media/video/cx88/cx88-video.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: cx88-video.c,v 1.63 2005/06/12 04:19:19 mchehab Exp $ | 2 | * $Id: cx88-video.c,v 1.70 2005/06/20 03:36:00 mkrufky Exp $ |
3 | * | 3 | * |
4 | * device driver for Conexant 2388x based TV cards | 4 | * device driver for Conexant 2388x based TV cards |
5 | * video4linux video interface | 5 | * video4linux video interface |
@@ -1351,9 +1351,6 @@ static int video_do_ioctl(struct inode *inode, struct file *file, | |||
1351 | V4L2_CAP_STREAMING | | 1351 | V4L2_CAP_STREAMING | |
1352 | V4L2_CAP_VBI_CAPTURE | | 1352 | V4L2_CAP_VBI_CAPTURE | |
1353 | #if 0 | 1353 | #if 0 |
1354 | V4L2_TUNER_CAP_LOW | | ||
1355 | #endif | ||
1356 | #if 0 | ||
1357 | V4L2_CAP_VIDEO_OVERLAY | | 1354 | V4L2_CAP_VIDEO_OVERLAY | |
1358 | #endif | 1355 | #endif |
1359 | 0; | 1356 | 0; |
@@ -1475,7 +1472,7 @@ static int video_do_ioctl(struct inode *inode, struct file *file, | |||
1475 | } | 1472 | } |
1476 | break; | 1473 | break; |
1477 | case 1: | 1474 | case 1: |
1478 | if (CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD == core->board) { | 1475 | if (CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q == core->board) { |
1479 | strcpy(a->name,"Line In"); | 1476 | strcpy(a->name,"Line In"); |
1480 | a->capability = V4L2_AUDCAP_STEREO; | 1477 | a->capability = V4L2_AUDCAP_STEREO; |
1481 | return 0; | 1478 | return 0; |
@@ -1588,11 +1585,11 @@ static int video_do_ioctl(struct inode *inode, struct file *file, | |||
1588 | { | 1585 | { |
1589 | struct v4l2_frequency *f = arg; | 1586 | struct v4l2_frequency *f = arg; |
1590 | 1587 | ||
1588 | memset(f,0,sizeof(*f)); | ||
1589 | |||
1591 | if (UNSET == core->tuner_type) | 1590 | if (UNSET == core->tuner_type) |
1592 | return -EINVAL; | 1591 | return -EINVAL; |
1593 | if (f->tuner != 0) | 1592 | |
1594 | return -EINVAL; | ||
1595 | memset(f,0,sizeof(*f)); | ||
1596 | f->type = fh->radio ? V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV; | 1593 | f->type = fh->radio ? V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV; |
1597 | f->frequency = dev->freq; | 1594 | f->frequency = dev->freq; |
1598 | return 0; | 1595 | return 0; |
@@ -1612,11 +1609,7 @@ static int video_do_ioctl(struct inode *inode, struct file *file, | |||
1612 | down(&dev->lock); | 1609 | down(&dev->lock); |
1613 | dev->freq = f->frequency; | 1610 | dev->freq = f->frequency; |
1614 | cx88_newstation(core); | 1611 | cx88_newstation(core); |
1615 | #ifdef V4L2_I2C_CLIENTS | ||
1616 | cx88_call_i2c_clients(dev->core,VIDIOC_S_FREQUENCY,f); | 1612 | cx88_call_i2c_clients(dev->core,VIDIOC_S_FREQUENCY,f); |
1617 | #else | ||
1618 | cx88_call_i2c_clients(dev->core,VIDIOCSFREQ,&dev->freq); | ||
1619 | #endif | ||
1620 | up(&dev->lock); | 1613 | up(&dev->lock); |
1621 | return 0; | 1614 | return 0; |
1622 | } | 1615 | } |
@@ -1714,11 +1707,7 @@ static int radio_do_ioctl(struct inode *inode, struct file *file, | |||
1714 | sizeof(cap->card)); | 1707 | sizeof(cap->card)); |
1715 | sprintf(cap->bus_info,"PCI:%s", pci_name(dev->pci)); | 1708 | sprintf(cap->bus_info,"PCI:%s", pci_name(dev->pci)); |
1716 | cap->version = CX88_VERSION_CODE; | 1709 | cap->version = CX88_VERSION_CODE; |
1717 | cap->capabilities = V4L2_CAP_TUNER | 1710 | cap->capabilities = V4L2_CAP_TUNER; |
1718 | #if 0 | ||
1719 | | V4L2_TUNER_CAP_LOW | ||
1720 | #endif | ||
1721 | ; | ||
1722 | return 0; | 1711 | return 0; |
1723 | } | 1712 | } |
1724 | case VIDIOC_G_TUNER: | 1713 | case VIDIOC_G_TUNER: |
@@ -1730,19 +1719,8 @@ static int radio_do_ioctl(struct inode *inode, struct file *file, | |||
1730 | 1719 | ||
1731 | memset(t,0,sizeof(*t)); | 1720 | memset(t,0,sizeof(*t)); |
1732 | strcpy(t->name, "Radio"); | 1721 | strcpy(t->name, "Radio"); |
1733 | t->rangelow = (int)(65*16); | ||
1734 | t->rangehigh = (int)(108*16); | ||
1735 | 1722 | ||
1736 | #ifdef V4L2_I2C_CLIENTS | ||
1737 | cx88_call_i2c_clients(dev->core,VIDIOC_G_TUNER,t); | 1723 | cx88_call_i2c_clients(dev->core,VIDIOC_G_TUNER,t); |
1738 | #else | ||
1739 | { | ||
1740 | struct video_tuner vt; | ||
1741 | memset(&vt,0,sizeof(vt)); | ||
1742 | cx88_call_i2c_clients(dev,VIDIOCGTUNER,&vt); | ||
1743 | t->signal = vt.signal; | ||
1744 | } | ||
1745 | #endif | ||
1746 | return 0; | 1724 | return 0; |
1747 | } | 1725 | } |
1748 | case VIDIOC_ENUMINPUT: | 1726 | case VIDIOC_ENUMINPUT: |
@@ -1775,8 +1753,29 @@ static int radio_do_ioctl(struct inode *inode, struct file *file, | |||
1775 | *id = 0; | 1753 | *id = 0; |
1776 | return 0; | 1754 | return 0; |
1777 | } | 1755 | } |
1778 | case VIDIOC_S_AUDIO: | 1756 | case VIDIOCSTUNER: |
1757 | { | ||
1758 | struct video_tuner *v = arg; | ||
1759 | |||
1760 | if (v->tuner) /* Only tuner 0 */ | ||
1761 | return -EINVAL; | ||
1762 | |||
1763 | cx88_call_i2c_clients(dev->core,VIDIOCSTUNER,v); | ||
1764 | return 0; | ||
1765 | } | ||
1779 | case VIDIOC_S_TUNER: | 1766 | case VIDIOC_S_TUNER: |
1767 | { | ||
1768 | struct v4l2_tuner *t = arg; | ||
1769 | |||
1770 | if (0 != t->index) | ||
1771 | return -EINVAL; | ||
1772 | |||
1773 | cx88_call_i2c_clients(dev->core,VIDIOC_S_TUNER,t); | ||
1774 | |||
1775 | return 0; | ||
1776 | } | ||
1777 | |||
1778 | case VIDIOC_S_AUDIO: | ||
1780 | case VIDIOC_S_INPUT: | 1779 | case VIDIOC_S_INPUT: |
1781 | case VIDIOC_S_STD: | 1780 | case VIDIOC_S_STD: |
1782 | return 0; | 1781 | return 0; |