static const char *control_values_input[] = {
[PVR2_CVAL_INPUT_TV] = "television", /*xawtv needs this name*/
+ [PVR2_CVAL_INPUT_DTV] = "dtv",
[PVR2_CVAL_INPUT_RADIO] = "radio",
[PVR2_CVAL_INPUT_SVIDEO] = "s-video",
[PVR2_CVAL_INPUT_COMPOSITE] = "composite",
return 0;
}
+static int ctrl_check_input(struct pvr2_ctrl *cptr,int v)
+{
+ struct pvr2_hdw *hdw = cptr->hdw;
+ const struct pvr2_device_desc *dsc = hdw->hdw_desc;
+
+ switch (v) {
+ case PVR2_CVAL_INPUT_TV:
+ return dsc->flag_has_analogtuner != 0;
+ case PVR2_CVAL_INPUT_DTV:
+ return dsc->flag_has_digitaltuner != 0;
+ case PVR2_CVAL_INPUT_SVIDEO:
+ return dsc->flag_has_svideo != 0;
+ case PVR2_CVAL_INPUT_COMPOSITE:
+ return dsc->flag_has_composite != 0;
+ case PVR2_CVAL_INPUT_RADIO:
+ return dsc->flag_has_fmradio != 0;
+ default:
+ return 0;
+ }
+}
+
static int ctrl_set_input(struct pvr2_ctrl *cptr,int m,int v)
{
struct pvr2_hdw *hdw = cptr->hdw;
if (hdw->input_val == PVR2_CVAL_INPUT_RADIO) {
hdw->freqSelector = 0;
hdw->freqDirty = !0;
- } else if (hdw->input_val == PVR2_CVAL_INPUT_TV) {
+ } else if ((hdw->input_val == PVR2_CVAL_INPUT_TV) ||
+ (hdw->input_val == PVR2_CVAL_INPUT_DTV)) {
hdw->freqSelector = 1;
hdw->freqDirty = !0;
}
.name = "input",
.internal_id = PVR2_CID_INPUT,
.default_value = PVR2_CVAL_INPUT_TV,
+ .check_value = ctrl_check_input,
DEFREF(input),
DEFENUM(control_values_input),
},{
/* Legal values for the INPUT state variable */
#define PVR2_CVAL_INPUT_TV 0
-#define PVR2_CVAL_INPUT_SVIDEO 1
-#define PVR2_CVAL_INPUT_COMPOSITE 2
-#define PVR2_CVAL_INPUT_RADIO 3
+#define PVR2_CVAL_INPUT_DTV 1
+#define PVR2_CVAL_INPUT_SVIDEO 2
+#define PVR2_CVAL_INPUT_COMPOSITE 3
+#define PVR2_CVAL_INPUT_RADIO 4
enum pvr2_config {
pvr2_config_empty, /* No configuration */