V4L/DVB (9918): cx88: advise/acquire clean-up for HVR-1300/3000/4000
This cleans-up the advise/acquire methods. This has been tested on the hvr-1300/4000 and assumed to be correct on the hvr-3000. This update also fixes analogue tuning on the hvr-1300 when in blackbird mode. Signed-off-by: Darron Broad <darron@kewl.org> Cc: Steven Toth <stoth@hauppauge.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
6639f1e060
commit
7939273726
|
@ -1244,8 +1244,16 @@ static int cx8802_blackbird_advise_acquire(struct cx8802_driver *drv)
|
|||
* We're being given access to re-arrange the GPIOs.
|
||||
* Take the bus off the cx22702 and put the cx23416 on it.
|
||||
*/
|
||||
cx_clear(MO_GP0_IO, 0x00000080); /* cx22702 in reset */
|
||||
cx_set(MO_GP0_IO, 0x00000004); /* Disable the cx22702 */
|
||||
/* Toggle reset on cx22702 leaving i2c active */
|
||||
cx_set(MO_GP0_IO, 0x00000080);
|
||||
udelay(1000);
|
||||
cx_clear(MO_GP0_IO, 0x00000080);
|
||||
udelay(50);
|
||||
cx_set(MO_GP0_IO, 0x00000080);
|
||||
udelay(1000);
|
||||
/* tri-state the cx22702 pins */
|
||||
cx_set(MO_GP0_IO, 0x00000004);
|
||||
udelay(1000);
|
||||
break;
|
||||
default:
|
||||
err = -ENODEV;
|
||||
|
|
|
@ -1128,40 +1128,44 @@ static int cx8802_dvb_advise_acquire(struct cx8802_driver *drv)
|
|||
* on the bus. Take the bus from the cx23416 and enable the
|
||||
* cx22702 demod
|
||||
*/
|
||||
cx_set(MO_GP0_IO, 0x00000080); /* cx22702 out of reset and enable */
|
||||
/* Toggle reset on cx22702 leaving i2c active */
|
||||
cx_set(MO_GP0_IO, 0x00000080);
|
||||
udelay(1000);
|
||||
cx_clear(MO_GP0_IO, 0x00000080);
|
||||
udelay(50);
|
||||
cx_set(MO_GP0_IO, 0x00000080);
|
||||
udelay(1000);
|
||||
/* enable the cx22702 pins */
|
||||
cx_clear(MO_GP0_IO, 0x00000004);
|
||||
udelay(1000);
|
||||
break;
|
||||
|
||||
case CX88_BOARD_HAUPPAUGE_HVR3000:
|
||||
case CX88_BOARD_HAUPPAUGE_HVR4000:
|
||||
if(core->dvbdev->frontends.active_fe_id == 1) {
|
||||
/* DVB-S/S2 Enabled */
|
||||
|
||||
/* Toggle reset on cx22702 leaving i2c active */
|
||||
cx_write(MO_GP0_IO, (core->board.input[0].gpio0 & 0x0000ff00) | 0x00000080);
|
||||
udelay(1000);
|
||||
cx_clear(MO_GP0_IO, 0x00000080);
|
||||
udelay(50);
|
||||
cx_set(MO_GP0_IO, 0x00000080); /* cx22702 out of reset */
|
||||
cx_set(MO_GP0_IO, 0x00000004); /* tri-state the cx22702 pins */
|
||||
udelay(1000);
|
||||
|
||||
cx_write(MO_SRST_IO, 1); /* Take the cx24116/cx24123 out of reset */
|
||||
/* Toggle reset on cx22702 leaving i2c active */
|
||||
cx_set(MO_GP0_IO, 0x00000080);
|
||||
udelay(1000);
|
||||
cx_clear(MO_GP0_IO, 0x00000080);
|
||||
udelay(50);
|
||||
cx_set(MO_GP0_IO, 0x00000080);
|
||||
udelay(1000);
|
||||
switch (core->dvbdev->frontends.active_fe_id) {
|
||||
case 1: /* DVB-S/S2 Enabled */
|
||||
/* tri-state the cx22702 pins */
|
||||
cx_set(MO_GP0_IO, 0x00000004);
|
||||
/* Take the cx24116/cx24123 out of reset */
|
||||
cx_write(MO_SRST_IO, 1);
|
||||
core->dvbdev->ts_gen_cntrl = 0x02; /* Parallel IO */
|
||||
} else
|
||||
if (core->dvbdev->frontends.active_fe_id == 2) {
|
||||
/* DVB-T Enabled */
|
||||
|
||||
break;
|
||||
case 2: /* DVB-T Enabled */
|
||||
/* Put the cx24116/cx24123 into reset */
|
||||
cx_write(MO_SRST_IO, 0);
|
||||
|
||||
/* cx22702 out of reset and enable it */
|
||||
cx_set(MO_GP0_IO, 0x00000080);
|
||||
/* enable the cx22702 pins */
|
||||
cx_clear(MO_GP0_IO, 0x00000004);
|
||||
core->dvbdev->ts_gen_cntrl = 0x0c; /* Serial IO */
|
||||
udelay(1000);
|
||||
break;
|
||||
}
|
||||
udelay(1000);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue