aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/pvrusb2
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/pvrusb2')
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-audio.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-audio.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-context.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-context.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-ctrl.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-ctrl.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-debug.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-debugifc.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-debugifc.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-devattr.c11
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-devattr.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-eeprom.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-eeprom.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-encoder.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-encoder.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-fx2-cmd.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-hdw.c75
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-hdw.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-i2c-core.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-i2c-core.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-io.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-io.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-ioread.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-ioread.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-main.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-std.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-std.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-sysfs.c461
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-sysfs.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-tuner.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-tuner.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-util.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-v4l2.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-v4l2.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-video-v4l.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-video-v4l.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-wm8775.c1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-wm8775.h1
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2.h1
45 files changed, 179 insertions, 410 deletions
diff --git a/drivers/media/video/pvrusb2/pvrusb2-audio.c b/drivers/media/video/pvrusb2/pvrusb2-audio.c
index 8d859ccd48ec..cdedaa55f152 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-audio.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-audio.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-audio.h b/drivers/media/video/pvrusb2/pvrusb2-audio.h
index 536339b68843..ac54eed3721b 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-audio.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-audio.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-context.c b/drivers/media/video/pvrusb2/pvrusb2-context.c
index 73dcb1c57ae6..7c19ff72e6b3 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-context.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-context.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * $Id$
3 * 2 *
4 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 3 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
5 * 4 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-context.h b/drivers/media/video/pvrusb2/pvrusb2-context.h
index 745e270233c2..61801291c2af 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-context.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-context.h
@@ -1,5 +1,4 @@
1/* 1/*
2 * $Id$
3 * 2 *
4 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 3 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
5 * 4 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-ctrl.c b/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
index 91a42f2473a7..0764fbfffb73 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-ctrl.h b/drivers/media/video/pvrusb2/pvrusb2-ctrl.h
index c1680053cd64..0371ae6e6e4e 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-ctrl.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-ctrl.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
index 29d50597c88a..895859ec495a 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.h b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.h
index 54b2844e7a71..66abf77f51fd 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-debug.h b/drivers/media/video/pvrusb2/pvrusb2-debug.h
index 707d2d9635d7..be79249f8628 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-debug.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-debug.h
@@ -1,5 +1,4 @@
1/* 1/*
2 * $Id$
3 * 2 *
4 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 3 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
5 * 4 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-debugifc.c b/drivers/media/video/pvrusb2/pvrusb2-debugifc.c
index b53121c78ff9..ca892fb78a5b 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-debugifc.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-debugifc.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-debugifc.h b/drivers/media/video/pvrusb2/pvrusb2-debugifc.h
index 990b02d35d36..e24ff59f8605 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-debugifc.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-debugifc.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c
index 5bf6d8fda1f9..5d036e7e3f07 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2007 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2007 Mike Isely <isely@pobox.com>
6 * 5 *
@@ -182,7 +181,7 @@ static int pvr2_lgh06xf_attach(struct pvr2_dvb_adapter *adap)
182 return 0; 181 return 0;
183} 182}
184 183
185struct pvr2_dvb_props pvr2_onair_creator_fe_props = { 184static struct pvr2_dvb_props pvr2_onair_creator_fe_props = {
186 .frontend_attach = pvr2_lgdt3303_attach, 185 .frontend_attach = pvr2_lgdt3303_attach,
187 .tuner_attach = pvr2_lgh06xf_attach, 186 .tuner_attach = pvr2_lgh06xf_attach,
188}; 187};
@@ -242,7 +241,7 @@ static int pvr2_fcv1236d_attach(struct pvr2_dvb_adapter *adap)
242 return 0; 241 return 0;
243} 242}
244 243
245struct pvr2_dvb_props pvr2_onair_usb2_fe_props = { 244static struct pvr2_dvb_props pvr2_onair_usb2_fe_props = {
246 .frontend_attach = pvr2_lgdt3302_attach, 245 .frontend_attach = pvr2_lgdt3302_attach,
247 .tuner_attach = pvr2_fcv1236d_attach, 246 .tuner_attach = pvr2_fcv1236d_attach,
248}; 247};
@@ -315,7 +314,7 @@ static int pvr2_73xxx_tda18271_8295_attach(struct pvr2_dvb_adapter *adap)
315 return 0; 314 return 0;
316} 315}
317 316
318struct pvr2_dvb_props pvr2_73xxx_dvb_props = { 317static struct pvr2_dvb_props pvr2_73xxx_dvb_props = {
319 .frontend_attach = pvr2_tda10048_attach, 318 .frontend_attach = pvr2_tda10048_attach,
320 .tuner_attach = pvr2_73xxx_tda18271_8295_attach, 319 .tuner_attach = pvr2_73xxx_tda18271_8295_attach,
321}; 320};
@@ -418,12 +417,12 @@ static int pvr2_tda18271_8295_attach(struct pvr2_dvb_adapter *adap)
418 return 0; 417 return 0;
419} 418}
420 419
421struct pvr2_dvb_props pvr2_750xx_dvb_props = { 420static struct pvr2_dvb_props pvr2_750xx_dvb_props = {
422 .frontend_attach = pvr2_s5h1409_attach, 421 .frontend_attach = pvr2_s5h1409_attach,
423 .tuner_attach = pvr2_tda18271_8295_attach, 422 .tuner_attach = pvr2_tda18271_8295_attach,
424}; 423};
425 424
426struct pvr2_dvb_props pvr2_751xx_dvb_props = { 425static struct pvr2_dvb_props pvr2_751xx_dvb_props = {
427 .frontend_attach = pvr2_s5h1411_attach, 426 .frontend_attach = pvr2_s5h1411_attach,
428 .tuner_attach = pvr2_tda18271_8295_attach, 427 .tuner_attach = pvr2_tda18271_8295_attach,
429}; 428};
diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.h b/drivers/media/video/pvrusb2/pvrusb2-devattr.h
index d016f8b6c70b..e23ce1d2edd7 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-devattr.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-eeprom.c b/drivers/media/video/pvrusb2/pvrusb2-eeprom.c
index 5ef005947b04..299afa4fa969 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-eeprom.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-eeprom.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-eeprom.h b/drivers/media/video/pvrusb2/pvrusb2-eeprom.h
index 84242975dea7..cca3216f94cc 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-eeprom.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-eeprom.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-encoder.c b/drivers/media/video/pvrusb2/pvrusb2-encoder.c
index c46d367f7472..a1252d673b41 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-encoder.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-encoder.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-encoder.h b/drivers/media/video/pvrusb2/pvrusb2-encoder.h
index 54caf2e3c428..232fefbcd1ac 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-encoder.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-encoder.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-fx2-cmd.h b/drivers/media/video/pvrusb2/pvrusb2-fx2-cmd.h
index abaada31e66e..b58369e7f30b 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-fx2-cmd.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-fx2-cmd.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2007 Michael Krufky <mkrufky@linuxtv.org> 4 * Copyright (C) 2007 Michael Krufky <mkrufky@linuxtv.org>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
index a3fe251d6fd9..657f861593b3 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 0a868888f389..a5217a2cf4c0 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
@@ -40,6 +39,23 @@
40#define TV_MIN_FREQ 55250000L 39#define TV_MIN_FREQ 55250000L
41#define TV_MAX_FREQ 850000000L 40#define TV_MAX_FREQ 850000000L
42 41
42/* This defines a minimum interval that the decoder must remain quiet
43 before we are allowed to start it running. */
44#define TIME_MSEC_DECODER_WAIT 50
45
46/* This defines a minimum interval that the encoder must remain quiet
47 before we are allowed to configure it. I had this originally set to
48 50msec, but Martin Dauskardt <martin.dauskardt@gmx.de> reports that
49 things work better when it's set to 100msec. */
50#define TIME_MSEC_ENCODER_WAIT 100
51
52/* This defines the minimum interval that the encoder must successfully run
53 before we consider that the encoder has run at least once since its
54 firmware has been loaded. This measurement is in important for cases
55 where we can't do something until we know that the encoder has been run
56 at least once. */
57#define TIME_MSEC_ENCODER_OK 250
58
43static struct pvr2_hdw *unit_pointers[PVR_NUM] = {[ 0 ... PVR_NUM-1 ] = NULL}; 59static struct pvr2_hdw *unit_pointers[PVR_NUM] = {[ 0 ... PVR_NUM-1 ] = NULL};
44static DEFINE_MUTEX(pvr2_unit_mtx); 60static DEFINE_MUTEX(pvr2_unit_mtx);
45 61
@@ -67,6 +83,16 @@ MODULE_PARM_DESC(video_std,"specify initial video standard");
67module_param_array(tolerance, int, NULL, 0444); 83module_param_array(tolerance, int, NULL, 0444);
68MODULE_PARM_DESC(tolerance,"specify stream error tolerance"); 84MODULE_PARM_DESC(tolerance,"specify stream error tolerance");
69 85
86/* US Broadcast channel 7 (175.25 MHz) */
87static int default_tv_freq = 175250000L;
88/* 104.3 MHz, a usable FM station for my area */
89static int default_radio_freq = 104300000L;
90
91module_param_named(tv_freq, default_tv_freq, int, 0444);
92MODULE_PARM_DESC(tv_freq, "specify initial television frequency");
93module_param_named(radio_freq, default_radio_freq, int, 0444);
94MODULE_PARM_DESC(radio_freq, "specify initial radio frequency");
95
70#define PVR2_CTL_WRITE_ENDPOINT 0x01 96#define PVR2_CTL_WRITE_ENDPOINT 0x01
71#define PVR2_CTL_READ_ENDPOINT 0x81 97#define PVR2_CTL_READ_ENDPOINT 0x81
72 98
@@ -1701,10 +1727,8 @@ static void pvr2_hdw_setup_low(struct pvr2_hdw *hdw)
1701 are, but I set them to something usable in the Chicago area just 1727 are, but I set them to something usable in the Chicago area just
1702 to make driver testing a little easier. */ 1728 to make driver testing a little easier. */
1703 1729
1704 /* US Broadcast channel 7 (175.25 MHz) */ 1730 hdw->freqValTelevision = default_tv_freq;
1705 hdw->freqValTelevision = 175250000L; 1731 hdw->freqValRadio = default_radio_freq;
1706 /* 104.3 MHz, a usable FM station for my area */
1707 hdw->freqValRadio = 104300000L;
1708 1732
1709 // Do not use pvr2_reset_ctl_endpoints() here. It is not 1733 // Do not use pvr2_reset_ctl_endpoints() here. It is not
1710 // thread-safe against the normal pvr2_send_request() mechanism. 1734 // thread-safe against the normal pvr2_send_request() mechanism.
@@ -1989,7 +2013,8 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface *intf,
1989 case V4L2_CTRL_TYPE_MENU: 2013 case V4L2_CTRL_TYPE_MENU:
1990 ciptr->type = pvr2_ctl_enum; 2014 ciptr->type = pvr2_ctl_enum;
1991 ciptr->def.type_enum.value_names = 2015 ciptr->def.type_enum.value_names =
1992 cx2341x_ctrl_get_menu(ciptr->v4l_id); 2016 cx2341x_ctrl_get_menu(&hdw->enc_ctl_state,
2017 ciptr->v4l_id);
1993 for (cnt1 = 0; 2018 for (cnt1 = 0;
1994 ciptr->def.type_enum.value_names[cnt1] != NULL; 2019 ciptr->def.type_enum.value_names[cnt1] != NULL;
1995 cnt1++) { } 2020 cnt1++) { }
@@ -2428,22 +2453,38 @@ static int pvr2_hdw_commit_execute(struct pvr2_hdw *hdw)
2428 struct pvr2_ctrl *cptr; 2453 struct pvr2_ctrl *cptr;
2429 int disruptive_change; 2454 int disruptive_change;
2430 2455
2431 /* When video standard changes, reset the hres and vres values - 2456 /* Handle some required side effects when the video standard is
2432 but if the user has pending changes there, then let the changes 2457 changed.... */
2433 take priority. */
2434 if (hdw->std_dirty) { 2458 if (hdw->std_dirty) {
2435 /* Rewrite the vertical resolution to be appropriate to the
2436 video standard that has been selected. */
2437 int nvres; 2459 int nvres;
2460 int gop_size;
2438 if (hdw->std_mask_cur & V4L2_STD_525_60) { 2461 if (hdw->std_mask_cur & V4L2_STD_525_60) {
2439 nvres = 480; 2462 nvres = 480;
2463 gop_size = 15;
2440 } else { 2464 } else {
2441 nvres = 576; 2465 nvres = 576;
2466 gop_size = 12;
2442 } 2467 }
2468 /* Rewrite the vertical resolution to be appropriate to the
2469 video standard that has been selected. */
2443 if (nvres != hdw->res_ver_val) { 2470 if (nvres != hdw->res_ver_val) {
2444 hdw->res_ver_val = nvres; 2471 hdw->res_ver_val = nvres;
2445 hdw->res_ver_dirty = !0; 2472 hdw->res_ver_dirty = !0;
2446 } 2473 }
2474 /* Rewrite the GOP size to be appropriate to the video
2475 standard that has been selected. */
2476 if (gop_size != hdw->enc_ctl_state.video_gop_size) {
2477 struct v4l2_ext_controls cs;
2478 struct v4l2_ext_control c1;
2479 memset(&cs, 0, sizeof(cs));
2480 memset(&c1, 0, sizeof(c1));
2481 cs.controls = &c1;
2482 cs.count = 1;
2483 c1.id = V4L2_CID_MPEG_VIDEO_GOP_SIZE;
2484 c1.value = gop_size;
2485 cx2341x_ext_ctrls(&hdw->enc_ctl_state, 0, &cs,
2486 VIDIOC_S_EXT_CTRLS);
2487 }
2447 } 2488 }
2448 2489
2449 if (hdw->input_dirty && hdw->state_pathway_ok && 2490 if (hdw->input_dirty && hdw->state_pathway_ok &&
@@ -3421,7 +3462,7 @@ static void pvr2_hdw_cmd_modeswitch(struct pvr2_hdw *hdw,int digitalFl)
3421} 3462}
3422 3463
3423 3464
3424void pvr2_led_ctrl_hauppauge(struct pvr2_hdw *hdw, int onoff) 3465static void pvr2_led_ctrl_hauppauge(struct pvr2_hdw *hdw, int onoff)
3425{ 3466{
3426 /* change some GPIO data 3467 /* change some GPIO data
3427 * 3468 *
@@ -3601,7 +3642,9 @@ static int state_eval_encoder_config(struct pvr2_hdw *hdw)
3601 the encoder. */ 3642 the encoder. */
3602 if (!hdw->state_encoder_waitok) { 3643 if (!hdw->state_encoder_waitok) {
3603 hdw->encoder_wait_timer.expires = 3644 hdw->encoder_wait_timer.expires =
3604 jiffies + (HZ*50/1000); 3645 jiffies +
3646 (HZ * TIME_MSEC_ENCODER_WAIT
3647 / 1000);
3605 add_timer(&hdw->encoder_wait_timer); 3648 add_timer(&hdw->encoder_wait_timer);
3606 } 3649 }
3607 } 3650 }
@@ -3725,7 +3768,7 @@ static int state_eval_encoder_run(struct pvr2_hdw *hdw)
3725 hdw->state_encoder_run = !0; 3768 hdw->state_encoder_run = !0;
3726 if (!hdw->state_encoder_runok) { 3769 if (!hdw->state_encoder_runok) {
3727 hdw->encoder_run_timer.expires = 3770 hdw->encoder_run_timer.expires =
3728 jiffies + (HZ*250/1000); 3771 jiffies + (HZ * TIME_MSEC_ENCODER_OK / 1000);
3729 add_timer(&hdw->encoder_run_timer); 3772 add_timer(&hdw->encoder_run_timer);
3730 } 3773 }
3731 } 3774 }
@@ -3800,7 +3843,9 @@ static int state_eval_decoder_run(struct pvr2_hdw *hdw)
3800 but before we did the pending check. */ 3843 but before we did the pending check. */
3801 if (!hdw->state_decoder_quiescent) { 3844 if (!hdw->state_decoder_quiescent) {
3802 hdw->quiescent_timer.expires = 3845 hdw->quiescent_timer.expires =
3803 jiffies + (HZ*50/1000); 3846 jiffies +
3847 (HZ * TIME_MSEC_DECODER_WAIT
3848 / 1000);
3804 add_timer(&hdw->quiescent_timer); 3849 add_timer(&hdw->quiescent_timer);
3805 } 3850 }
3806 } 3851 }
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.h b/drivers/media/video/pvrusb2/pvrusb2-hdw.h
index 20295e0c1995..c04956d304a7 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c b/drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c
index 49773764383b..ccdb429fc7af 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
index c650e02ccd00..55f04a0b2047 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.h b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.h
index c838df6167f9..7fa38683b3b1 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c b/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c
index 793c89a8d672..9d3c18b24744 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-core.h b/drivers/media/video/pvrusb2/pvrusb2-i2c-core.h
index bd0807b905bb..6ef7a1c0e935 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-core.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-core.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-io.c b/drivers/media/video/pvrusb2/pvrusb2-io.c
index 7aff8b720064..20b6ae0bb40d 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-io.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-io.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-io.h b/drivers/media/video/pvrusb2/pvrusb2-io.h
index 42fcf8281a87..afb7e87c0394 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-io.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-io.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-ioread.c b/drivers/media/video/pvrusb2/pvrusb2-ioread.c
index c572212c9f15..05a1376405e7 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-ioread.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-ioread.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-ioread.h b/drivers/media/video/pvrusb2/pvrusb2-ioread.h
index 1d362f833588..100e0780e1aa 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-ioread.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-ioread.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-main.c b/drivers/media/video/pvrusb2/pvrusb2-main.c
index 332aced8a5a1..ad0d98c2ebb4 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-main.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-main.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-std.c b/drivers/media/video/pvrusb2/pvrusb2-std.c
index fdc5a2b49ca8..ca9f83a85ca5 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-std.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-std.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-std.h b/drivers/media/video/pvrusb2/pvrusb2-std.h
index 07c399375341..a35c53d0b320 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-std.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-std.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c
index 0ff7a836a8a2..46a8c39ba030 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
@@ -71,6 +70,7 @@ struct pvr2_sysfs_ctl_item {
71 struct device_attribute attr_val; 70 struct device_attribute attr_val;
72 struct device_attribute attr_custom; 71 struct device_attribute attr_custom;
73 struct pvr2_ctrl *cptr; 72 struct pvr2_ctrl *cptr;
73 int ctl_id;
74 struct pvr2_sysfs *chptr; 74 struct pvr2_sysfs *chptr;
75 struct pvr2_sysfs_ctl_item *item_next; 75 struct pvr2_sysfs_ctl_item *item_next;
76 struct attribute *attr_gen[7]; 76 struct attribute *attr_gen[7];
@@ -83,38 +83,29 @@ struct pvr2_sysfs_class {
83 struct class class; 83 struct class class;
84}; 84};
85 85
86static ssize_t show_name(int id,struct device *class_dev,char *buf) 86static ssize_t show_name(struct device *class_dev,
87 struct device_attribute *attr,
88 char *buf)
87{ 89{
88 struct pvr2_ctrl *cptr; 90 struct pvr2_sysfs_ctl_item *cip;
89 struct pvr2_sysfs *sfp;
90 const char *name; 91 const char *name;
91 92 cip = container_of(attr, struct pvr2_sysfs_ctl_item, attr_name);
92 sfp = (struct pvr2_sysfs *)class_dev->driver_data; 93 name = pvr2_ctrl_get_desc(cip->cptr);
93 if (!sfp) return -EINVAL; 94 pvr2_sysfs_trace("pvr2_sysfs(%p) show_name(cid=%d) is %s",
94 cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,id); 95 cip->chptr, cip->ctl_id, name);
95 if (!cptr) return -EINVAL;
96
97 name = pvr2_ctrl_get_desc(cptr);
98 pvr2_sysfs_trace("pvr2_sysfs(%p) show_name(cid=%d) is %s",sfp,id,name);
99
100 if (!name) return -EINVAL; 96 if (!name) return -EINVAL;
101 97 return scnprintf(buf, PAGE_SIZE, "%s\n", name);
102 return scnprintf(buf,PAGE_SIZE,"%s\n",name);
103} 98}
104 99
105static ssize_t show_type(int id,struct device *class_dev,char *buf) 100static ssize_t show_type(struct device *class_dev,
101 struct device_attribute *attr,
102 char *buf)
106{ 103{
107 struct pvr2_ctrl *cptr; 104 struct pvr2_sysfs_ctl_item *cip;
108 struct pvr2_sysfs *sfp;
109 const char *name; 105 const char *name;
110 enum pvr2_ctl_type tp; 106 enum pvr2_ctl_type tp;
111 107 cip = container_of(attr, struct pvr2_sysfs_ctl_item, attr_type);
112 sfp = (struct pvr2_sysfs *)class_dev->driver_data; 108 tp = pvr2_ctrl_get_type(cip->cptr);
113 if (!sfp) return -EINVAL;
114 cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,id);
115 if (!cptr) return -EINVAL;
116
117 tp = pvr2_ctrl_get_type(cptr);
118 switch (tp) { 109 switch (tp) {
119 case pvr2_ctl_int: name = "integer"; break; 110 case pvr2_ctl_int: name = "integer"; break;
120 case pvr2_ctl_enum: name = "enum"; break; 111 case pvr2_ctl_enum: name = "enum"; break;
@@ -122,403 +113,178 @@ static ssize_t show_type(int id,struct device *class_dev,char *buf)
122 case pvr2_ctl_bool: name = "boolean"; break; 113 case pvr2_ctl_bool: name = "boolean"; break;
123 default: name = "?"; break; 114 default: name = "?"; break;
124 } 115 }
125 pvr2_sysfs_trace("pvr2_sysfs(%p) show_type(cid=%d) is %s",sfp,id,name); 116 pvr2_sysfs_trace("pvr2_sysfs(%p) show_type(cid=%d) is %s",
126 117 cip->chptr, cip->ctl_id, name);
127 if (!name) return -EINVAL; 118 if (!name) return -EINVAL;
128 119 return scnprintf(buf, PAGE_SIZE, "%s\n", name);
129 return scnprintf(buf,PAGE_SIZE,"%s\n",name);
130} 120}
131 121
132static ssize_t show_min(int id,struct device *class_dev,char *buf) 122static ssize_t show_min(struct device *class_dev,
123 struct device_attribute *attr,
124 char *buf)
133{ 125{
134 struct pvr2_ctrl *cptr; 126 struct pvr2_sysfs_ctl_item *cip;
135 struct pvr2_sysfs *sfp;
136 long val; 127 long val;
137 128 cip = container_of(attr, struct pvr2_sysfs_ctl_item, attr_min);
138 sfp = (struct pvr2_sysfs *)class_dev->driver_data; 129 val = pvr2_ctrl_get_min(cip->cptr);
139 if (!sfp) return -EINVAL; 130 pvr2_sysfs_trace("pvr2_sysfs(%p) show_min(cid=%d) is %ld",
140 cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,id); 131 cip->chptr, cip->ctl_id, val);
141 if (!cptr) return -EINVAL; 132 return scnprintf(buf, PAGE_SIZE, "%ld\n", val);
142 val = pvr2_ctrl_get_min(cptr);
143
144 pvr2_sysfs_trace("pvr2_sysfs(%p) show_min(cid=%d) is %ld",sfp,id,val);
145
146 return scnprintf(buf,PAGE_SIZE,"%ld\n",val);
147} 133}
148 134
149static ssize_t show_max(int id,struct device *class_dev,char *buf) 135static ssize_t show_max(struct device *class_dev,
136 struct device_attribute *attr,
137 char *buf)
150{ 138{
151 struct pvr2_ctrl *cptr; 139 struct pvr2_sysfs_ctl_item *cip;
152 struct pvr2_sysfs *sfp;
153 long val; 140 long val;
154 141 cip = container_of(attr, struct pvr2_sysfs_ctl_item, attr_max);
155 sfp = (struct pvr2_sysfs *)class_dev->driver_data; 142 val = pvr2_ctrl_get_max(cip->cptr);
156 if (!sfp) return -EINVAL; 143 pvr2_sysfs_trace("pvr2_sysfs(%p) show_max(cid=%d) is %ld",
157 cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,id); 144 cip->chptr, cip->ctl_id, val);
158 if (!cptr) return -EINVAL; 145 return scnprintf(buf, PAGE_SIZE, "%ld\n", val);
159 val = pvr2_ctrl_get_max(cptr);
160
161 pvr2_sysfs_trace("pvr2_sysfs(%p) show_max(cid=%d) is %ld",sfp,id,val);
162
163 return scnprintf(buf,PAGE_SIZE,"%ld\n",val);
164} 146}
165 147
166static ssize_t show_val_norm(int id,struct device *class_dev,char *buf) 148static ssize_t show_val_norm(struct device *class_dev,
149 struct device_attribute *attr,
150 char *buf)
167{ 151{
168 struct pvr2_ctrl *cptr; 152 struct pvr2_sysfs_ctl_item *cip;
169 struct pvr2_sysfs *sfp; 153 int val;
170 int val,ret; 154 int ret;
171 unsigned int cnt = 0; 155 unsigned int cnt = 0;
172 156 cip = container_of(attr, struct pvr2_sysfs_ctl_item, attr_val);
173 sfp = (struct pvr2_sysfs *)class_dev->driver_data; 157 ret = pvr2_ctrl_get_value(cip->cptr, &val);
174 if (!sfp) return -EINVAL;
175 cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,id);
176 if (!cptr) return -EINVAL;
177
178 ret = pvr2_ctrl_get_value(cptr,&val);
179 if (ret < 0) return ret; 158 if (ret < 0) return ret;
180 159 ret = pvr2_ctrl_value_to_sym(cip->cptr, ~0, val,
181 ret = pvr2_ctrl_value_to_sym(cptr,~0,val, 160 buf, PAGE_SIZE - 1, &cnt);
182 buf,PAGE_SIZE-1,&cnt);
183
184 pvr2_sysfs_trace("pvr2_sysfs(%p) show_val_norm(cid=%d) is %.*s (%d)", 161 pvr2_sysfs_trace("pvr2_sysfs(%p) show_val_norm(cid=%d) is %.*s (%d)",
185 sfp,id,cnt,buf,val); 162 cip->chptr, cip->ctl_id, cnt, buf, val);
186 buf[cnt] = '\n'; 163 buf[cnt] = '\n';
187 return cnt+1; 164 return cnt+1;
188} 165}
189 166
190static ssize_t show_val_custom(int id,struct device *class_dev,char *buf) 167static ssize_t show_val_custom(struct device *class_dev,
168 struct device_attribute *attr,
169 char *buf)
191{ 170{
192 struct pvr2_ctrl *cptr; 171 struct pvr2_sysfs_ctl_item *cip;
193 struct pvr2_sysfs *sfp; 172 int val;
194 int val,ret; 173 int ret;
195 unsigned int cnt = 0; 174 unsigned int cnt = 0;
196 175 cip = container_of(attr, struct pvr2_sysfs_ctl_item, attr_custom);
197 sfp = (struct pvr2_sysfs *)class_dev->driver_data; 176 ret = pvr2_ctrl_get_value(cip->cptr, &val);
198 if (!sfp) return -EINVAL;
199 cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,id);
200 if (!cptr) return -EINVAL;
201
202 ret = pvr2_ctrl_get_value(cptr,&val);
203 if (ret < 0) return ret; 177 if (ret < 0) return ret;
204 178 ret = pvr2_ctrl_custom_value_to_sym(cip->cptr, ~0, val,
205 ret = pvr2_ctrl_custom_value_to_sym(cptr,~0,val, 179 buf, PAGE_SIZE - 1, &cnt);
206 buf,PAGE_SIZE-1,&cnt);
207
208 pvr2_sysfs_trace("pvr2_sysfs(%p) show_val_custom(cid=%d) is %.*s (%d)", 180 pvr2_sysfs_trace("pvr2_sysfs(%p) show_val_custom(cid=%d) is %.*s (%d)",
209 sfp,id,cnt,buf,val); 181 cip->chptr, cip->ctl_id, cnt, buf, val);
210 buf[cnt] = '\n'; 182 buf[cnt] = '\n';
211 return cnt+1; 183 return cnt+1;
212} 184}
213 185
214static ssize_t show_enum(int id,struct device *class_dev,char *buf) 186static ssize_t show_enum(struct device *class_dev,
187 struct device_attribute *attr,
188 char *buf)
215{ 189{
216 struct pvr2_ctrl *cptr; 190 struct pvr2_sysfs_ctl_item *cip;
217 struct pvr2_sysfs *sfp;
218 long val; 191 long val;
219 unsigned int bcnt,ccnt,ecnt; 192 unsigned int bcnt, ccnt, ecnt;
220 193 cip = container_of(attr, struct pvr2_sysfs_ctl_item, attr_enum);
221 sfp = (struct pvr2_sysfs *)class_dev->driver_data; 194 ecnt = pvr2_ctrl_get_cnt(cip->cptr);
222 if (!sfp) return -EINVAL;
223 cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,id);
224 if (!cptr) return -EINVAL;
225 ecnt = pvr2_ctrl_get_cnt(cptr);
226 bcnt = 0; 195 bcnt = 0;
227 for (val = 0; val < ecnt; val++) { 196 for (val = 0; val < ecnt; val++) {
228 pvr2_ctrl_get_valname(cptr,val,buf+bcnt,PAGE_SIZE-bcnt,&ccnt); 197 pvr2_ctrl_get_valname(cip->cptr, val, buf + bcnt,
198 PAGE_SIZE - bcnt, &ccnt);
229 if (!ccnt) continue; 199 if (!ccnt) continue;
230 bcnt += ccnt; 200 bcnt += ccnt;
231 if (bcnt >= PAGE_SIZE) break; 201 if (bcnt >= PAGE_SIZE) break;
232 buf[bcnt] = '\n'; 202 buf[bcnt] = '\n';
233 bcnt++; 203 bcnt++;
234 } 204 }
235 pvr2_sysfs_trace("pvr2_sysfs(%p) show_enum(cid=%d)",sfp,id); 205 pvr2_sysfs_trace("pvr2_sysfs(%p) show_enum(cid=%d)",
206 cip->chptr, cip->ctl_id);
236 return bcnt; 207 return bcnt;
237} 208}
238 209
239static ssize_t show_bits(int id,struct device *class_dev,char *buf) 210static ssize_t show_bits(struct device *class_dev,
211 struct device_attribute *attr,
212 char *buf)
240{ 213{
241 struct pvr2_ctrl *cptr; 214 struct pvr2_sysfs_ctl_item *cip;
242 struct pvr2_sysfs *sfp; 215 int valid_bits, msk;
243 int valid_bits,msk; 216 unsigned int bcnt, ccnt;
244 unsigned int bcnt,ccnt; 217 cip = container_of(attr, struct pvr2_sysfs_ctl_item, attr_bits);
245 218 valid_bits = pvr2_ctrl_get_mask(cip->cptr);
246 sfp = (struct pvr2_sysfs *)class_dev->driver_data;
247 if (!sfp) return -EINVAL;
248 cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,id);
249 if (!cptr) return -EINVAL;
250 valid_bits = pvr2_ctrl_get_mask(cptr);
251 bcnt = 0; 219 bcnt = 0;
252 for (msk = 1; valid_bits; msk <<= 1) { 220 for (msk = 1; valid_bits; msk <<= 1) {
253 if (!(msk & valid_bits)) continue; 221 if (!(msk & valid_bits)) continue;
254 valid_bits &= ~msk; 222 valid_bits &= ~msk;
255 pvr2_ctrl_get_valname(cptr,msk,buf+bcnt,PAGE_SIZE-bcnt,&ccnt); 223 pvr2_ctrl_get_valname(cip->cptr, msk, buf + bcnt,
224 PAGE_SIZE - bcnt, &ccnt);
256 bcnt += ccnt; 225 bcnt += ccnt;
257 if (bcnt >= PAGE_SIZE) break; 226 if (bcnt >= PAGE_SIZE) break;
258 buf[bcnt] = '\n'; 227 buf[bcnt] = '\n';
259 bcnt++; 228 bcnt++;
260 } 229 }
261 pvr2_sysfs_trace("pvr2_sysfs(%p) show_bits(cid=%d)",sfp,id); 230 pvr2_sysfs_trace("pvr2_sysfs(%p) show_bits(cid=%d)",
231 cip->chptr, cip->ctl_id);
262 return bcnt; 232 return bcnt;
263} 233}
264 234
265static int store_val_any(int id,int customfl,struct pvr2_sysfs *sfp, 235static int store_val_any(struct pvr2_sysfs_ctl_item *cip, int customfl,
266 const char *buf,unsigned int count) 236 const char *buf,unsigned int count)
267{ 237{
268 struct pvr2_ctrl *cptr;
269 int ret; 238 int ret;
270 int mask,val; 239 int mask,val;
271
272 cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,id);
273 if (customfl) { 240 if (customfl) {
274 ret = pvr2_ctrl_custom_sym_to_value(cptr,buf,count,&mask,&val); 241 ret = pvr2_ctrl_custom_sym_to_value(cip->cptr, buf, count,
242 &mask, &val);
275 } else { 243 } else {
276 ret = pvr2_ctrl_sym_to_value(cptr,buf,count,&mask,&val); 244 ret = pvr2_ctrl_sym_to_value(cip->cptr, buf, count,
245 &mask, &val);
277 } 246 }
278 if (ret < 0) return ret; 247 if (ret < 0) return ret;
279 ret = pvr2_ctrl_set_mask_value(cptr,mask,val); 248 ret = pvr2_ctrl_set_mask_value(cip->cptr, mask, val);
280 pvr2_hdw_commit_ctl(sfp->channel.hdw); 249 pvr2_hdw_commit_ctl(cip->chptr->channel.hdw);
281 return ret; 250 return ret;
282} 251}
283 252
284static ssize_t store_val_norm(int id,struct device *class_dev, 253static ssize_t store_val_norm(struct device *class_dev,
285 const char *buf,size_t count) 254 struct device_attribute *attr,
255 const char *buf, size_t count)
286{ 256{
287 struct pvr2_sysfs *sfp; 257 struct pvr2_sysfs_ctl_item *cip;
288 int ret; 258 int ret;
289 sfp = (struct pvr2_sysfs *)class_dev->driver_data; 259 cip = container_of(attr, struct pvr2_sysfs_ctl_item, attr_val);
290 pvr2_sysfs_trace("pvr2_sysfs(%p) store_val_norm(cid=%d) \"%.*s\"", 260 pvr2_sysfs_trace("pvr2_sysfs(%p) store_val_norm(cid=%d) \"%.*s\"",
291 sfp,id,(int)count,buf); 261 cip->chptr, cip->ctl_id, (int)count, buf);
292 ret = store_val_any(id,0,sfp,buf,count); 262 ret = store_val_any(cip, 0, buf, count);
293 if (!ret) ret = count; 263 if (!ret) ret = count;
294 return ret; 264 return ret;
295} 265}
296 266
297static ssize_t store_val_custom(int id,struct device *class_dev, 267static ssize_t store_val_custom(struct device *class_dev,
298 const char *buf,size_t count) 268 struct device_attribute *attr,
269 const char *buf, size_t count)
299{ 270{
300 struct pvr2_sysfs *sfp; 271 struct pvr2_sysfs_ctl_item *cip;
301 int ret; 272 int ret;
302 sfp = (struct pvr2_sysfs *)class_dev->driver_data; 273 cip = container_of(attr, struct pvr2_sysfs_ctl_item, attr_custom);
303 pvr2_sysfs_trace("pvr2_sysfs(%p) store_val_custom(cid=%d) \"%.*s\"", 274 pvr2_sysfs_trace("pvr2_sysfs(%p) store_val_custom(cid=%d) \"%.*s\"",
304 sfp,id,(int)count,buf); 275 cip->chptr, cip->ctl_id, (int)count, buf);
305 ret = store_val_any(id,1,sfp,buf,count); 276 ret = store_val_any(cip, 1, buf, count);
306 if (!ret) ret = count; 277 if (!ret) ret = count;
307 return ret; 278 return ret;
308} 279}
309 280
310/*
311 Mike Isely <isely@pobox.com> 30-April-2005
312
313 This next batch of horrible preprocessor hackery is needed because the
314 kernel's device_attribute mechanism fails to pass the actual
315 attribute through to the show / store functions, which means we have no
316 way to package up any attribute-specific parameters, like for example the
317 control id. So we work around this brain-damage by encoding the control
318 id into the show / store functions themselves and pick the function based
319 on the control id we're setting up. These macros try to ease the pain.
320 Yuck.
321*/
322
323#define CREATE_SHOW_INSTANCE(sf_name,ctl_id) \
324static ssize_t sf_name##_##ctl_id(struct device *class_dev, \
325struct device_attribute *attr, char *buf) \
326{ return sf_name(ctl_id,class_dev,buf); }
327
328#define CREATE_STORE_INSTANCE(sf_name,ctl_id) \
329static ssize_t sf_name##_##ctl_id(struct device *class_dev, \
330struct device_attribute *attr, const char *buf, size_t count) \
331{ return sf_name(ctl_id,class_dev,buf,count); }
332
333#define CREATE_BATCH(ctl_id) \
334CREATE_SHOW_INSTANCE(show_name,ctl_id) \
335CREATE_SHOW_INSTANCE(show_type,ctl_id) \
336CREATE_SHOW_INSTANCE(show_min,ctl_id) \
337CREATE_SHOW_INSTANCE(show_max,ctl_id) \
338CREATE_SHOW_INSTANCE(show_val_norm,ctl_id) \
339CREATE_SHOW_INSTANCE(show_val_custom,ctl_id) \
340CREATE_SHOW_INSTANCE(show_enum,ctl_id) \
341CREATE_SHOW_INSTANCE(show_bits,ctl_id) \
342CREATE_STORE_INSTANCE(store_val_norm,ctl_id) \
343CREATE_STORE_INSTANCE(store_val_custom,ctl_id) \
344
345CREATE_BATCH(0)
346CREATE_BATCH(1)
347CREATE_BATCH(2)
348CREATE_BATCH(3)
349CREATE_BATCH(4)
350CREATE_BATCH(5)
351CREATE_BATCH(6)
352CREATE_BATCH(7)
353CREATE_BATCH(8)
354CREATE_BATCH(9)
355CREATE_BATCH(10)
356CREATE_BATCH(11)
357CREATE_BATCH(12)
358CREATE_BATCH(13)
359CREATE_BATCH(14)
360CREATE_BATCH(15)
361CREATE_BATCH(16)
362CREATE_BATCH(17)
363CREATE_BATCH(18)
364CREATE_BATCH(19)
365CREATE_BATCH(20)
366CREATE_BATCH(21)
367CREATE_BATCH(22)
368CREATE_BATCH(23)
369CREATE_BATCH(24)
370CREATE_BATCH(25)
371CREATE_BATCH(26)
372CREATE_BATCH(27)
373CREATE_BATCH(28)
374CREATE_BATCH(29)
375CREATE_BATCH(30)
376CREATE_BATCH(31)
377CREATE_BATCH(32)
378CREATE_BATCH(33)
379CREATE_BATCH(34)
380CREATE_BATCH(35)
381CREATE_BATCH(36)
382CREATE_BATCH(37)
383CREATE_BATCH(38)
384CREATE_BATCH(39)
385CREATE_BATCH(40)
386CREATE_BATCH(41)
387CREATE_BATCH(42)
388CREATE_BATCH(43)
389CREATE_BATCH(44)
390CREATE_BATCH(45)
391CREATE_BATCH(46)
392CREATE_BATCH(47)
393CREATE_BATCH(48)
394CREATE_BATCH(49)
395CREATE_BATCH(50)
396CREATE_BATCH(51)
397CREATE_BATCH(52)
398CREATE_BATCH(53)
399CREATE_BATCH(54)
400CREATE_BATCH(55)
401CREATE_BATCH(56)
402CREATE_BATCH(57)
403CREATE_BATCH(58)
404CREATE_BATCH(59)
405
406struct pvr2_sysfs_func_set {
407 ssize_t (*show_name)(struct device *,
408 struct device_attribute *attr, char *);
409 ssize_t (*show_type)(struct device *,
410 struct device_attribute *attr, char *);
411 ssize_t (*show_min)(struct device *,
412 struct device_attribute *attr, char *);
413 ssize_t (*show_max)(struct device *,
414 struct device_attribute *attr, char *);
415 ssize_t (*show_enum)(struct device *,
416 struct device_attribute *attr, char *);
417 ssize_t (*show_bits)(struct device *,
418 struct device_attribute *attr, char *);
419 ssize_t (*show_val_norm)(struct device *,
420 struct device_attribute *attr, char *);
421 ssize_t (*store_val_norm)(struct device *,
422 struct device_attribute *attr,
423 const char *,size_t);
424 ssize_t (*show_val_custom)(struct device *,
425 struct device_attribute *attr, char *);
426 ssize_t (*store_val_custom)(struct device *,
427 struct device_attribute *attr,
428 const char *,size_t);
429};
430
431#define INIT_BATCH(ctl_id) \
432[ctl_id] = { \
433 .show_name = show_name_##ctl_id, \
434 .show_type = show_type_##ctl_id, \
435 .show_min = show_min_##ctl_id, \
436 .show_max = show_max_##ctl_id, \
437 .show_enum = show_enum_##ctl_id, \
438 .show_bits = show_bits_##ctl_id, \
439 .show_val_norm = show_val_norm_##ctl_id, \
440 .store_val_norm = store_val_norm_##ctl_id, \
441 .show_val_custom = show_val_custom_##ctl_id, \
442 .store_val_custom = store_val_custom_##ctl_id, \
443} \
444
445static struct pvr2_sysfs_func_set funcs[] = {
446 INIT_BATCH(0),
447 INIT_BATCH(1),
448 INIT_BATCH(2),
449 INIT_BATCH(3),
450 INIT_BATCH(4),
451 INIT_BATCH(5),
452 INIT_BATCH(6),
453 INIT_BATCH(7),
454 INIT_BATCH(8),
455 INIT_BATCH(9),
456 INIT_BATCH(10),
457 INIT_BATCH(11),
458 INIT_BATCH(12),
459 INIT_BATCH(13),
460 INIT_BATCH(14),
461 INIT_BATCH(15),
462 INIT_BATCH(16),
463 INIT_BATCH(17),
464 INIT_BATCH(18),
465 INIT_BATCH(19),
466 INIT_BATCH(20),
467 INIT_BATCH(21),
468 INIT_BATCH(22),
469 INIT_BATCH(23),
470 INIT_BATCH(24),
471 INIT_BATCH(25),
472 INIT_BATCH(26),
473 INIT_BATCH(27),
474 INIT_BATCH(28),
475 INIT_BATCH(29),
476 INIT_BATCH(30),
477 INIT_BATCH(31),
478 INIT_BATCH(32),
479 INIT_BATCH(33),
480 INIT_BATCH(34),
481 INIT_BATCH(35),
482 INIT_BATCH(36),
483 INIT_BATCH(37),
484 INIT_BATCH(38),
485 INIT_BATCH(39),
486 INIT_BATCH(40),
487 INIT_BATCH(41),
488 INIT_BATCH(42),
489 INIT_BATCH(43),
490 INIT_BATCH(44),
491 INIT_BATCH(45),
492 INIT_BATCH(46),
493 INIT_BATCH(47),
494 INIT_BATCH(48),
495 INIT_BATCH(49),
496 INIT_BATCH(50),
497 INIT_BATCH(51),
498 INIT_BATCH(52),
499 INIT_BATCH(53),
500 INIT_BATCH(54),
501 INIT_BATCH(55),
502 INIT_BATCH(56),
503 INIT_BATCH(57),
504 INIT_BATCH(58),
505 INIT_BATCH(59),
506};
507
508
509static void pvr2_sysfs_add_control(struct pvr2_sysfs *sfp,int ctl_id) 281static void pvr2_sysfs_add_control(struct pvr2_sysfs *sfp,int ctl_id)
510{ 282{
511 struct pvr2_sysfs_ctl_item *cip; 283 struct pvr2_sysfs_ctl_item *cip;
512 struct pvr2_sysfs_func_set *fp;
513 struct pvr2_ctrl *cptr; 284 struct pvr2_ctrl *cptr;
514 unsigned int cnt,acnt; 285 unsigned int cnt,acnt;
515 int ret; 286 int ret;
516 287
517 if ((ctl_id < 0) || (ctl_id >= ARRAY_SIZE(funcs))) {
518 return;
519 }
520
521 fp = funcs + ctl_id;
522 cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,ctl_id); 288 cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,ctl_id);
523 if (!cptr) return; 289 if (!cptr) return;
524 290
@@ -527,6 +293,7 @@ static void pvr2_sysfs_add_control(struct pvr2_sysfs *sfp,int ctl_id)
527 pvr2_sysfs_trace("Creating pvr2_sysfs_ctl_item id=%p",cip); 293 pvr2_sysfs_trace("Creating pvr2_sysfs_ctl_item id=%p",cip);
528 294
529 cip->cptr = cptr; 295 cip->cptr = cptr;
296 cip->ctl_id = ctl_id;
530 297
531 cip->chptr = sfp; 298 cip->chptr = sfp;
532 cip->item_next = NULL; 299 cip->item_next = NULL;
@@ -539,19 +306,19 @@ static void pvr2_sysfs_add_control(struct pvr2_sysfs *sfp,int ctl_id)
539 306
540 cip->attr_name.attr.name = "name"; 307 cip->attr_name.attr.name = "name";
541 cip->attr_name.attr.mode = S_IRUGO; 308 cip->attr_name.attr.mode = S_IRUGO;
542 cip->attr_name.show = fp->show_name; 309 cip->attr_name.show = show_name;
543 310
544 cip->attr_type.attr.name = "type"; 311 cip->attr_type.attr.name = "type";
545 cip->attr_type.attr.mode = S_IRUGO; 312 cip->attr_type.attr.mode = S_IRUGO;
546 cip->attr_type.show = fp->show_type; 313 cip->attr_type.show = show_type;
547 314
548 cip->attr_min.attr.name = "min_val"; 315 cip->attr_min.attr.name = "min_val";
549 cip->attr_min.attr.mode = S_IRUGO; 316 cip->attr_min.attr.mode = S_IRUGO;
550 cip->attr_min.show = fp->show_min; 317 cip->attr_min.show = show_min;
551 318
552 cip->attr_max.attr.name = "max_val"; 319 cip->attr_max.attr.name = "max_val";
553 cip->attr_max.attr.mode = S_IRUGO; 320 cip->attr_max.attr.mode = S_IRUGO;
554 cip->attr_max.show = fp->show_max; 321 cip->attr_max.show = show_max;
555 322
556 cip->attr_val.attr.name = "cur_val"; 323 cip->attr_val.attr.name = "cur_val";
557 cip->attr_val.attr.mode = S_IRUGO; 324 cip->attr_val.attr.mode = S_IRUGO;
@@ -561,11 +328,11 @@ static void pvr2_sysfs_add_control(struct pvr2_sysfs *sfp,int ctl_id)
561 328
562 cip->attr_enum.attr.name = "enum_val"; 329 cip->attr_enum.attr.name = "enum_val";
563 cip->attr_enum.attr.mode = S_IRUGO; 330 cip->attr_enum.attr.mode = S_IRUGO;
564 cip->attr_enum.show = fp->show_enum; 331 cip->attr_enum.show = show_enum;
565 332
566 cip->attr_bits.attr.name = "bit_val"; 333 cip->attr_bits.attr.name = "bit_val";
567 cip->attr_bits.attr.mode = S_IRUGO; 334 cip->attr_bits.attr.mode = S_IRUGO;
568 cip->attr_bits.show = fp->show_bits; 335 cip->attr_bits.show = show_bits;
569 336
570 if (pvr2_ctrl_is_writable(cptr)) { 337 if (pvr2_ctrl_is_writable(cptr)) {
571 cip->attr_val.attr.mode |= S_IWUSR|S_IWGRP; 338 cip->attr_val.attr.mode |= S_IWUSR|S_IWGRP;
@@ -576,12 +343,12 @@ static void pvr2_sysfs_add_control(struct pvr2_sysfs *sfp,int ctl_id)
576 cip->attr_gen[acnt++] = &cip->attr_name.attr; 343 cip->attr_gen[acnt++] = &cip->attr_name.attr;
577 cip->attr_gen[acnt++] = &cip->attr_type.attr; 344 cip->attr_gen[acnt++] = &cip->attr_type.attr;
578 cip->attr_gen[acnt++] = &cip->attr_val.attr; 345 cip->attr_gen[acnt++] = &cip->attr_val.attr;
579 cip->attr_val.show = fp->show_val_norm; 346 cip->attr_val.show = show_val_norm;
580 cip->attr_val.store = fp->store_val_norm; 347 cip->attr_val.store = store_val_norm;
581 if (pvr2_ctrl_has_custom_symbols(cptr)) { 348 if (pvr2_ctrl_has_custom_symbols(cptr)) {
582 cip->attr_gen[acnt++] = &cip->attr_custom.attr; 349 cip->attr_gen[acnt++] = &cip->attr_custom.attr;
583 cip->attr_custom.show = fp->show_val_custom; 350 cip->attr_custom.show = show_val_custom;
584 cip->attr_custom.store = fp->store_val_custom; 351 cip->attr_custom.store = store_val_custom;
585 } 352 }
586 switch (pvr2_ctrl_get_type(cptr)) { 353 switch (pvr2_ctrl_get_type(cptr)) {
587 case pvr2_ctl_enum: 354 case pvr2_ctl_enum:
diff --git a/drivers/media/video/pvrusb2/pvrusb2-sysfs.h b/drivers/media/video/pvrusb2/pvrusb2-sysfs.h
index ff9373b47f8f..6d875bfe7991 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-sysfs.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-sysfs.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-tuner.c b/drivers/media/video/pvrusb2/pvrusb2-tuner.c
index 05e65ce2e3a9..07775d1aad4e 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-tuner.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-tuner.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-tuner.h b/drivers/media/video/pvrusb2/pvrusb2-tuner.h
index 556f12aa9160..ef4afaf37b0a 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-tuner.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-tuner.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-util.h b/drivers/media/video/pvrusb2/pvrusb2-util.h
index e53aee416f56..92b75544ee2e 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-util.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-util.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index e9b5d4e91327..0d72dc470fef 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.h b/drivers/media/video/pvrusb2/pvrusb2-v4l2.h
index 9a995e2d2256..34c011a7b107 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * 5 *
diff --git a/drivers/media/video/pvrusb2/pvrusb2-video-v4l.c b/drivers/media/video/pvrusb2/pvrusb2-video-v4l.c
index 2433a3160041..4059648c7056 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-video-v4l.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-video-v4l.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-video-v4l.h b/drivers/media/video/pvrusb2/pvrusb2-video-v4l.h
index 2b917fda02e4..4ff5b892b303 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-video-v4l.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-video-v4l.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-wm8775.c b/drivers/media/video/pvrusb2/pvrusb2-wm8775.c
index 66b4d36ef765..f6fcf0ac6118 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-wm8775.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-wm8775.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-wm8775.h b/drivers/media/video/pvrusb2/pvrusb2-wm8775.h
index 8aaeff4e1e20..807090961255 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-wm8775.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-wm8775.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
diff --git a/drivers/media/video/pvrusb2/pvrusb2.h b/drivers/media/video/pvrusb2/pvrusb2.h
index 1a9a4baf12b8..240de9b35661 100644
--- a/drivers/media/video/pvrusb2/pvrusb2.h
+++ b/drivers/media/video/pvrusb2/pvrusb2.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 *
3 * $Id$
4 * 3 *
5 * Copyright (C) 2005 Mike Isely <isely@pobox.com> 4 * Copyright (C) 2005 Mike Isely <isely@pobox.com>
6 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr> 5 * Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>