diff options
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h | 1 | ||||
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-hdw.c | 66 |
2 files changed, 4 insertions, 63 deletions
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h index bc911ff75306..16bd74199601 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h +++ b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h | |||
@@ -318,7 +318,6 @@ struct pvr2_hdw { | |||
318 | VCREATE_DATA(res_hor); | 318 | VCREATE_DATA(res_hor); |
319 | VCREATE_DATA(res_ver); | 319 | VCREATE_DATA(res_ver); |
320 | VCREATE_DATA(srate); | 320 | VCREATE_DATA(srate); |
321 | VCREATE_DATA(automodeswitch); | ||
322 | #undef VCREATE_DATA | 321 | #undef VCREATE_DATA |
323 | 322 | ||
324 | struct pvr2_ctld_info *mpeg_ctrl_info; | 323 | struct pvr2_ctld_info *mpeg_ctrl_info; |
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c index 776125491c81..11890a0a72af 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c +++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c | |||
@@ -94,7 +94,6 @@ static int procreload = 0; | |||
94 | static int tuner[PVR_NUM] = { [0 ... PVR_NUM-1] = -1 }; | 94 | static int tuner[PVR_NUM] = { [0 ... PVR_NUM-1] = -1 }; |
95 | static int tolerance[PVR_NUM] = { [0 ... PVR_NUM-1] = 0 }; | 95 | static int tolerance[PVR_NUM] = { [0 ... PVR_NUM-1] = 0 }; |
96 | static int video_std[PVR_NUM] = { [0 ... PVR_NUM-1] = 0 }; | 96 | static int video_std[PVR_NUM] = { [0 ... PVR_NUM-1] = 0 }; |
97 | static int auto_mode_switch[PVR_NUM]; | ||
98 | static int init_pause_msec = 0; | 97 | static int init_pause_msec = 0; |
99 | 98 | ||
100 | module_param(ctlchg, int, S_IRUGO|S_IWUSR); | 99 | module_param(ctlchg, int, S_IRUGO|S_IWUSR); |
@@ -112,8 +111,6 @@ module_param_array(video_std, int, NULL, 0444); | |||
112 | MODULE_PARM_DESC(video_std,"specify initial video standard"); | 111 | MODULE_PARM_DESC(video_std,"specify initial video standard"); |
113 | module_param_array(tolerance, int, NULL, 0444); | 112 | module_param_array(tolerance, int, NULL, 0444); |
114 | MODULE_PARM_DESC(tolerance,"specify stream error tolerance"); | 113 | MODULE_PARM_DESC(tolerance,"specify stream error tolerance"); |
115 | module_param_array(auto_mode_switch, int, NULL, 0444); | ||
116 | MODULE_PARM_DESC(auto_mode_switch,"Enable TV/Radio automatic mode switch based on freq"); | ||
117 | 114 | ||
118 | #define PVR2_CTL_WRITE_ENDPOINT 0x01 | 115 | #define PVR2_CTL_WRITE_ENDPOINT 0x01 |
119 | #define PVR2_CTL_READ_ENDPOINT 0x81 | 116 | #define PVR2_CTL_READ_ENDPOINT 0x81 |
@@ -759,7 +756,6 @@ VCREATE_FUNCS(audiomode) | |||
759 | VCREATE_FUNCS(res_hor) | 756 | VCREATE_FUNCS(res_hor) |
760 | VCREATE_FUNCS(res_ver) | 757 | VCREATE_FUNCS(res_ver) |
761 | VCREATE_FUNCS(srate) | 758 | VCREATE_FUNCS(srate) |
762 | VCREATE_FUNCS(automodeswitch) | ||
763 | 759 | ||
764 | /* Table definition of all controls which can be manipulated */ | 760 | /* Table definition of all controls which can be manipulated */ |
765 | static const struct pvr2_ctl_info control_defs[] = { | 761 | static const struct pvr2_ctl_info control_defs[] = { |
@@ -859,12 +855,6 @@ static const struct pvr2_ctl_info control_defs[] = { | |||
859 | .get_max_value = ctrl_vres_max_get, | 855 | .get_max_value = ctrl_vres_max_get, |
860 | .get_min_value = ctrl_vres_min_get, | 856 | .get_min_value = ctrl_vres_min_get, |
861 | },{ | 857 | },{ |
862 | .desc = "Automatic TV / Radio mode switch based on frequency", | ||
863 | .name = "auto_mode_switch", | ||
864 | .default_value = 0, | ||
865 | DEFREF(automodeswitch), | ||
866 | DEFBOOL, | ||
867 | },{ | ||
868 | .v4l_id = V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ, | 858 | .v4l_id = V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ, |
869 | .default_value = V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000, | 859 | .default_value = V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000, |
870 | .desc = "Audio Sampling Frequency", | 860 | .desc = "Audio Sampling Frequency", |
@@ -1022,71 +1012,28 @@ unsigned long pvr2_hdw_get_cur_freq(struct pvr2_hdw *hdw) | |||
1022 | driver-core side effects of this action. */ | 1012 | driver-core side effects of this action. */ |
1023 | void pvr2_hdw_set_cur_freq(struct pvr2_hdw *hdw,unsigned long val) | 1013 | void pvr2_hdw_set_cur_freq(struct pvr2_hdw *hdw,unsigned long val) |
1024 | { | 1014 | { |
1025 | int mode = 0; | 1015 | if (hdw->input_val == PVR2_CVAL_INPUT_RADIO) { |
1026 | |||
1027 | /* If hdw->automodeswitch_val is set, then we do something clever: | ||
1028 | Look at the desired frequency and see if it looks like FM or TV. | ||
1029 | Execute a possible mode switch based on this result. Otherwise | ||
1030 | we use the current input setting to determine which frequency | ||
1031 | register we need to adjust. */ | ||
1032 | if (hdw->automodeswitch_val) { | ||
1033 | /* Note that since FM RADIO frequency range sits *inside* | ||
1034 | the TV spectrum that we must therefore check the radio | ||
1035 | range first... */ | ||
1036 | if ((val >= RADIO_MIN_FREQ) && (val <= RADIO_MAX_FREQ)) { | ||
1037 | mode = 1; | ||
1038 | } else if ((val >= TV_MIN_FREQ) && (val <= TV_MAX_FREQ)) { | ||
1039 | mode = 2; | ||
1040 | } | ||
1041 | } else { | ||
1042 | if (hdw->input_val == PVR2_CVAL_INPUT_RADIO) { | ||
1043 | mode = 1; | ||
1044 | } else { | ||
1045 | mode = 2; | ||
1046 | } | ||
1047 | } | ||
1048 | |||
1049 | switch (mode) { | ||
1050 | case 1: | ||
1051 | if (hdw->freqSelector) { | 1016 | if (hdw->freqSelector) { |
1052 | /* Swing over to radio frequency selection */ | 1017 | /* Swing over to radio frequency selection */ |
1053 | hdw->freqSelector = 0; | 1018 | hdw->freqSelector = 0; |
1054 | hdw->freqDirty = !0; | 1019 | hdw->freqDirty = !0; |
1055 | } | 1020 | } |
1056 | if (hdw->input_val == PVR2_CVAL_INPUT_TV) { | ||
1057 | /* Force switch to radio mode */ | ||
1058 | hdw->input_val = PVR2_CVAL_INPUT_RADIO; | ||
1059 | hdw->input_dirty = !0; | ||
1060 | } | ||
1061 | if (hdw->freqValRadio != val) { | 1021 | if (hdw->freqValRadio != val) { |
1062 | hdw->freqValRadio = val; | 1022 | hdw->freqValRadio = val; |
1063 | hdw->freqSlotRadio = 0; | 1023 | hdw->freqSlotRadio = 0; |
1064 | if (hdw->input_val == PVR2_CVAL_INPUT_RADIO) { | 1024 | hdw->freqDirty = !0; |
1065 | hdw->freqDirty = !0; | ||
1066 | } | ||
1067 | } | 1025 | } |
1068 | break; | 1026 | } else { |
1069 | case 2: | ||
1070 | if (!(hdw->freqSelector)) { | 1027 | if (!(hdw->freqSelector)) { |
1071 | /* Swing over to television frequency selection */ | 1028 | /* Swing over to television frequency selection */ |
1072 | hdw->freqSelector = 1; | 1029 | hdw->freqSelector = 1; |
1073 | hdw->freqDirty = !0; | 1030 | hdw->freqDirty = !0; |
1074 | } | 1031 | } |
1075 | if (hdw->input_val == PVR2_CVAL_INPUT_RADIO) { | ||
1076 | /* Force switch to television mode */ | ||
1077 | hdw->input_val = PVR2_CVAL_INPUT_TV; | ||
1078 | hdw->input_dirty = !0; | ||
1079 | } | ||
1080 | if (hdw->freqValTelevision != val) { | 1032 | if (hdw->freqValTelevision != val) { |
1081 | hdw->freqValTelevision = val; | 1033 | hdw->freqValTelevision = val; |
1082 | hdw->freqSlotTelevision = 0; | 1034 | hdw->freqSlotTelevision = 0; |
1083 | if (hdw->input_val == PVR2_CVAL_INPUT_TV) { | 1035 | hdw->freqDirty = !0; |
1084 | hdw->freqDirty = !0; | ||
1085 | } | ||
1086 | } | 1036 | } |
1087 | break; | ||
1088 | default: | ||
1089 | break; | ||
1090 | } | 1037 | } |
1091 | } | 1038 | } |
1092 | 1039 | ||
@@ -1839,11 +1786,6 @@ static void pvr2_hdw_setup_low(struct pvr2_hdw *hdw) | |||
1839 | /* 104.3 MHz, a usable FM station for my area */ | 1786 | /* 104.3 MHz, a usable FM station for my area */ |
1840 | hdw->freqValRadio = 104300000L; | 1787 | hdw->freqValRadio = 104300000L; |
1841 | 1788 | ||
1842 | /* Default value for auto mode switch based on module option */ | ||
1843 | if ((hdw->unit_number >= 0) && (hdw->unit_number < PVR_NUM)) { | ||
1844 | hdw->automodeswitch_val = auto_mode_switch[hdw->unit_number]; | ||
1845 | } | ||
1846 | |||
1847 | // Do not use pvr2_reset_ctl_endpoints() here. It is not | 1789 | // Do not use pvr2_reset_ctl_endpoints() here. It is not |
1848 | // thread-safe against the normal pvr2_send_request() mechanism. | 1790 | // thread-safe against the normal pvr2_send_request() mechanism. |
1849 | // (We should make it thread safe). | 1791 | // (We should make it thread safe). |