From: Mauro Carvalho Chehab <mchehab@redhat.com>
To: Simon Arlott <simon@fire.lp0.eu>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-media@vger.kernel.org
Subject: Re: 2.6.39 "tuner-core: remove usage of DIGITAL_TV" breaks saa7134 with mt2050
Date: Wed, 13 Jul 2011 01:23:11 -0300 [thread overview]
Message-ID: <4E1D1DAF.4060900@redhat.com> (raw)
In-Reply-To: <4E1CBAC8.2030404@simon.arlott.org.uk>
Em 12-07-2011 18:21, Simon Arlott escreveu:
> commit ad020dc2fe9039628cf6cef42cd1b76531ee8411
> Author: Mauro Carvalho Chehab <mchehab@redhat.com>
> Date: Tue Feb 15 09:30:50 2011 -0200
>
> [media] tuner-core: remove usage of DIGITAL_TV
>
> tuner-core has no business to do with digital TV. So, don't use
> T_DIGITAL_TV on it, as it has no code to distinguish between
> them, and nobody fills T_DIGITAL_TV right.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
>
>
> This breaks my Pinnacle PCTV 300i DVB-T cards as they can no longer tune
> DVB-T.
>
> [ 540.010030] tuner 3-0043: Tuner doesn't support mode 3. Putting tuner to sleep
> [ 540.011017] tuner 2-0043: Tuner doesn't support mode 3. Putting tuner to sleep
> [ 540.012012] tuner 3-0060: Tuner doesn't support mode 3. Putting tuner to sleep
> [ 540.013029] tuner 2-0060: Tuner doesn't support mode 3. Putting tuner to sleep
>
> saa7134 needs to indicate digital TV tuning to mt20xx but it looks like
> tuner-core no longer has any way to allow a tuner to indicate support
> for this?
>
> (mt2050_set_tv_freq in mt20xx.c uses V4L2_TUNER_DIGITAL_TV)
>
Could you please try the enclosed patch? It should fix the issue.
I should probably rename T_ANALOG_TV to just T_TV, but I'll do it on
a next patch if this one works ok, as we don't want to send a renaming
patch to -stable.
---
[media] Fix Digital TV breakage with mt20xx tuner
The mt20xx tuner passes V4L2_TUNER_DIGITAL_TV to tuner core. However, the
check_mode code now doesn't handle it well. Change the logic there to
avoid the breakage, and fix a test for analog-only at g_tuner.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c
index 5748d04..aa45952 100644
--- a/drivers/media/video/tuner-core.c
+++ b/drivers/media/video/tuner-core.c
@@ -732,10 +732,19 @@ static int tuner_remove(struct i2c_client *client)
* returns 0.
* This function is needed for boards that have a separate tuner for
* radio (like devices with tea5767).
+ * NOTE: mt20xx uses V4L2_TUNER_DIGITAL_TV and calls set_tv_freq to
+ * select a TV frequency. So, t_mode = T_ANALOG_TV could actually
+ * be used to represent a Digital TV too.
*/
static inline int check_mode(struct tuner *t, enum v4l2_tuner_type mode)
{
- if ((1 << mode & t->mode_mask) == 0)
+ int t_mode;
+ if (mode == V4L2_TUNER_RADIO)
+ t_mode = T_RADIO;
+ else
+ t_mode = T_ANALOG_TV;
+
+ if ((t_mode & t->mode_mask) == 0)
return -EINVAL;
return 0;
@@ -1034,7 +1043,7 @@ static void tuner_status(struct dvb_frontend *fe)
case V4L2_TUNER_RADIO:
p = "radio";
break;
- case V4L2_TUNER_DIGITAL_TV:
+ case V4L2_TUNER_DIGITAL_TV: /* Used by mt20xx */
p = "digital TV";
break;
case V4L2_TUNER_ANALOG_TV:
@@ -1166,9 +1175,8 @@ static int tuner_g_tuner(struct v4l2_subdev *sd, struct v4l2_tuner *vt)
vt->type = t->mode;
if (analog_ops->get_afc)
vt->afc = analog_ops->get_afc(&t->fe);
- if (t->mode == V4L2_TUNER_ANALOG_TV)
- vt->capability |= V4L2_TUNER_CAP_NORM;
if (t->mode != V4L2_TUNER_RADIO) {
+ vt->capability |= V4L2_TUNER_CAP_NORM;
vt->rangelow = tv_range[0] * 16;
vt->rangehigh = tv_range[1] * 16;
return 0;
next prev parent reply other threads:[~2011-07-13 4:23 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-12 21:21 2.6.39 "tuner-core: remove usage of DIGITAL_TV" breaks saa7134 with mt2050 Simon Arlott
2011-07-13 4:23 ` Mauro Carvalho Chehab [this message]
2011-07-13 23:15 ` Simon Arlott
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=4E1D1DAF.4060900@redhat.com \
--to=mchehab@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=simon@fire.lp0.eu \
/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