diff options
author | Devin Heitmueller <dheitmueller@kernellabs.com> | 2009-07-12 16:05:02 -0400 |
---|---|---|
committer | Devin Heitmueller <dheitmueller@kernellabs.com> | 2009-07-12 16:05:02 -0400 |
commit | 6897951e3af638926c8bf5f660760f4c15fbdee1 (patch) | |
tree | 65b9f6b1bb4386b9745617ceb779d6cf2d172075 /linux/drivers | |
parent | 784f927dcf2cc497d4a2c44fb4f1321d9cf0c45b (diff) | |
download | mediapointer-dvb-s2-6897951e3af638926c8bf5f660760f4c15fbdee1.tar.gz mediapointer-dvb-s2-6897951e3af638926c8bf5f660760f4c15fbdee1.tar.bz2 |
em28xx: fix tuning problem in HVR-900 (R1)
From: Devin Heitmueller <dheitmueller@kernellabs.com>
When the change was introduced in the zl10353 for the i2c gate behavior, this
broke the HVR-900 which was not behind a gate. Use a version of the zl10353
config profile that indicates the tuner is not behind such a gate.
Without this patch the first tune succeeds, but subsequent tuning attempts
will fail.
The change also renames the terratec zl10353 profile I wrote to be more
generic, since it is shared by the non-terratec device.
Thanks to Michael Krufky for providing a HVR-900 and DVB-T environment to test
with.
Priority: high
Cc: Michael Krufky <mkrufky@kernellabs.com>
Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Diffstat (limited to 'linux/drivers')
-rw-r--r-- | linux/drivers/media/video/em28xx/em28xx-dvb.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/linux/drivers/media/video/em28xx/em28xx-dvb.c b/linux/drivers/media/video/em28xx/em28xx-dvb.c index 86be58641..032eb38d6 100644 --- a/linux/drivers/media/video/em28xx/em28xx-dvb.c +++ b/linux/drivers/media/video/em28xx/em28xx-dvb.c @@ -244,7 +244,7 @@ static struct s5h1409_config em28xx_s5h1409_with_xc3028 = { .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK }; -static struct zl10353_config em28xx_terratec_xs_zl10353_xc3028 = { +static struct zl10353_config em28xx_zl10353_xc3028_no_i2c_gate = { .demod_address = (0x1e >> 1), .no_tuner = 1, .disable_i2c_gate_ctrl = 1, @@ -441,7 +441,6 @@ static int dvb_init(struct em28xx *dev) goto out_free; } break; - case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900: case EM2880_BOARD_KWORLD_DVB_310U: case EM2880_BOARD_EMPIRE_DUAL_TV: dvb->frontend = dvb_attach(zl10353_attach, @@ -452,9 +451,18 @@ static int dvb_init(struct em28xx *dev) goto out_free; } break; + case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900: + dvb->frontend = dvb_attach(zl10353_attach, + &em28xx_zl10353_xc3028_no_i2c_gate, + &dev->i2c_adap); + if (attach_xc3028(0x61, dev) < 0) { + result = -EINVAL; + goto out_free; + } + break; case EM2880_BOARD_TERRATEC_HYBRID_XS: dvb->frontend = dvb_attach(zl10353_attach, - &em28xx_terratec_xs_zl10353_xc3028, + &em28xx_zl10353_xc3028_no_i2c_gate, &dev->i2c_adap); if (dvb->frontend == NULL) { /* This board could have either a zl10353 or a mt352. |