Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 31b32073 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

[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: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent a877e277
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -1051,11 +1051,9 @@ void cx25821_dev_unregister(struct cx25821_dev *dev)
	if (!atomic_dec_and_test(&dev->refcount))
		return;

	for (i = 0; i < VID_CHANNEL_NUM; i++)
		cx25821_video_unregister(dev, i);

	for (i = VID_UPSTREAM_SRAM_CHANNEL_I;
	     i <= AUDIO_UPSTREAM_SRAM_CHANNEL_B; i++) {
	for (i = 0; i < MAX_VID_CHANNEL_NUM - 1; i++) {
		if (i == SRAM_CH08) /* audio channel */
			continue;
		cx25821_video_unregister(dev, i);
	}

+4 −1
Original line number Diff line number Diff line
@@ -462,6 +462,9 @@ int cx25821_video_register(struct cx25821_dev *dev)
	spin_lock_init(&dev->slock);

	for (i = 0; i < VID_CHANNEL_NUM; ++i) {
		if (i == SRAM_CH08) /* audio channel */
			continue;

		cx25821_init_controls(dev, i);

		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);

		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 &&
			    h->channels[i].video_dev->minor == minor) {
				dev = h;