summaryrefslogtreecommitdiff
path: root/linux/drivers/media
diff options
context:
space:
mode:
authorDevin Heitmueller <dheitmueller@kernellabs.com>2009-04-02 21:02:39 -0400
committerDevin Heitmueller <dheitmueller@kernellabs.com>2009-04-02 21:02:39 -0400
commit8045b10212368c3a790397140241fedb87693641 (patch)
tree759024a7fb8b763eb3e7a698ebbf25fd32224d84 /linux/drivers/media
parent02073646971a4917cfe3ff0ccb4a85fd126dab6e (diff)
downloadmediapointer-dvb-s2-8045b10212368c3a790397140241fedb87693641.tar.gz
mediapointer-dvb-s2-8045b10212368c3a790397140241fedb87693641.tar.bz2
xc5000: Properly support power down for newer firmware
From: Devin Heitmueller <dheitmueller@kernellabs.com> Xceive got rid of the XREG_POWER_DOWN register in later firmware revisions. Their technical support informed me that the correct way to put the tuner to sleep is to pull the reset pin (but don't reload the firmware). Priority: normal Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Diffstat (limited to 'linux/drivers/media')
-rw-r--r--linux/drivers/media/common/tuners/xc5000.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/linux/drivers/media/common/tuners/xc5000.c b/linux/drivers/media/common/tuners/xc5000.c
index 8583689f9..2ca2cba6d 100644
--- a/linux/drivers/media/common/tuners/xc5000.c
+++ b/linux/drivers/media/common/tuners/xc5000.c
@@ -83,7 +83,7 @@ struct xc5000_priv {
#define XREG_D_CODE 0x04
#define XREG_IF_OUT 0x05
#define XREG_SEEK_MODE 0x07
-#define XREG_POWER_DOWN 0x0A
+#define XREG_POWER_DOWN 0x0A /* Obsolete */
#define XREG_SIGNALSOURCE 0x0D /* 0=Air, 1=Cable */
#define XREG_SMOOTHEDCVBS 0x0E
#define XREG_XTALFREQ 0x0F
@@ -860,12 +860,14 @@ static int xc_load_fw_and_init_tuner(struct dvb_frontend *fe)
static int xc5000_sleep(struct dvb_frontend *fe)
{
- struct xc5000_priv *priv = fe->tuner_priv;
int ret;
dprintk(1, "%s()\n", __func__);
- ret = xc_write_reg(priv, XREG_POWER_DOWN, 0);
+ /* According to Xceive technical support, the "powerdown" register
+ was removed in newer versions of the firmware. The "supported"
+ way to sleep the tuner is to pull the reset pin low for 10ms */
+ ret = xc5000_TunerReset(fe);
if (ret != XC_RESULT_SUCCESS) {
printk(KERN_ERR
"xc5000: %s() unable to shutdown tuner\n",