V4L2_CAP_AUDIO | V4L2_CAP_VBI_CAPTURE |
                            V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VBI_CAPTURE |
                            V4L2_CAP_DEVICE_CAPS;
-       if (dev->tuner_type != TUNER_ABSENT)
+       switch (dev->board) { /* i2c device tuners */
+       case CX23885_BOARD_HAUPPAUGE_HVR1265_K4:
+       case CX23885_BOARD_HAUPPAUGE_HVR5525:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_DVB:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_ATSC:
                cap->capabilities |= V4L2_CAP_TUNER;
+               break;
+       default:
+               if (dev->tuner_type != TUNER_ABSENT)
+                       cap->capabilities |= V4L2_CAP_TUNER;
+               break;
+       }
        return 0;
 }
 
 {
        struct cx23885_dev *dev = video_drvdata(file);
 
-       if (dev->tuner_type == TUNER_ABSENT)
-               return -EINVAL;
+       switch (dev->board) { /* i2c device tuners */
+       case CX23885_BOARD_HAUPPAUGE_HVR1265_K4:
+       case CX23885_BOARD_HAUPPAUGE_HVR5525:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_DVB:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_ATSC:
+               break;
+       default:
+               if (dev->tuner_type == TUNER_ABSENT)
+                       return -EINVAL;
+               break;
+       }
        if (0 != t->index)
                return -EINVAL;
 
 {
        struct cx23885_dev *dev = video_drvdata(file);
 
-       if (dev->tuner_type == TUNER_ABSENT)
-               return -EINVAL;
+       switch (dev->board) { /* i2c device tuners */
+       case CX23885_BOARD_HAUPPAUGE_HVR1265_K4:
+       case CX23885_BOARD_HAUPPAUGE_HVR5525:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_DVB:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_ATSC:
+               break;
+       default:
+               if (dev->tuner_type == TUNER_ABSENT)
+                       return -EINVAL;
+               break;
+       }
        if (0 != t->index)
                return -EINVAL;
        /* Update the A/V core */
 {
        struct cx23885_dev *dev = video_drvdata(file);
 
-       if (dev->tuner_type == TUNER_ABSENT)
-               return -EINVAL;
-
+       switch (dev->board) { /* i2c device tuners */
+       case CX23885_BOARD_HAUPPAUGE_HVR1265_K4:
+       case CX23885_BOARD_HAUPPAUGE_HVR5525:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_DVB:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_ATSC:
+               break;
+       default:
+               if (dev->tuner_type == TUNER_ABSENT)
+                       return -EINVAL;
+               break;
+       }
        f->type = V4L2_TUNER_ANALOG_TV;
        f->frequency = dev->freq;
 
        struct v4l2_ctrl *mute;
        int old_mute_val = 1;
 
-       if (dev->tuner_type == TUNER_ABSENT)
-               return -EINVAL;
+       switch (dev->board) { /* i2c device tuners */
+       case CX23885_BOARD_HAUPPAUGE_HVR1265_K4:
+       case CX23885_BOARD_HAUPPAUGE_HVR5525:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_DVB:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_ATSC:
+               break;
+       default:
+               if (dev->tuner_type == TUNER_ABSENT)
+                       return -EINVAL;
+               break;
+       }
        if (unlikely(f->tuner != 0))
                return -EINVAL;
 
        dev->video_dev->queue = &dev->vb2_vidq;
        dev->video_dev->device_caps = V4L2_CAP_READWRITE | V4L2_CAP_STREAMING |
                                      V4L2_CAP_AUDIO | V4L2_CAP_VIDEO_CAPTURE;
-       if (dev->tuner_type != TUNER_ABSENT)
+       switch (dev->board) { /* i2c device tuners */
+       case CX23885_BOARD_HAUPPAUGE_HVR1265_K4:
+       case CX23885_BOARD_HAUPPAUGE_HVR5525:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_DVB:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_ATSC:
                dev->video_dev->device_caps |= V4L2_CAP_TUNER;
+               break;
+       default:
+               if (dev->tuner_type != TUNER_ABSENT)
+                       dev->video_dev->device_caps |= V4L2_CAP_TUNER;
+       }
+
        err = video_register_device(dev->video_dev, VFL_TYPE_VIDEO,
                                    video_nr[dev->nr]);
        if (err < 0) {
        dev->vbi_dev->queue = &dev->vb2_vbiq;
        dev->vbi_dev->device_caps = V4L2_CAP_READWRITE | V4L2_CAP_STREAMING |
                                    V4L2_CAP_AUDIO | V4L2_CAP_VBI_CAPTURE;
-       if (dev->tuner_type != TUNER_ABSENT)
+       switch (dev->board) { /* i2c device tuners */
+       case CX23885_BOARD_HAUPPAUGE_HVR1265_K4:
+       case CX23885_BOARD_HAUPPAUGE_HVR5525:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_DVB:
+       case CX23885_BOARD_HAUPPAUGE_QUADHD_ATSC:
                dev->vbi_dev->device_caps |= V4L2_CAP_TUNER;
+               break;
+       default:
+               if (dev->tuner_type != TUNER_ABSENT)
+                       dev->vbi_dev->device_caps |= V4L2_CAP_TUNER;
+       }
        err = video_register_device(dev->vbi_dev, VFL_TYPE_VBI,
                                    vbi_nr[dev->nr]);
        if (err < 0) {