summaryrefslogtreecommitdiff
path: root/linux
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2007-11-11 15:15:34 -0200
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-11-11 15:15:34 -0200
commit2dd54a5659a70c9519989c05fb1e7ff7da9918a7 (patch)
tree38c3f6a0c65a9f705965fc4852fee6fd556819da /linux
parentf806ed8fea7475b31d01251d475d226ab6115052 (diff)
downloadmediapointer-dvb-s2-2dd54a5659a70c9519989c05fb1e7ff7da9918a7.tar.gz
mediapointer-dvb-s2-2dd54a5659a70c9519989c05fb1e7ff7da9918a7.tar.bz2
Cleanup at tv norm selection
From: Mauro Carvalho Chehab <mchehab@infradead.org> With the conversion to the vidio_ioctl2, tvnorms array is not required anymore. Also, removed some code from V4L1 time (VIDEO_MODE_foo), specied at the non-used video_decoder.h. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'linux')
-rw-r--r--linux/drivers/media/video/em28xx/em28xx-cards.c14
-rw-r--r--linux/drivers/media/video/em28xx/em28xx-i2c.c1
-rw-r--r--linux/drivers/media/video/em28xx/em28xx-video.c61
-rw-r--r--linux/drivers/media/video/em28xx/em28xx.h28
4 files changed, 18 insertions, 86 deletions
diff --git a/linux/drivers/media/video/em28xx/em28xx-cards.c b/linux/drivers/media/video/em28xx/em28xx-cards.c
index b4535c5c0..36aaf7570 100644
--- a/linux/drivers/media/video/em28xx/em28xx-cards.c
+++ b/linux/drivers/media/video/em28xx/em28xx-cards.c
@@ -53,7 +53,6 @@ struct em28xx_board em28xx_boards[] = {
.name = "Unknown EM2800 video grabber",
.is_em2800 = 1,
.vchannels = 2,
- .norm = VIDEO_MODE_PAL,
.tda9887_conf = TDA9887_PRESENT,
.has_tuner = 1,
.decoder = EM28XX_SAA7113,
@@ -75,7 +74,6 @@ struct em28xx_board em28xx_boards[] = {
.name = "Kworld PVR TV 2800 RF",
.is_em2800 = 0,
.vchannels = 2,
- .norm = VIDEO_MODE_PAL,
.tda9887_conf = TDA9887_PRESENT,
.has_tuner = 1,
.decoder = EM28XX_SAA7113,
@@ -92,7 +90,6 @@ struct em28xx_board em28xx_boards[] = {
[EM2820_BOARD_TERRATEC_CINERGY_250] = {
.name = "Terratec Cinergy 250 USB",
.vchannels = 3,
- .norm = VIDEO_MODE_PAL,
.tuner_type = TUNER_LG_PAL_NEW_TAPC,
.tda9887_conf = TDA9887_PRESENT,
.has_tuner = 1,
@@ -114,7 +111,6 @@ struct em28xx_board em28xx_boards[] = {
[EM2820_BOARD_PINNACLE_USB_2] = {
.name = "Pinnacle PCTV USB 2",
.vchannels = 3,
- .norm = VIDEO_MODE_PAL,
.tuner_type = TUNER_LG_PAL_NEW_TAPC,
.tda9887_conf = TDA9887_PRESENT,
.has_tuner = 1,
@@ -136,7 +132,6 @@ struct em28xx_board em28xx_boards[] = {
[EM2820_BOARD_HAUPPAUGE_WINTV_USB_2] = {
.name = "Hauppauge WinTV USB 2",
.vchannels = 3,
- .norm = VIDEO_MODE_NTSC,
.tuner_type = TUNER_PHILIPS_FM1236_MK3,
.tda9887_conf = TDA9887_PRESENT|TDA9887_PORT1_ACTIVE|TDA9887_PORT2_ACTIVE,
.has_tuner = 1,
@@ -157,7 +152,6 @@ struct em28xx_board em28xx_boards[] = {
[EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900] = {
.name = "Hauppauge WinTV HVR 900/950",
.vchannels = 3,
- .norm = VIDEO_MODE_PAL,
.tda9887_conf = TDA9887_PRESENT,
.tuner_type = TUNER_XC2028,
.has_tuner = 1,
@@ -179,7 +173,6 @@ struct em28xx_board em28xx_boards[] = {
[EM2880_BOARD_TERRATEC_HYBRID_XS] = {
.name = "Terratec Hybrid XS",
.vchannels = 3,
- .norm = VIDEO_MODE_PAL,
.tda9887_conf = TDA9887_PRESENT,
.has_tuner = 1,
.tuner_type = TUNER_XC2028,
@@ -203,7 +196,6 @@ struct em28xx_board em28xx_boards[] = {
[EM2880_BOARD_TERRATEC_PRODIGY_XS] = {
.name = "Terratec Prodigy XS",
.vchannels = 3,
- .norm = VIDEO_MODE_PAL,
.tda9887_conf = TDA9887_PRESENT,
.has_tuner = 1,
.tuner_type = TUNER_XC2028,
@@ -225,7 +217,6 @@ struct em28xx_board em28xx_boards[] = {
[EM2820_BOARD_MSI_VOX_USB_2] = {
.name = "MSI VOX USB 2.0",
.vchannels = 3,
- .norm = VIDEO_MODE_PAL,
.tuner_type = TUNER_LG_PAL_NEW_TAPC,
.tda9887_conf = TDA9887_PRESENT|TDA9887_PORT1_ACTIVE|TDA9887_PORT2_ACTIVE,
.has_tuner = 1,
@@ -248,7 +239,6 @@ struct em28xx_board em28xx_boards[] = {
.name = "Terratec Cinergy 200 USB",
.is_em2800 = 1,
.vchannels = 3,
- .norm = VIDEO_MODE_PAL,
.tuner_type = TUNER_LG_PAL_NEW_TAPC,
.tda9887_conf = TDA9887_PRESENT,
.has_tuner = 1,
@@ -271,7 +261,6 @@ struct em28xx_board em28xx_boards[] = {
.name = "Leadtek Winfast USB II",
.is_em2800 = 1,
.vchannels = 3,
- .norm = VIDEO_MODE_PAL,
.tuner_type = TUNER_LG_PAL_NEW_TAPC,
.tda9887_conf = TDA9887_PRESENT,
.has_tuner = 1,
@@ -294,7 +283,6 @@ struct em28xx_board em28xx_boards[] = {
.name = "Kworld USB2800",
.is_em2800 = 1,
.vchannels = 3,
- .norm = VIDEO_MODE_PAL,
.tuner_type = TUNER_PHILIPS_ATSC,
.tda9887_conf = TDA9887_PRESENT,
.has_tuner = 1,
@@ -316,7 +304,6 @@ struct em28xx_board em28xx_boards[] = {
[EM2820_BOARD_PINNACLE_DVC_90] = {
.name = "Pinnacle Dazzle DVC 90",
.vchannels = 3,
- .norm = VIDEO_MODE_PAL,
.has_tuner = 0,
.decoder = EM28XX_SAA7113,
.input = {{
@@ -333,7 +320,6 @@ struct em28xx_board em28xx_boards[] = {
.name = "V-Gear PocketTV",
.is_em2800 = 1,
.vchannels = 3,
- .norm = VIDEO_MODE_PAL,
.tuner_type = TUNER_LG_PAL_NEW_TAPC,
.tda9887_conf = TDA9887_PRESENT,
.has_tuner = 1,
diff --git a/linux/drivers/media/video/em28xx/em28xx-i2c.c b/linux/drivers/media/video/em28xx/em28xx-i2c.c
index 52374fb71..fc59cce34 100644
--- a/linux/drivers/media/video/em28xx/em28xx-i2c.c
+++ b/linux/drivers/media/video/em28xx/em28xx-i2c.c
@@ -25,7 +25,6 @@
#include <linux/kernel.h>
#include <linux/usb.h>
#include <linux/i2c.h>
-#include <linux/video_decoder.h>
#include "em28xx.h"
#include "tuner-xc2028.h"
diff --git a/linux/drivers/media/video/em28xx/em28xx-video.c b/linux/drivers/media/video/em28xx/em28xx-video.c
index 65ff62da2..44621bafc 100644
--- a/linux/drivers/media/video/em28xx/em28xx-video.c
+++ b/linux/drivers/media/video/em28xx/em28xx-video.c
@@ -33,7 +33,6 @@
#include <linux/i2c.h>
#include <linux/version.h>
#include <linux/mm.h>
-#include <linux/video_decoder.h>
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15)
#include <linux/mutex.h>
#endif
@@ -95,29 +94,6 @@ MODULE_PARM_DESC(video_debug,"enable debug messages [video]");
/* Bitmask marking allocated devices from 0 to EM28XX_MAXBOARDS */
static unsigned long em28xx_devused;
-/* supported tv norms */
-static struct em28xx_tvnorm tvnorms[] = {
- {
- .name = "PAL",
- .id = V4L2_STD_PAL,
- .mode = VIDEO_MODE_PAL,
- }, {
- .name = "NTSC",
- .id = V4L2_STD_NTSC,
- .mode = VIDEO_MODE_NTSC,
- }, {
- .name = "SECAM",
- .id = V4L2_STD_SECAM,
- .mode = VIDEO_MODE_SECAM,
- }, {
- .name = "PAL-M",
- .id = V4L2_STD_PAL_M,
- .mode = VIDEO_MODE_PAL,
- }
-};
-
-#define TVNORMS ARRAY_SIZE(tvnorms)
-
/* supported controls */
/* Common to all boards */
static struct v4l2_queryctrl em28xx_qctrl[] = {
@@ -556,27 +532,14 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id *norm)
struct em28xx_fh *fh = priv;
struct em28xx *dev = fh->dev;
struct v4l2_format f;
- unsigned int i;
int rc;
rc = check_dev(dev);
if (rc < 0)
return rc;
- for (i = 0; i < TVNORMS; i++)
- if (*norm == tvnorms[i].id)
- break;
- if (i == TVNORMS)
- for (i = 0; i < TVNORMS; i++)
- if (*norm & tvnorms[i].id)
- break;
- if (i == TVNORMS)
- return -EINVAL;
-
- *norm = tvnorms[i].id;
-
mutex_lock(&dev->lock);
- dev->tvnorm = &tvnorms[i];
+ dev->norm = *norm;
mutex_unlock(&dev->lock);
/* Adjusts width/height, if needed */
@@ -595,7 +558,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id *norm)
get_scale(dev, dev->width, dev->height, &dev->hscale, &dev->vscale);
em28xx_resolution_set(dev);
- em28xx_i2c_call_clients(dev, VIDIOC_S_STD, &dev->tvnorm->id);
+ em28xx_i2c_call_clients(dev, VIDIOC_S_STD, &dev->norm);
mutex_unlock(&dev->lock);
return 0;
@@ -635,8 +598,7 @@ static int vidioc_enum_input(struct file *file, void *priv,
(EM28XX_VMUX_CABLE == INPUT(n)->type))
i->type = V4L2_INPUT_TYPE_TUNER;
- for (n = 0; n < ARRAY_SIZE(tvnorms); n++)
- i->std |= tvnorms[n].id;
+ i->std = dev->vdev->tvnorms;
return 0;
}
@@ -1715,7 +1677,7 @@ static const struct video_device em28xx_video_template = {
.vidioc_s_frequency = vidioc_s_frequency,
.tvnorms = V4L2_STD_ALL,
- .current_norm = V4L2_STD_NTSC_M,
+ .current_norm = V4L2_STD_PAL,
};
@@ -1730,7 +1692,7 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
{
struct em28xx *dev = *devhandle;
int retval = -ENOMEM;
- int errCode, i;
+ int errCode;
unsigned int maxh, maxw;
dev->udev = udev;
@@ -1766,15 +1728,8 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
/* configure the device */
em28xx_config_i2c(dev);
- for (i = 0; i < TVNORMS; i++)
- if (em28xx_boards[dev->model].norm == tvnorms[i].mode)
- break;
- if (i == TVNORMS)
- i = 0;
-
- dev->tvnorm = &tvnorms[i]; /* set default norm */
-
- em28xx_videodbg("tvnorm=%s\n", dev->tvnorm->name);
+ /* set default norm */
+ dev->norm = em28xx_video_template.current_norm;
maxw = norm_maxw(dev);
maxh = norm_maxh(dev);
@@ -1809,7 +1764,6 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
dev->vdev->dev = &dev->udev->dev;
snprintf(dev->vdev->name, sizeof(dev->vbi_dev->name),
"%s#%d %s", "em28xx", dev->devno, "video");
- dev->vdev->current_norm = dev->tvnorm->id;
/* Allocate and fill vbi video_device struct */
dev->vbi_dev = video_device_alloc();
@@ -1826,7 +1780,6 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
dev->vbi_dev->dev = &dev->udev->dev;
snprintf(dev->vbi_dev->name, sizeof(dev->vbi_dev->name),
"%s#%d %s", "em28xx", dev->devno, "vbi");
- dev->vbi_dev->current_norm = dev->tvnorm->id;
list_add_tail(&dev->devlist,&em28xx_devlist);
#if 0
diff --git a/linux/drivers/media/video/em28xx/em28xx.h b/linux/drivers/media/video/em28xx/em28xx.h
index 6677b7f3b..07b7db80d 100644
--- a/linux/drivers/media/video/em28xx/em28xx.h
+++ b/linux/drivers/media/video/em28xx/em28xx.h
@@ -170,7 +170,6 @@ enum em28xx_decoder {
struct em28xx_board {
char *name;
int vchannels;
- int norm;
int tuner_type;
/* i2c flags */
@@ -206,14 +205,6 @@ enum em28xx_dev_state {
DEV_MISCONFIGURED = 0x04,
};
-/* tvnorms */
-struct em28xx_tvnorm {
- char *name;
- v4l2_std_id id;
- /* mode for saa7113h */
- int mode;
-};
-
/* main device struct */
struct em28xx {
/* generic device properties */
@@ -242,7 +233,7 @@ struct em28xx {
/* video for linux */
int users; /* user count for exclusive use */
struct video_device *vdev; /* video for linux device struct */
- struct em28xx_tvnorm *tvnorm; /* selected tv norm */
+ v4l2_std_id norm; /* selected tv norm */
int ctl_freq; /* selected frequency */
unsigned int ctl_input; /* selected input */
unsigned int ctl_ainput; /* slected audio input */
@@ -529,18 +520,21 @@ inline static int em28xx_gamma_set(struct em28xx *dev, s32 val)
/*FIXME: maxw should be dependent of alt mode */
inline static unsigned int norm_maxw(struct em28xx *dev)
{
- switch(dev->model){
- case (EM2820_BOARD_MSI_VOX_USB_2): return(640);
- default: return(720);
+ switch (dev->model) {
+ case EM2820_BOARD_MSI_VOX_USB_2:
+ return 640;
+ default:
+ return 720;
}
}
inline static unsigned int norm_maxh(struct em28xx *dev)
{
- switch(dev->model){
- case (EM2820_BOARD_MSI_VOX_USB_2): return(480);
- default: return (dev->tvnorm->id & V4L2_STD_625_50) ? 576 : 480;
+ switch (dev->model) {
+ case EM2820_BOARD_MSI_VOX_USB_2:
+ return 480;
+ default:
+ return (dev->norm & V4L2_STD_625_50) ? 576 : 480;
}
}
-
#endif