V4L/DVB (6587): Cleanup at tv norm selection
authorMauro Carvalho Chehab <mchehab@infradead.org>
Sun, 11 Nov 2007 17:15:34 +0000 (14:15 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Fri, 25 Jan 2008 21:02:08 +0000 (19:02 -0200)
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>
drivers/media/video/em28xx/em28xx-cards.c
drivers/media/video/em28xx/em28xx-i2c.c
drivers/media/video/em28xx/em28xx-video.c
drivers/media/video/em28xx/em28xx.h

index a2c0794821ba6e24fec7bae641e8cf6b15bf8737..fd64058a04e2553475fc94529b3bdc32998e0d2b 100644 (file)
@@ -52,7 +52,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,
@@ -74,7 +73,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,
@@ -91,7 +89,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,
@@ -113,7 +110,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,
@@ -135,7 +131,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,
@@ -156,7 +151,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,
@@ -178,7 +172,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,
@@ -202,7 +195,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,
@@ -224,7 +216,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,
@@ -247,7 +238,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,
@@ -270,7 +260,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,
@@ -293,7 +282,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,
@@ -315,7 +303,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          = {{
@@ -332,7 +319,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,
index acd853d217eabe103dd888a48ed81e3798a635d1..cacd04d46e99eb85145c9ee5e14ed0cff792bfde 100644 (file)
@@ -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"
index c4db1aebdcd725b71d47f4f738564d8114f159d5..c2901f13eb2583eada0a99ebb8696305e8a0651e 100644 (file)
@@ -33,7 +33,6 @@
 #include <linux/i2c.h>
 #include <linux/version.h>
 #include <linux/mm.h>
-#include <linux/video_decoder.h>
 #include <linux/mutex.h>
 
 #include "em28xx.h"
@@ -77,29 +76,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[] = {
@@ -536,27 +512,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 */
@@ -575,7 +538,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;
@@ -615,8 +578,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;
 }
@@ -1643,7 +1605,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,
 };
 
 
@@ -1658,7 +1620,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;
@@ -1694,15 +1656,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);
@@ -1737,7 +1692,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();
@@ -1754,7 +1708,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);
 
index f355075d50decb9c5d5d433e9d0e37bb1790b703..8d045867dac784c07dfb4cbecb6a24a972610aac 100644 (file)
@@ -167,7 +167,6 @@ enum em28xx_decoder {
 struct em28xx_board {
        char *name;
        int vchannels;
-       int norm;
        int tuner_type;
 
        /* i2c flags */
@@ -203,14 +202,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 */
@@ -239,7 +230,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 */
@@ -522,18 +513,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