diff options
Diffstat (limited to 'drivers/media/video/cx88')
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 20 |
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 " |