public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: Justin Forbes <jmforbes@linuxtx.org>,
	Zwane Mwaikambo <zwane@arm.linux.org.uk>,
	"Theodore Ts'o" <tytso@mit.edu>,
	Randy Dunlap <rdunlap@xenotime.net>,
	Dave Jones <davej@redhat.com>,
	Chuck Wolber <chuckw@quantumlinux.com>,
	Chris Wedgwood <reviews@ml.cw.f00f.org>,
	Michael Krufky <mkrufky@linuxtv.org>,
	Chuck Ebbert <cebbert@redhat.com>,
	Domenico Andreoli <cavokz@gmail.com>,
	torvalds@linux-foundation.org, akpm@linux-foundation.org,
	alan@lxorguk.ukuu.org.uk, v4l-dvb-maintainer@linuxtv.org,
	xyzzy@speakeasy.org,
	Mauro Carvalho Chehab <mchehab@infradead.org>,
	Chris Wright <chrisw@sous-sol.org>,
	Greg Kroah-Hartman <gregkh@suse.de>
Subject: [patch 25/26] V4L: bttv: fix v4l1 api usage breaking the driver
Date: Mon, 30 Jul 2007 21:33:59 -0700	[thread overview]
Message-ID: <20070731043359.GZ3975@kroah.com> (raw)
In-Reply-To: <20070731043047.GA3975@kroah.com>

