Re: [RFC PATCH] em28xx: fix device initialization in em28xx_v4l2_open() for radio and VBI mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em Thu, 10 Oct 2013 21:20:24 +0200
Frank Schäfer <fschaefer.oss@xxxxxxxxxxxxxx> 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.oss@xxxxxxxxxxxxxx>
> ---
>  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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux