V4L/DVB (11807): cx88: remove xc5000 reset for Pinnacle 800i

According to the engineer at PCTV Systems, the xc5000 reset pin is supposed
to be on GPIO12.  However, despite three nights of effort, pulling that GPIO
low didn't reset the xc5000.  While pulling MO_SRST_IO low does reset the
xc5000, this also resets in the s5h1409 being reset as well.  This causes
tuning to always fail since the internal state of the s5h1409 does not match
the driver's state.

Given that the only two conditions in which the driver performs a reset is
during firmware load and powering down the chip, I am taking out the reset.
We know that the chip is being reset when the cx88 comes online, and not being
able to do power management for this board is better than not having any
tuning at all.

Problem discovered when implementing proper power management for the xc5000,
which results in calls to the reset callback *after* s5h1409 is initialized.

Cc: Steven Toth <stoth@kernellabs.com>
Cc: Chaogui Zhang <czhang1974@gmail.com>
Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Devin Heitmueller 2009-05-14 21:50:36 -03:00 committed by Mauro Carvalho Chehab
parent e80858e88b
commit b8d91986e6
1 changed files with 16 additions and 4 deletions

View File

@ -2702,10 +2702,22 @@ static int cx88_xc5000_tuner_callback(struct cx88_core *core,
switch (core->boardnr) {
case CX88_BOARD_PINNACLE_PCTV_HD_800i:
if (command == 0) { /* This is the reset command from xc5000 */
/* Reset XC5000 tuner via SYS_RSTO_pin */
cx_write(MO_SRST_IO, 0);
msleep(10);
cx_write(MO_SRST_IO, 1);
/* djh - According to the engineer at PCTV Systems,
the xc5000 reset pin is supposed to be on GPIO12.
However, despite three nights of effort, pulling
that GPIO low didn't reset the xc5000. While
pulling MO_SRST_IO low does reset the xc5000, this
also resets in the s5h1409 being reset as well.
This causes tuning to always fail since the internal
state of the s5h1409 does not match the driver's
state. Given that the only two conditions in which
the driver performs a reset is during firmware load
and powering down the chip, I am taking out the
reset. We know that the chip is being reset
when the cx88 comes online, and not being able to
do power management for this board is worse than
not having any tuning at all. */
return 0;
} else {
err_printk(core, "xc5000: unknown tuner "