From patchwork Fri Jul 22 18:35:52 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alina Friedrichsen X-Patchwork-Id: 1000352 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter2.kernel.org (8.14.4/8.14.4) with ESMTP id p6MIZvEq010560 for ; Fri, 22 Jul 2011 18:35:57 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754862Ab1GVSfz (ORCPT ); Fri, 22 Jul 2011 14:35:55 -0400 Received: from mailout-de.gmx.net ([213.165.64.23]:40540 "HELO mailout-de.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1754695Ab1GVSfz (ORCPT ); Fri, 22 Jul 2011 14:35:55 -0400 Received: (qmail 25100 invoked by uid 0); 22 Jul 2011 18:35:53 -0000 Received: from 217.140.74.94 by www016.gmx.net with HTTP; Fri, 22 Jul 2011 20:35:52 +0200 (CEST) Cc: rglowery@exemail.com.au Date: Fri, 22 Jul 2011 20:35:52 +0200 From: "Alina Friedrichsen" Message-ID: <20110722183552.169950@gmx.net> MIME-Version: 1.0 Subject: [PATCH v3] tuner_xc2028: Allow selection of the frequency adjustment code for XC3028 To: linux-media@vger.kernel.org X-Authenticated: #24363424 X-Flags: 0001 X-Mailer: WWW-Mail 6100 (Global Message Exchange) X-Priority: 3 X-Provags-ID: V01U2FsdGVkX1+sfEUWh+ys0MYG2+aco/KYiUFVy6J8jTzjyBo24A vS8Qz+YVy2fmGnLYD0m/GKLykddqHskJti/A== X-GMX-UID: PPEeeQo7bGInO9m3HmVnyIVvcmZ1Ztxe Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter2.kernel.org [140.211.167.43]); Fri, 22 Jul 2011 18:35:57 +0000 (UTC) Since many, many kernel releases my Hauppauge WinTV HVR-1400 doesn't work anymore, and nobody feels responsible to fix it. The code to get it work is still in there, it's only commented out. My patch to enable it was rejected, because somebody had fear that it could break other cards. So here is a new patch, that allows you to select the frequency adjustment code by a module parameter. Default is the old code, so it can't break anything. Signed-off-by: Alina Friedrichsen --- -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff -urN linux-3.0.orig/drivers/media/common/tuners/tuner-xc2028.c linux-3.0/drivers/media/common/tuners/tuner-xc2028.c --- linux-3.0.orig/drivers/media/common/tuners/tuner-xc2028.c 2011-07-22 04:17:23.000000000 +0200 +++ linux-3.0/drivers/media/common/tuners/tuner-xc2028.c 2011-07-22 20:15:08.212540252 +0200 @@ -54,6 +54,11 @@ MODULE_PARM_DESC(firmware_name, "Firmware file name. Allows overriding the " "default firmware name\n"); +static int freq_magic; +module_param(freq_magic, int, 0644); +MODULE_PARM_DESC(freq_magic, "Selects the frequency adjustment code " + "for XC3028. Set it to 1 if tuning fails."); + static LIST_HEAD(hybrid_tuner_instance_list); static DEFINE_MUTEX(xc2028_list_mutex); @@ -967,34 +972,36 @@ * newer firmwares */ -#if 1 - /* - * The proper adjustment would be to do it at s-code table. - * However, this didn't work, as reported by - * Robert Lowery - */ - - if (priv->cur_fw.type & DTV7) - offset += 500000; - -#else - /* - * Still need tests for XC3028L (firmware 3.2 or upper) - * So, for now, let's just comment the per-firmware - * version of this change. Reports with xc3028l working - * with and without the lines bellow are welcome - */ + if (!freq_magic) { + /* + * The proper adjustment would be to do it at s-code + * table. However, this didn't work, as reported by + * Robert Lowery + */ - if (priv->firm_version < 0x0302) { if (priv->cur_fw.type & DTV7) offset += 500000; + } else { - if (priv->cur_fw.type & DTV7) - offset -= 300000; - else if (type != ATSC) /* DVB @6MHz, DTV 8 and DTV 7/8 */ - offset += 200000; + /* + * Still need tests for XC3028L (firmware 3.2 or upper) + * So, for now, let's just comment the per-firmware + * version of this change. Reports with xc3028l working + * with and without the lines bellow are welcome + */ + + if (priv->firm_version < 0x0302) { + if (priv->cur_fw.type & DTV7) + offset += 500000; + } else { + if (priv->cur_fw.type & DTV7) + offset -= 300000; + else if (type != ATSC) { + /* DVB @6MHz, DTV 8 and DTV 7/8 */ + offset += 200000; + } + } } -#endif } div = (freq - offset + DIV / 2) / DIV;