>> - fh->type = type; >> - fh->dev = dev; >> - v4l2_fh_init(&fh->fh, vdev); >> - filp->private_data = fh; >> + dprintk(1, >> + "%s called std_set %d dev_state %d stream users %d users %d\n", >> + __func__, dev->std_set_in_tuner_core, dev->dev_state, >> + dev->streaming_users, dev->users); >> >> - if (mutex_lock_interruptible(&dev->lock)) { >> - kfree(fh); >> + if (mutex_lock_interruptible(&dev->lock)) >> return -ERESTARTSYS; >> + >> + ret = v4l2_fh_open(filp); >> + if (ret) { >> + au0828_isocdbg("%s: v4l2_fh_open() returned error %d\n", >> + __func__, ret); >> + mutex_unlock(&dev->lock); >> + return ret; >> } >> + >> if (dev->users == 0) { > > you can use v4l2_fh_is_singular_file() and get rid of users member ? That won't work because the underlying resources are shared between /dev/videoX and /dev/vbiX device nodes. Hence if you were to move to v4l2_fh_is_singular_file(), the video device would get opened, the stream would get reset, the VBI device would get opened, and that would cause the analog stream to get enabled/reset *again*. Devin -- Devin J. Heitmueller - Kernel Labs http://www.kernellabs.com -- 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