diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c
index a2c0794..fd64058 100644
--- a/drivers/media/video/em28xx/em28xx-cards.c
+++ b/drivers/media/video/em28xx/em28xx-cards.c
@@ -52,7 +52,6 @@
 		.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 @@
 		.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 @@
 	[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 @@
 	[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 @@
 	[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 @@
 	[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 @@
 	[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 @@
 	[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 @@
 	[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 @@
 		.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 @@
 		.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 @@
 		.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 @@
 	[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 @@
 		.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/drivers/media/video/em28xx/em28xx-i2c.c b/drivers/media/video/em28xx/em28xx-i2c.c
index acd853d..cacd04d 100644
--- a/drivers/media/video/em28xx/em28xx-i2c.c
+++ b/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/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
index c4db1ae..c2901f1 100644
--- a/drivers/media/video/em28xx/em28xx-video.c
+++ b/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>
 #include <linux/mutex.h>
 
 #include "em28xx.h"
@@ -77,29 +76,6 @@
 /* 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 @@
 	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 @@
 	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 @@
 		(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 @@
 	.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 @@
 {
 	struct em28xx *dev = *devhandle;
 	int retval = -ENOMEM;
-	int errCode, i;
+	int errCode;
 	unsigned int maxh, maxw;
 
 	dev->udev = udev;
@@ -1694,15 +1656,8 @@
 	/* 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 @@
 	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 @@
 	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);
 
diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h
index f355075..8d04586 100644
--- a/drivers/media/video/em28xx/em28xx.h
+++ b/drivers/media/video/em28xx/em28xx.h
@@ -167,7 +167,6 @@
 struct em28xx_board {
 	char *name;
 	int vchannels;
-	int norm;
 	int tuner_type;
 
 	/* i2c flags */
@@ -203,14 +202,6 @@
 	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 @@
 	/* 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 @@
 /*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
