diff options
Diffstat (limited to 'drivers/media/video/pvrusb2')
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 | ||
185 | struct pvr2_dvb_props pvr2_onair_creator_fe_props = { | 184 | static 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 | ||
245 | struct pvr2_dvb_props pvr2_onair_usb2_fe_props = { | 244 | static 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 | ||
318 | struct pvr2_dvb_props pvr2_73xxx_dvb_props = { | 317 | static 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 | ||
421 | struct pvr2_dvb_props pvr2_750xx_dvb_props = { | 420 | static 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 | ||
426 | struct pvr2_dvb_props pvr2_751xx_dvb_props = { | 425 | static 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 | |||
43 | static struct pvr2_hdw *unit_pointers[PVR_NUM] = {[ 0 ... PVR_NUM-1 ] = NULL}; | 59 | static struct pvr2_hdw *unit_pointers[PVR_NUM] = {[ 0 ... PVR_NUM-1 ] = NULL}; |
44 | static DEFINE_MUTEX(pvr2_unit_mtx); | 60 | static DEFINE_MUTEX(pvr2_unit_mtx); |
45 | 61 | ||
@@ -67,6 +83,16 @@ MODULE_PARM_DESC(video_std,"specify initial video standard"); | |||
67 | module_param_array(tolerance, int, NULL, 0444); | 83 | module_param_array(tolerance, int, NULL, 0444); |
68 | MODULE_PARM_DESC(tolerance,"specify stream error tolerance"); | 84 | MODULE_PARM_DESC(tolerance,"specify stream error tolerance"); |
69 | 85 | ||
86 | /* US Broadcast channel 7 (175.25 MHz) */ | ||
87 | static int default_tv_freq = 175250000L; | ||
88 | /* 104.3 MHz, a usable FM station for my area */ | ||
89 | static int default_radio_freq = 104300000L; | ||
90 | |||
91 | module_param_named(tv_freq, default_tv_freq, int, 0444); | ||
92 | MODULE_PARM_DESC(tv_freq, "specify initial television frequency"); | ||
93 | module_param_named(radio_freq, default_radio_freq, int, 0444); | ||
94 | MODULE_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 | ||
3424 | void pvr2_led_ctrl_hauppauge(struct pvr2_hdw *hdw, int onoff) | 3465 | static 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 | ||
86 | static ssize_t show_name(int id,struct device *class_dev,char *buf) | 86 | static 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 | ||
105 | static ssize_t show_type(int id,struct device *class_dev,char *buf) | 100 | static 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 | ||
132 | static ssize_t show_min(int id,struct device *class_dev,char *buf) | 122 | static 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 | ||
149 | static ssize_t show_max(int id,struct device *class_dev,char *buf) | 135 | static 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 | ||
166 | static ssize_t show_val_norm(int id,struct device *class_dev,char *buf) | 148 | static 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 | ||
190 | static ssize_t show_val_custom(int id,struct device *class_dev,char *buf) | 167 | static 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 | ||
214 | static ssize_t show_enum(int id,struct device *class_dev,char *buf) | 186 | static 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 | ||
239 | static ssize_t show_bits(int id,struct device *class_dev,char *buf) | 210 | static 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 | ||
265 | static int store_val_any(int id,int customfl,struct pvr2_sysfs *sfp, | 235 | static 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 | ||
284 | static ssize_t store_val_norm(int id,struct device *class_dev, | 253 | static 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 | ||
297 | static ssize_t store_val_custom(int id,struct device *class_dev, | 267 | static 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) \ | ||
324 | static ssize_t sf_name##_##ctl_id(struct device *class_dev, \ | ||
325 | struct device_attribute *attr, char *buf) \ | ||
326 | { return sf_name(ctl_id,class_dev,buf); } | ||
327 | |||
328 | #define CREATE_STORE_INSTANCE(sf_name,ctl_id) \ | ||
329 | static ssize_t sf_name##_##ctl_id(struct device *class_dev, \ | ||
330 | struct 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) \ | ||
334 | CREATE_SHOW_INSTANCE(show_name,ctl_id) \ | ||
335 | CREATE_SHOW_INSTANCE(show_type,ctl_id) \ | ||
336 | CREATE_SHOW_INSTANCE(show_min,ctl_id) \ | ||
337 | CREATE_SHOW_INSTANCE(show_max,ctl_id) \ | ||
338 | CREATE_SHOW_INSTANCE(show_val_norm,ctl_id) \ | ||
339 | CREATE_SHOW_INSTANCE(show_val_custom,ctl_id) \ | ||
340 | CREATE_SHOW_INSTANCE(show_enum,ctl_id) \ | ||
341 | CREATE_SHOW_INSTANCE(show_bits,ctl_id) \ | ||
342 | CREATE_STORE_INSTANCE(store_val_norm,ctl_id) \ | ||
343 | CREATE_STORE_INSTANCE(store_val_custom,ctl_id) \ | ||
344 | |||
345 | CREATE_BATCH(0) | ||
346 | CREATE_BATCH(1) | ||
347 | CREATE_BATCH(2) | ||
348 | CREATE_BATCH(3) | ||
349 | CREATE_BATCH(4) | ||
350 | CREATE_BATCH(5) | ||
351 | CREATE_BATCH(6) | ||
352 | CREATE_BATCH(7) | ||
353 | CREATE_BATCH(8) | ||
354 | CREATE_BATCH(9) | ||
355 | CREATE_BATCH(10) | ||
356 | CREATE_BATCH(11) | ||
357 | CREATE_BATCH(12) | ||
358 | CREATE_BATCH(13) | ||
359 | CREATE_BATCH(14) | ||
360 | CREATE_BATCH(15) | ||
361 | CREATE_BATCH(16) | ||
362 | CREATE_BATCH(17) | ||
363 | CREATE_BATCH(18) | ||
364 | CREATE_BATCH(19) | ||
365 | CREATE_BATCH(20) | ||
366 | CREATE_BATCH(21) | ||
367 | CREATE_BATCH(22) | ||
368 | CREATE_BATCH(23) | ||
369 | CREATE_BATCH(24) | ||
370 | CREATE_BATCH(25) | ||
371 | CREATE_BATCH(26) | ||
372 | CREATE_BATCH(27) | ||
373 | CREATE_BATCH(28) | ||
374 | CREATE_BATCH(29) | ||
375 | CREATE_BATCH(30) | ||
376 | CREATE_BATCH(31) | ||
377 | CREATE_BATCH(32) | ||
378 | CREATE_BATCH(33) | ||
379 | CREATE_BATCH(34) | ||
380 | CREATE_BATCH(35) | ||
381 | CREATE_BATCH(36) | ||
382 | CREATE_BATCH(37) | ||
383 | CREATE_BATCH(38) | ||
384 | CREATE_BATCH(39) | ||
385 | CREATE_BATCH(40) | ||
386 | CREATE_BATCH(41) | ||
387 | CREATE_BATCH(42) | ||
388 | CREATE_BATCH(43) | ||
389 | CREATE_BATCH(44) | ||
390 | CREATE_BATCH(45) | ||
391 | CREATE_BATCH(46) | ||
392 | CREATE_BATCH(47) | ||
393 | CREATE_BATCH(48) | ||
394 | CREATE_BATCH(49) | ||
395 | CREATE_BATCH(50) | ||
396 | CREATE_BATCH(51) | ||
397 | CREATE_BATCH(52) | ||
398 | CREATE_BATCH(53) | ||
399 | CREATE_BATCH(54) | ||
400 | CREATE_BATCH(55) | ||
401 | CREATE_BATCH(56) | ||
402 | CREATE_BATCH(57) | ||
403 | CREATE_BATCH(58) | ||
404 | CREATE_BATCH(59) | ||
405 | |||
406 | struct 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 | |||
445 | static 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 | |||
509 | static void pvr2_sysfs_add_control(struct pvr2_sysfs *sfp,int ctl_id) | 281 | static 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> |