All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Stefan Pöschel" <basic.master@gmx.de>
To: Linux Media Mailing List <linux-media@vger.kernel.org>
Cc: Antti Palosaari <crope@iki.fi>
Subject: Re: [PATCH] af9035: fix dual tuner detection with PCTV 79e
Date: Sat, 16 Jul 2016 22:05:18 +0200	[thread overview]
Message-ID: <578A937E.4060502@gmx.de> (raw)
In-Reply-To: <8c71e2a3-ca04-0215-b3cb-c478afa9b1cb@iki.fi>

Am 15.07.2016 um 08:21 schrieb Antti Palosaari:
> Applied and PULL requested for 4.7.

Great, thanks!

> Anyhow, it does not apply for 4.6. You must backport that patch to 4.6
> stable also!

I have never done backporting before, so I need some advice I think:
Am I right that I have to create the patch, now just based on tag "v4.6"
of the media_tree repo?
And then move that patch (properly named) to the backports subdir of the
media_build repo, with regarding modification of the backports.txt:
Using an "add" entry under "[4.6.255]" and an "delete" entry under
"[4.5.255]" (so that it just gets applied to 4.6.x) ?

BTW I wonder about the status update of
https://patchwork.linuxtv.org/patch/35337/ from "New" to "Superseeded"
(instead of "Accepted")...why is this?

Regards,
	Stefan


> On 07/11/2016 08:31 PM, Stefan Pöschel wrote:
>> The value 5 of the EEPROM_TS_MODE register (meaning dual tuner
>> presence) is
>> only valid for AF9035 devices. For IT9135 devices it is invalid and
>> led to a
>> false positive dual tuner mode detection with PCTV 79e.
>> Therefore on non-AF9035 devices and with value 5 the driver now
>> defaults to
>> single tuner mode and outputs a regarding info message to log.
>>
>> This fixes Bugzilla bug #118561.
>>
>> Reported-by: Marc Duponcheel <marc@offline.be>
>> Signed-off-by: Stefan Pöschel <basic.master@gmx.de>
>> ---
>>  drivers/media/usb/dvb-usb-v2/af9035.c | 50
>> +++++++++++++++++++++++------------
>>  drivers/media/usb/dvb-usb-v2/af9035.h |  2 +-
>>  2 files changed, 34 insertions(+), 18 deletions(-)
>>
>> diff --git a/drivers/media/usb/dvb-usb-v2/af9035.c
>> b/drivers/media/usb/dvb-usb-v2/af9035.c
>> index eabede4..ca018cd 100644
>> --- a/drivers/media/usb/dvb-usb-v2/af9035.c
>> +++ b/drivers/media/usb/dvb-usb-v2/af9035.c
>> @@ -496,7 +496,8 @@ static int af9035_identify_state(struct
>> dvb_usb_device *d, const char **name)
>>  {
>>      struct state *state = d_to_priv(d);
>>      struct usb_interface *intf = d->intf;
>> -    int ret;
>> +    int ret, ts_mode_invalid;
>> +    u8 tmp;
>>      u8 wbuf[1] = { 1 };
>>      u8 rbuf[4];
>>      struct usb_req req = { CMD_FW_QUERYINFO, 0, sizeof(wbuf), wbuf,
>> @@ -530,6 +531,36 @@ static int af9035_identify_state(struct
>> dvb_usb_device *d, const char **name)
>>          state->eeprom_addr = EEPROM_BASE_AF9035;
>>      }
>>
>> +
>> +    /* check for dual tuner mode */
>> +    ret = af9035_rd_reg(d, state->eeprom_addr + EEPROM_TS_MODE, &tmp);
>> +    if (ret < 0)
>> +        goto err;
>> +
>> +    ts_mode_invalid = 0;
>> +    switch (tmp) {
>> +    case 0:
>> +        break;
>> +    case 1:
>> +    case 3:
>> +        state->dual_mode = true;
>> +        break;
>> +    case 5:
>> +        if (state->chip_type != 0x9135 && state->chip_type != 0x9306)
>> +            state->dual_mode = true;    /* AF9035 */
>> +        else
>> +            ts_mode_invalid = 1;
>> +        break;
>> +    default:
>> +        ts_mode_invalid = 1;
>> +    }
>> +
>> +    dev_dbg(&intf->dev, "ts mode=%d dual mode=%d\n", tmp,
>> state->dual_mode);
>> +
>> +    if (ts_mode_invalid)
>> +        dev_info(&intf->dev, "ts mode=%d not supported, defaulting to
>> single tuner mode!", tmp);
>> +
>> +
>>      ret = af9035_ctrl_msg(d, &req);
>>      if (ret < 0)
>>          goto err;
>> @@ -698,11 +729,7 @@ static int af9035_download_firmware(struct
>> dvb_usb_device *d,
>>       * which is done by master demod.
>>       * Master feeds also clock and controls power via GPIO.
>>       */
>> -    ret = af9035_rd_reg(d, state->eeprom_addr + EEPROM_TS_MODE, &tmp);
>> -    if (ret < 0)
>> -        goto err;
>> -
>> -    if (tmp == 1 || tmp == 3 || tmp == 5) {
>> +    if (state->dual_mode) {
>>          /* configure gpioh1, reset & power slave demod */
>>          ret = af9035_wr_reg_mask(d, 0x00d8b0, 0x01, 0x01);
>>          if (ret < 0)
>> @@ -835,17 +862,6 @@ static int af9035_read_config(struct
>> dvb_usb_device *d)
>>      }
>>
>>
>> -
>> -    /* check if there is dual tuners */
>> -    ret = af9035_rd_reg(d, state->eeprom_addr + EEPROM_TS_MODE, &tmp);
>> -    if (ret < 0)
>> -        goto err;
>> -
>> -    if (tmp == 1 || tmp == 3 || tmp == 5)
>> -        state->dual_mode = true;
>> -
>> -    dev_dbg(&intf->dev, "ts mode=%d dual mode=%d\n", tmp,
>> state->dual_mode);
>> -
>>      if (state->dual_mode) {
>>          /* read 2nd demodulator I2C address */
>>          ret = af9035_rd_reg(d,
>> diff --git a/drivers/media/usb/dvb-usb-v2/af9035.h
>> b/drivers/media/usb/dvb-usb-v2/af9035.h
>> index c91d1a3..1f83c92 100644
>> --- a/drivers/media/usb/dvb-usb-v2/af9035.h
>> +++ b/drivers/media/usb/dvb-usb-v2/af9035.h
>> @@ -113,7 +113,7 @@ static const u32 clock_lut_it9135[] = {
>>   * 0  TS
>>   * 1  DCA + PIP
>>   * 3  PIP
>> - * 5  DCA + PIP
>> + * 5  DCA + PIP (AF9035 only)
>>   * n  DCA
>>   *
>>   * Values 0, 3 and 5 are seen to this day. 0 for single TS and 3/5
>> for dual TS.
>>
> 

  parent reply	other threads:[~2016-07-16 20:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-11 17:31 [PATCH] af9035: fix dual tuner detection with PCTV 79e Stefan Pöschel
2016-07-15  6:21 ` Antti Palosaari
2016-07-15 10:24   ` Mauro Carvalho Chehab
2016-07-16 20:05   ` Stefan Pöschel [this message]
2016-07-17  8:59     ` Antti Palosaari
2016-07-20 17:14       ` basic.master
  -- strict thread matches above, loose matches on Subject: below --
2016-09-02 23:37 Antti Palosaari

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=578A937E.4060502@gmx.de \
    --to=basic.master@gmx.de \
    --cc=crope@iki.fi \
    --cc=linux-media@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.