[media] cx25821: the audio channel was registered as a video node
Skip the audio channel when registering the video nodes. This fixes a bug where that incorrectly registered 'video' node was never unregistered. Note: this bug only surfaces if the video output nodes are enabled again after the previous patch disabled them. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
a877e2771a
commit
31b320739b
@ -1051,11 +1051,9 @@ void cx25821_dev_unregister(struct cx25821_dev *dev)
|
|||||||
if (!atomic_dec_and_test(&dev->refcount))
|
if (!atomic_dec_and_test(&dev->refcount))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 0; i < VID_CHANNEL_NUM; i++)
|
for (i = 0; i < MAX_VID_CHANNEL_NUM - 1; i++) {
|
||||||
cx25821_video_unregister(dev, i);
|
if (i == SRAM_CH08) /* audio channel */
|
||||||
|
continue;
|
||||||
for (i = VID_UPSTREAM_SRAM_CHANNEL_I;
|
|
||||||
i <= AUDIO_UPSTREAM_SRAM_CHANNEL_B; i++) {
|
|
||||||
cx25821_video_unregister(dev, i);
|
cx25821_video_unregister(dev, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,6 +462,9 @@ int cx25821_video_register(struct cx25821_dev *dev)
|
|||||||
spin_lock_init(&dev->slock);
|
spin_lock_init(&dev->slock);
|
||||||
|
|
||||||
for (i = 0; i < VID_CHANNEL_NUM; ++i) {
|
for (i = 0; i < VID_CHANNEL_NUM; ++i) {
|
||||||
|
if (i == SRAM_CH08) /* audio channel */
|
||||||
|
continue;
|
||||||
|
|
||||||
cx25821_init_controls(dev, i);
|
cx25821_init_controls(dev, i);
|
||||||
|
|
||||||
cx25821_risc_stopper(dev->pci, &dev->channels[i].vidq.stopper,
|
cx25821_risc_stopper(dev->pci, &dev->channels[i].vidq.stopper,
|
||||||
@ -788,7 +791,7 @@ static int video_open(struct file *file)
|
|||||||
{
|
{
|
||||||
h = list_entry(list, struct cx25821_dev, devlist);
|
h = list_entry(list, struct cx25821_dev, devlist);
|
||||||
|
|
||||||
for (i = 0; i < MAX_VID_CHANNEL_NUM; i++) {
|
for (i = 0; i < MAX_VID_CHANNEL_NUM - 1; i++) {
|
||||||
if (h->channels[i].video_dev &&
|
if (h->channels[i].video_dev &&
|
||||||
h->channels[i].video_dev->minor == minor) {
|
h->channels[i].video_dev->minor == minor) {
|
||||||
dev = h;
|
dev = h;
|
||||||
|
Loading…
Reference in New Issue
Block a user