aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/common
diff options
context:
space:
mode:
authorDevin Heitmueller <dheitmueller@kernellabs.com>2009-04-02 21:02:39 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-06-16 17:21:05 -0400
commit7f05b530bea09606401dfed386a836b8b7292e65 (patch)
tree9a74149bfc7b37e3a897a8a88adaf200816e35c9 /drivers/media/common
parent361d4892cdec41faac5806fcd43cf4898990e0a4 (diff)
V4L/DVB (11793): xc5000: Properly support power down for newer firmware
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). Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/common')
-rw-r--r--drivers/media/common/tuners/xc5000.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/media/common/tuners/xc5000.c b/drivers/media/common/tuners/xc5000.c
index a9493e1f0f60..c956c82524ec 100644
--- a/drivers/media/common/tuners/xc5000.c
+++ b/drivers/media/common/tuners/xc5000.c
@@ -83,7 +83,7 @@ struct xc5000_priv {
83#define XREG_D_CODE 0x04 83#define XREG_D_CODE 0x04
84#define XREG_IF_OUT 0x05 84#define XREG_IF_OUT 0x05
85#define XREG_SEEK_MODE 0x07 85#define XREG_SEEK_MODE 0x07
86#define XREG_POWER_DOWN 0x0A 86#define XREG_POWER_DOWN 0x0A /* Obsolete */
87#define XREG_SIGNALSOURCE 0x0D /* 0=Air, 1=Cable */ 87#define XREG_SIGNALSOURCE 0x0D /* 0=Air, 1=Cable */
88#define XREG_SMOOTHEDCVBS 0x0E 88#define XREG_SMOOTHEDCVBS 0x0E
89#define XREG_XTALFREQ 0x0F 89#define XREG_XTALFREQ 0x0F
@@ -841,12 +841,14 @@ static int xc_load_fw_and_init_tuner(struct dvb_frontend *fe)
841 841
842static int xc5000_sleep(struct dvb_frontend *fe) 842static int xc5000_sleep(struct dvb_frontend *fe)
843{ 843{
844 struct xc5000_priv *priv = fe->tuner_priv;
845 int ret; 844 int ret;
846 845
847 dprintk(1, "%s()\n", __func__); 846 dprintk(1, "%s()\n", __func__);
848 847
849 ret = xc_write_reg(priv, XREG_POWER_DOWN, 0); 848 /* According to Xceive technical support, the "powerdown" register
849 was removed in newer versions of the firmware. The "supported"
850 way to sleep the tuner is to pull the reset pin low for 10ms */
851 ret = xc5000_TunerReset(fe);
850 if (ret != XC_RESULT_SUCCESS) { 852 if (ret != XC_RESULT_SUCCESS) {
851 printk(KERN_ERR 853 printk(KERN_ERR
852 "xc5000: %s() unable to shutdown tuner\n", 854 "xc5000: %s() unable to shutdown tuner\n",