ret=vfd->vidioc_enum_fmt_vbi(file, fh, f);
                        break;
                case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
-                       if (vfd->vidioc_enum_fmt_vbi_output)
-                               ret=vfd->vidioc_enum_fmt_vbi_output(file,
+                       if (vfd->vidioc_enum_fmt_sliced_vbi_output)
+                               ret = vfd->vidioc_enum_fmt_sliced_vbi_output(file,
                                                                fh, f);
                        break;
                case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
                                ret=vfd->vidioc_g_fmt_vbi(file, fh, f);
                        break;
                case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
-                       if (vfd->vidioc_g_fmt_vbi_output)
-                               ret=vfd->vidioc_g_fmt_vbi_output(file, fh, f);
+                       if (vfd->vidioc_g_fmt_sliced_vbi_output)
+                               ret = vfd->vidioc_g_fmt_sliced_vbi_output(file, fh, f);
                        break;
                case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
                        if (vfd->vidioc_g_fmt_vbi_capture)
                                ret=vfd->vidioc_s_fmt_vbi(file, fh, f);
                        break;
                case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
-                       if (vfd->vidioc_s_fmt_vbi_output)
-                               ret=vfd->vidioc_s_fmt_vbi_output(file, fh, f);
+                       if (vfd->vidioc_s_fmt_sliced_vbi_output)
+                               ret = vfd->vidioc_s_fmt_sliced_vbi_output(file, fh, f);
                        break;
                case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
                        if (vfd->vidioc_s_fmt_vbi_capture)
                                ret=vfd->vidioc_try_fmt_vbi(file, fh, f);
                        break;
                case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
-                       if (vfd->vidioc_try_fmt_vbi_output)
-                               ret=vfd->vidioc_try_fmt_vbi_output(file,
+                       if (vfd->vidioc_try_fmt_sliced_vbi_output)
+                               ret = vfd->vidioc_try_fmt_sliced_vbi_output(file,
                                                                fh, f);
                        break;
                case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
        }
 
        /* ------ output switching ---------- */
+       case VIDIOC_ENUMOUTPUT:
+       {
+               struct v4l2_output *p = arg;
+               int i = p->index;
+
+               if (!vfd->vidioc_enum_output)
+                       break;
+               memset(p, 0, sizeof(*p));
+               p->index = i;
+
+               ret = vfd->vidioc_enum_output(file, fh, p);
+               if (!ret)
+                       dbgarg(cmd, "index=%d, name=%s, type=%d, "
+                               "audioset=%d, "
+                               "modulator=%d, std=%08Lx\n",
+                               p->index, p->name, p->type, p->audioset,
+                               p->modulator, (unsigned long long)p->std);
+               break;
+       }
        case VIDIOC_G_OUTPUT:
        {
                unsigned int *i = arg;
 
                                            struct v4l2_fmtdesc *f);
        int (*vidioc_enum_fmt_vbi_output)  (struct file *file, void *fh,
                                            struct v4l2_fmtdesc *f);
+       int (*vidioc_enum_fmt_sliced_vbi_output)  (struct file *file, void *fh,
+                                           struct v4l2_fmtdesc *f);
        int (*vidioc_enum_fmt_type_private)(struct file *file, void *fh,
                                            struct v4l2_fmtdesc *f);
 
                                        struct v4l2_format *f);
        int (*vidioc_g_fmt_vbi_output) (struct file *file, void *fh,
                                        struct v4l2_format *f);
+       int (*vidioc_g_fmt_sliced_vbi_output) (struct file *file, void *fh,
+                                       struct v4l2_format *f);
        int (*vidioc_g_fmt_vbi_capture)(struct file *file, void *fh,
                                        struct v4l2_format *f);
        int (*vidioc_g_fmt_video_output)(struct file *file, void *fh,
                                        struct v4l2_format *f);
        int (*vidioc_s_fmt_vbi_output) (struct file *file, void *fh,
                                        struct v4l2_format *f);
+       int (*vidioc_s_fmt_sliced_vbi_output) (struct file *file, void *fh,
+                                       struct v4l2_format *f);
        int (*vidioc_s_fmt_vbi_capture)(struct file *file, void *fh,
                                        struct v4l2_format *f);
        int (*vidioc_s_fmt_video_output)(struct file *file, void *fh,
                                          struct v4l2_format *f);
        int (*vidioc_try_fmt_vbi_output) (struct file *file, void *fh,
                                          struct v4l2_format *f);
+       int (*vidioc_try_fmt_sliced_vbi_output) (struct file *file, void *fh,
+                                         struct v4l2_format *f);
        int (*vidioc_try_fmt_vbi_capture)(struct file *file, void *fh,
                                          struct v4l2_format *f);
        int (*vidioc_try_fmt_video_output)(struct file *file, void *fh,
        int (*vidioc_s_input)   (struct file *file, void *fh, unsigned int i);
 
                /* Output handling */
-       int (*vidioc_enumoutput) (struct file *file, void *fh,
+       int (*vidioc_enum_output) (struct file *file, void *fh,
                                  struct v4l2_output *a);
        int (*vidioc_g_output)   (struct file *file, void *fh, unsigned int *i);
        int (*vidioc_s_output)   (struct file *file, void *fh, unsigned int i);