From: "istvan_v@mailbox.hu" <istvan_v@mailbox.hu>
To: linux-media@vger.kernel.org
Subject: XC4000: setting registers
Date: Sat, 04 Jun 2011 17:12:42 +0200 [thread overview]
Message-ID: <4DEA4B6A.70602@mailbox.hu> (raw)
In-Reply-To: <BANLkTimEEGsMP6PDXf5W5p9wW7wdWEEOiA@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 295 bytes --]
This patch implements setting the registers in xc4000_set_params()
and xc4000_set_analog_params(). A new register is defined which enables
filtering of the composite video output (this is needed to avoid bad
picture quality with some boards).
Signed-off-by: Istvan Varga <istvan_v@mailbox.hu>
[-- Attachment #2: xc4000_registers.patch --]
[-- Type: text/x-patch, Size: 3233 bytes --]
diff -uNr xc4000_orig/drivers/media/common/tuners/xc4000.c xc4000/drivers/media/common/tuners/xc4000.c
--- xc4000_orig/drivers/media/common/tuners/xc4000.c 2011-06-04 14:46:15.000000000 +0200
+++ xc4000/drivers/media/common/tuners/xc4000.c 2011-06-04 15:22:06.000000000 +0200
@@ -131,6 +131,7 @@
#define XREG_SEEK_MODE 0x06
#define XREG_POWER_DOWN 0x08
#define XREG_SIGNALSOURCE 0x0A
+#define XREG_SMOOTHEDCVBS 0x0E
#define XREG_AMPLITUDE 0x10
/* Registers (Read-only) */
@@ -1218,15 +1219,35 @@
"xc4000: xc_SetSignalSource(%d) failed\n",
priv->rf_mode);
goto fail;
+ } else {
+ u16 video_mode, audio_mode;
+ video_mode = XC4000_Standard[priv->video_standard].VideoMode;
+ audio_mode = XC4000_Standard[priv->video_standard].AudioMode;
+ if (type == DTV6 && priv->firm_version != 0x0102)
+ video_mode |= 0x0001;
+ ret = xc_SetTVStandard(priv, video_mode, audio_mode);
+ if (ret != XC_RESULT_SUCCESS) {
+ printk(KERN_ERR "xc4000: xc_SetTVStandard failed\n");
+ /* DJH - do not return when it fails... */
+ /* goto fail; */
+ }
}
- ret = xc_SetTVStandard(priv,
- XC4000_Standard[priv->video_standard].VideoMode,
- XC4000_Standard[priv->video_standard].AudioMode);
- if (ret != XC_RESULT_SUCCESS) {
- printk(KERN_ERR "xc4000: xc_SetTVStandard failed\n");
- goto fail;
+ if (priv->card_type == XC4000_CARD_WINFAST_CX88) {
+ if (xc_write_reg(priv, XREG_D_CODE, 0) == 0)
+ ret = 0;
+ if (xc_write_reg(priv, XREG_AMPLITUDE,
+ (priv->firm_version == 0x0102 ? 132 : 134))
+ != 0)
+ ret = -EREMOTEIO;
+ if (xc_write_reg(priv, XREG_SMOOTHEDCVBS, 1) != 0)
+ ret = -EREMOTEIO;
+ if (ret != 0) {
+ printk(KERN_ERR "xc4000: setting registers failed\n");
+ /* goto fail; */
+ }
}
+
xc_tune_channel(priv, priv->freq_hz, XC_TUNE_DIGITAL);
ret = 0;
@@ -1311,14 +1332,36 @@
"xc4000: xc_SetSignalSource(%d) failed\n",
priv->rf_mode);
goto fail;
+ } else {
+ u16 video_mode, audio_mode;
+ video_mode = XC4000_Standard[priv->video_standard].VideoMode;
+ audio_mode = XC4000_Standard[priv->video_standard].AudioMode;
+ if (priv->video_standard < XC4000_BG_PAL_A2) {
+ if (type & NOGD)
+ video_mode &= 0xFF7F;
+ } else if (priv->video_standard < XC4000_I_PAL_NICAM) {
+ if (priv->card_type == XC4000_CARD_WINFAST_CX88 &&
+ priv->firm_version == 0x0102)
+ video_mode &= 0xFEFF;
+ }
+ ret = xc_SetTVStandard(priv, video_mode, audio_mode);
+ if (ret != XC_RESULT_SUCCESS) {
+ printk(KERN_ERR "xc4000: xc_SetTVStandard failed\n");
+ goto fail;
+ }
}
- ret = xc_SetTVStandard(priv,
- XC4000_Standard[priv->video_standard].VideoMode,
- XC4000_Standard[priv->video_standard].AudioMode);
- if (ret != XC_RESULT_SUCCESS) {
- printk(KERN_ERR "xc4000: xc_SetTVStandard failed\n");
- goto fail;
+ if (priv->card_type == XC4000_CARD_WINFAST_CX88) {
+ if (xc_write_reg(priv, XREG_D_CODE, 0) == 0)
+ ret = 0;
+ if (xc_write_reg(priv, XREG_AMPLITUDE, 1) != 0)
+ ret = -EREMOTEIO;
+ if (xc_write_reg(priv, XREG_SMOOTHEDCVBS, 1) != 0)
+ ret = -EREMOTEIO;
+ if (ret != 0) {
+ printk(KERN_ERR "xc4000: setting registers failed\n");
+ goto fail;
+ }
}
xc_tune_channel(priv, priv->freq_hz, XC_TUNE_ANALOG);
next prev parent reply other threads:[~2011-06-04 15:12 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-08 14:54 [linux-dvb] XC4000 patches for kernel 2.6.37.2 Mirek Slugeň
2011-05-31 2:48 ` Dmitri Belimov
2011-05-31 3:49 ` Devin Heitmueller
2011-05-31 7:43 ` Dmitri Belimov
2011-06-02 10:52 ` Devin Heitmueller
2011-06-02 14:41 ` Mauro Carvalho Chehab
2011-06-02 15:17 ` Devin Heitmueller
2011-06-02 16:35 ` Mauro Carvalho Chehab
2011-06-03 1:41 ` Dmitri Belimov
2011-06-03 12:12 ` Mauro Carvalho Chehab
2011-06-02 15:53 ` Mohammad Bahathir Hashim
2011-06-02 17:05 ` Mauro Carvalho Chehab
2011-06-03 3:54 ` Mohammad Bahathir Hashim
[not found] ` <4DE8D5AC.7060002@mailbox.hu>
2011-06-03 12:46 ` [linux-dvb] XC4000: added card_type Devin Heitmueller
[not found] ` <4DE8DEC6.6080008@mailbox.hu>
2011-06-03 14:00 ` Mauro Carvalho Chehab
2011-06-03 14:22 ` istvan_v
2011-06-03 13:17 ` Mauro Carvalho Chehab
2011-06-03 13:55 ` XC4000: updated standards table istvan_v
2011-06-03 15:17 ` XC4000: added support for 7 MHz DVB-T istvan_v
2011-06-03 15:23 ` XC4000: added mutex istvan_v
2011-06-03 15:27 ` XC4000: fixed frequency error istvan_v
2011-06-04 14:48 ` XC4000: added firmware_name parameter istvan_v
2011-06-04 14:52 ` XC4000: simplified seek_firmware() istvan_v
2011-06-04 14:56 ` XC4000: simplified load_scode istvan_v
2011-06-04 14:59 ` XC4000: check_firmware() cleanup istvan_v
2011-06-04 15:03 ` XC4000: implemented power management istvan_v
2011-06-04 15:04 ` XC4000: firmware initialization istvan_v
2011-06-04 15:08 ` XC4000: debug message improvements istvan_v
2011-06-04 15:12 ` istvan_v [this message]
2011-06-05 12:05 ` XC4000: setting registers Mauro Carvalho Chehab
2011-06-05 12:28 ` Istvan Varga
2011-06-05 12:56 ` Mauro Carvalho Chehab
2011-06-05 14:30 ` Istvan Varga
2011-06-04 15:15 ` XC4000: added audio_std module parameter istvan_v
2011-06-04 15:17 ` XC4000: implemented analog TV and radio istvan_v
2011-06-04 15:18 ` XC4000: xc_tune_channel() cleanup istvan_v
2011-06-04 15:21 ` XC4000: removed redundant tuner reset istvan_v
2011-06-04 15:25 ` XC4000: detect XC4100 istvan_v
2011-06-02 4:58 ` [linux-dvb] XC4000 patches for kernel 2.6.37.2 Mohammad Bahathir Hashim
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=4DEA4B6A.70602@mailbox.hu \
--to=istvan_v@mailbox.hu \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox