aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx88/cx88-cards.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/cx88/cx88-cards.c')
-rw-r--r--drivers/media/video/cx88/cx88-cards.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index 1039757e2c4e..d2aa27e90ac5 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -2702,10 +2702,22 @@ static int cx88_xc5000_tuner_callback(struct cx88_core *core,
2702 switch (core->boardnr) { 2702 switch (core->boardnr) {
2703 case CX88_BOARD_PINNACLE_PCTV_HD_800i: 2703 case CX88_BOARD_PINNACLE_PCTV_HD_800i:
2704 if (command == 0) { /* This is the reset command from xc5000 */ 2704 if (command == 0) { /* This is the reset command from xc5000 */
2705 /* Reset XC5000 tuner via SYS_RSTO_pin */ 2705
2706 cx_write(MO_SRST_IO, 0); 2706 /* djh - According to the engineer at PCTV Systems,
2707 msleep(10); 2707 the xc5000 reset pin is supposed to be on GPIO12.
2708 cx_write(MO_SRST_IO, 1); 2708 However, despite three nights of effort, pulling
2709 that GPIO low didn't reset the xc5000. While
2710 pulling MO_SRST_IO low does reset the xc5000, this
2711 also resets in the s5h1409 being reset as well.
2712 This causes tuning to always fail since the internal
2713 state of the s5h1409 does not match the driver's
2714 state. Given that the only two conditions in which
2715 the driver performs a reset is during firmware load
2716 and powering down the chip, I am taking out the
2717 reset. We know that the chip is being reset
2718 when the cx88 comes online, and not being able to
2719 do power management for this board is worse than
2720 not having any tuning at all. */
2709 return 0; 2721 return 0;
2710 } else { 2722 } else {
2711 err_printk(core, "xc5000: unknown tuner " 2723 err_printk(core, "xc5000: unknown tuner "