V4L/DVB (7303): pvrusb2: Ensure that default input selection is actually valid
authorMike Isely <isely@pobox.com>
Tue, 22 Apr 2008 17:45:39 +0000 (14:45 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Thu, 24 Apr 2008 17:07:47 +0000 (14:07 -0300)
Previously the pvrusb2 driver just started with the default input to
be "television".  But if the device doesn't support an analog tuner
then this default must be different.  New logic here selects a
reasonable default based on the actual valid set of available inputs.

Signed-off-by: Mike Isely <isely@pobox.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/pvrusb2/pvrusb2-hdw.c
drivers/media/video/pvrusb2/pvrusb2-hdw.h

index 94cb0a76e77e1ec357ae7b4ffeaafa4781895361..ae36948c6c1dc34c7dbf97ce82baecaa035cb7e9 100644 (file)
@@ -1875,6 +1875,15 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface *intf,
                cptr = hdw->controls + idx;
                cptr->info = control_defs+idx;
        }
+
+       /* Ensure that default input choice is a valid one. */
+       m = hdw->input_avail_mask;
+       if (m) for (idx = 0; idx < (sizeof(m) << 3); idx++) {
+               if (!((1 << idx) & m)) continue;
+               hdw->input_val = idx;
+               break;
+       }
+
        /* Define and configure additional controls from cx2341x module. */
        hdw->mpeg_ctrl_info = kzalloc(
                sizeof(*(hdw->mpeg_ctrl_info)) * MPEGDEF_COUNT, GFP_KERNEL);
index 59f385878ef2652be57ff6213dfb204092b19f2b..2919a1d9ed0fd7dd7f8ee63fc448db39fc549683 100644 (file)
@@ -41,8 +41,8 @@
 /* Legal values for the INPUT state variable */
 #define PVR2_CVAL_INPUT_TV 0
 #define PVR2_CVAL_INPUT_DTV 1
-#define PVR2_CVAL_INPUT_SVIDEO 2
-#define PVR2_CVAL_INPUT_COMPOSITE 3
+#define PVR2_CVAL_INPUT_COMPOSITE 2
+#define PVR2_CVAL_INPUT_SVIDEO 3
 #define PVR2_CVAL_INPUT_RADIO 4
 
 enum pvr2_config {