Em Thu, 10 Oct 2013 21:20:24 +0200
Frank Schäfer <fschaefer....@googlemail.com> escreveu:

> - bail out on unsupported VFL_TYPE
> - em28xx_set_mode() needs to be called for VBI and radio mode, too
> - em28xx_wake_i2c() needs to be called for VBI and radio mode, too
> - em28xx_resolution_set() also needs to be called for VBI
> 
> Compilation tested only and should be reviewed thoroughly !

Makes sense to me. I don't remember any real issue with radio and I2C
devices, but, in theory, that could happen with xc3028/5000 tuners.

I can't test it right now, through. So, I'll delay it for when I would
have some time for testing.

> 
> Signed-off-by: Frank Schäfer <fschaefer....@googlemail.com>
> ---
>  drivers/media/usb/em28xx/em28xx-video.c |   17 +++++++++++------
>  1 Datei geändert, 11 Zeilen hinzugefügt(+), 6 Zeilen entfernt(-)
> 
> diff --git a/drivers/media/usb/em28xx/em28xx-video.c 
> b/drivers/media/usb/em28xx/em28xx-video.c
> index fc5d60e..962f4b2 100644
> --- a/drivers/media/usb/em28xx/em28xx-video.c
> +++ b/drivers/media/usb/em28xx/em28xx-video.c
> @@ -1570,13 +1570,16 @@ static int em28xx_v4l2_open(struct file *filp)
>       case VFL_TYPE_VBI:
>               fh_type = V4L2_BUF_TYPE_VBI_CAPTURE;
>               break;
> +     case VFL_TYPE_RADIO:
> +             break;
> +     default:
> +             return -EINVAL;
>       }
>  
>       em28xx_videodbg("open dev=%s type=%s users=%d\n",
>                       video_device_node_name(vdev), v4l2_type_names[fh_type],
>                       dev->users);
>  
> -
>       if (mutex_lock_interruptible(&dev->lock))
>               return -ERESTARTSYS;
>       fh = kzalloc(sizeof(struct em28xx_fh), GFP_KERNEL);
> @@ -1590,15 +1593,17 @@ static int em28xx_v4l2_open(struct file *filp)
>       fh->type = fh_type;
>       filp->private_data = fh;
>  
> -     if (fh->type == V4L2_BUF_TYPE_VIDEO_CAPTURE && dev->users == 0) {
> +     if (dev->users == 0) {
>               em28xx_set_mode(dev, EM28XX_ANALOG_MODE);
> -             em28xx_resolution_set(dev);
>  
> -             /* Needed, since GPIO might have disabled power of
> -                some i2c device
> +             if (vdev->vfl_type != VFL_TYPE_RADIO)
> +                     em28xx_resolution_set(dev);
> +
> +             /*
> +              * Needed, since GPIO might have disabled power of
> +              * some i2c devices
>                */
>               em28xx_wake_i2c(dev);
> -
>       }
>  
>       if (vdev->vfl_type == VFL_TYPE_RADIO) {


-- 

Cheers,
Mauro
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to