|
@@ -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 "
|