[-- Attachment #1: v4l-bttv-fix-v4l1-api-usage-breaking-the-driver.patch --]
[-- Type: text/plain, Size: 3301 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------

From: Trent Piepho <xyzzy@speakeasy.org>

If one uses a V4L *one* application, such as vlc or mplayer's v4l driver, as
the first user after the driver is loaded, the driver wedges itself and will
never capture properly.  Even if one uses a V4L2 application later, it still
won't work.

If one uses a V4L *two* application first, such as tvtime or mplayer's v4l2
driver, then the driver will be ok.  One can then run a V4L1 application, and
it will work.

It turns out the problem is with norm changing and the crop support that was
added in 2.6.21.  The driver defaults to PAL, and keeps the last norm it was
set too across opens.  If one changes the norm via V4L1, the cropping
parameters are not reset like they should be, and they'll remain broken across
device opens.

This patch removes the direct setting of btv->tvnorm in the V4L1 ioctl
VIDIOCSCHAN handler.  The norm is set via the existing call to set_input(),
which calls set_tvnorm(), which will reset the cropping values now that it is
able to detect the norm change.

Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
(cherry picked from commit 333408f21590d50397f3004e3f87070fa8f52c51)

 drivers/media/video/bt8xx/bttv-driver.c |   13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

--- linux-2.6.21.6.orig/drivers/media/video/bt8xx/bttv-driver.c
+++ linux-2.6.21.6/drivers/media/video/bt8xx/bttv-driver.c
@@ -1313,7 +1313,7 @@ set_tvnorm(struct bttv *btv, unsigned in
 
 /* Call with btv->lock down. */
 static void
-set_input(struct bttv *btv, unsigned int input)
+set_input(struct bttv *btv, unsigned int input, unsigned int norm)
 {
 	unsigned long flags;
 
@@ -1332,7 +1332,7 @@ set_input(struct bttv *btv, unsigned int
 	}
 	audio_input(btv,(input == bttv_tvcards[btv->c.type].tuner ?
 		       TVAUDIO_INPUT_TUNER : TVAUDIO_INPUT_EXTERN));
-	set_tvnorm(btv,btv->tvnorm);
+	set_tvnorm(btv, norm);
 	i2c_vidiocschan(btv);
 }
 
@@ -1423,7 +1423,7 @@ static void bttv_reinit_bt848(struct btt
 
 	init_bt848(btv);
 	btv->pll.pll_current = -1;
-	set_input(btv,btv->input);
+	set_input(btv, btv->input, btv->tvnorm);
 }
 
 static int get_control(struct bttv *btv, struct v4l2_control *c)
@@ -1993,8 +1993,7 @@ static int bttv_common_ioctls(struct btt
 			return 0;
 		}
 
-		btv->tvnorm = v->norm;
-		set_input(btv,v->channel);
+		set_input(btv, v->channel, v->norm);
 		mutex_unlock(&btv->lock);
 		return 0;
 	}
@@ -2130,7 +2129,7 @@ static int bttv_common_ioctls(struct btt
 		if (*i > bttv_tvcards[btv->c.type].video_inputs)
 			return -EINVAL;
 		mutex_lock(&btv->lock);
-		set_input(btv,*i);
+		set_input(btv, *i, btv->tvnorm);
 		mutex_unlock(&btv->lock);
 		return 0;
 	}
@@ -4762,7 +4761,7 @@ static int __devinit bttv_probe(struct p
 		bt848_hue(btv,32768);
 		bt848_sat(btv,32768);
 		audio_mute(btv, 1);
-		set_input(btv,0);
+		set_input(btv, 0, btv->tvnorm);
 		bttv_crop_reset(&btv->crop[0], btv->tvnorm);
 		btv->crop[1] = btv->crop[0]; /* current = default */
 		disclaim_vbi_lines(btv);

-- 

  parent reply	other threads:[~2007-07-31  4:40 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20070731042108.546594256@blue.kroah.org>
2007-07-31  4:30 ` [patch 00/26] 2.6.21.7 -stable review Greg KH
2007-07-31  4:31   ` [patch 01/26] BNX2: Fix netdev watchdog on 5708 Greg KH
2007-07-31  4:31   ` [patch 02/26] sparsemem: fix oops in x86_64 show_mem Greg KH
2007-07-31  4:31   ` [patch 03/26] rt-mutex: Fix stale return value Greg KH
2007-07-31  4:31   ` [patch 04/26] rt-mutex: Fix chain walk early wakeup bug Greg KH
2007-07-31  4:31   ` [patch 05/26] pi-futex: Fix exit races and locking problems Greg KH
2007-07-31  4:31   ` [patch 06/26] hpt366: disallow Ultra133 for HPT374 Greg KH
2007-07-31  4:31   ` [patch 07/26] md: Fix two raid10 bugs Greg KH
2007-07-31  4:32   ` [patch 08/26] md: Fix bug in error handling during raid1 repair Greg KH
2007-07-31  4:32   ` [patch 09/26] dm crypt: disable barriers Greg KH
2007-07-31  4:32   ` [patch 10/26] dm crypt: fix call to clone_init Greg KH
2007-07-31  4:32   ` [patch 11/26] dm crypt: fix avoid cloned bio ref after free Greg KH
2007-07-31  4:32   ` [patch 12/26] dm crypt: fix remove first_clone Greg KH
2007-07-31  4:32   ` [patch 13/26] hugetlb: fix get_policy for stacked shared memory files Greg KH
2007-07-31  4:32   ` [patch 14/26] sched: fix next_interval determination in idle_balance() Greg KH
2007-07-31 15:02     ` Paul E. McKenney
2007-07-31  4:32   ` [patch 15/26] posix-timers: Prevent softirq starvation by small intervals and SIG_IGN Greg KH
2007-07-31  4:33   ` [patch 16/26] FUTEX: Restore the dropped ERSCH fix Greg KH
2007-07-31  4:33   ` [patch 17/26] audit: fix oops removing watch if audit disabled Greg KH
2007-07-31  4:33   ` [patch 18/26] POWERPC: Fix subtle FP state corruption bug in signal return on SMP Greg KH
2007-07-31  4:33   ` [patch 19/26] mm: kill validate_anon_vma to avoid mapcount BUG Greg KH
2007-07-31  4:33   ` [patch 20/26] saa7134: fix thread shutdown handling Greg KH
2007-07-31  5:05     ` Mauro Carvalho Chehab
2007-07-31  5:16       ` Greg KH
2007-07-31  4:33   ` [patch 21/26] serial: clear proper MPSC interrupt cause bits Greg KH
2007-07-31  4:33   ` [patch 22/26] i386: fix infinite loop with singlestep int80 syscalls Greg KH
2007-07-31  4:33   ` [patch 23/26] NTP: remove clock_was_set() call to prevent deadlock Greg KH
2007-07-31  4:33   ` [patch 24/26] sky2: workaround for lost IRQ Greg KH
2007-07-31  4:33   ` Greg KH [this message]
2007-07-31  4:34   ` [patch 26/26] V4L: cx88-blackbird: fix vidioc_g_tuner never ending list of tuners Greg KH
2007-07-31  4:43   ` [patch 00/26] 2.6.21.7 -stable review Greg KH
2007-07-31 10:50     ` Stefan Richter
2007-07-31 19:47       ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070731043359.GZ3975@kroah.com \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=cavokz@gmail.com \
    --cc=cebbert@redhat.com \
    --cc=chrisw@sous-sol.org \
    --cc=chuckw@quantumlinux.com \
    --cc=davej@redhat.com \
    --cc=jmforbes@linuxtx.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mchehab@infradead.org \
    --cc=mkrufky@linuxtv.org \
    --cc=rdunlap@xenotime.net \
    --cc=reviews@ml.cw.f00f.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    --cc=v4l-dvb-maintainer@linuxtv.org \
    --cc=xyzzy@speakeasy.org \
    --cc=zwane@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox