Commit 0cb73639 authored by Igor M. Liplianin's avatar Igor M. Liplianin Committed by Mauro Carvalho Chehab
Browse files

[media] cx88: add support for TeVii S464 PCI card



The card uses ds3000 demod from Montage.

Signed-off-by: default avatarIgor M. Liplianin <liplianin@me.by>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent dcc8a122
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -982,6 +982,8 @@ static int ds3000_set_frontend(struct dvb_frontend *fe,

	dprintk("%s() ", __func__);

	if (state->config->set_ts_params)
		state->config->set_ts_params(fe, 0);
	/* Tune */
	/* unknown */
	ds3000_tuner_writereg(state, 0x07, 0x02);
+2 −0
Original line number Diff line number Diff line
@@ -28,6 +28,8 @@ struct ds3000_config {
	/* the demodulator's i2c address */
	u8 demod_address;
	u8 ci_mode;
	/* Set device param to start dma */
	int (*set_ts_params)(struct dvb_frontend *fe, int is_punctured);
};

#if defined(CONFIG_DVB_DS3000) || \
+17 −0
Original line number Diff line number Diff line
@@ -1953,6 +1953,18 @@ static const struct cx88_board cx88_boards[] = {
		} },
		.mpeg           = CX88_MPEG_DVB,
	},
	[CX88_BOARD_TEVII_S464] = {
		.name           = "TeVii S464 DVB-S/S2",
		.tuner_type     = UNSET,
		.radio_type     = UNSET,
		.tuner_addr     = ADDR_UNSET,
		.radio_addr     = ADDR_UNSET,
		.input          = {{
			.type   = CX88_VMUX_DVB,
			.vmux   = 0,
		} },
		.mpeg           = CX88_MPEG_DVB,
	},
	[CX88_BOARD_OMICOM_SS4_PCI] = {
		.name           = "Omicom SS4 DVB-S/S2 PCI",
		.tuner_type     = UNSET,
@@ -2528,6 +2540,10 @@ static const struct cx88_subid cx88_subids[] = {
		.subvendor = 0xd460,
		.subdevice = 0x9022,
		.card      = CX88_BOARD_TEVII_S460,
	}, {
		.subvendor = 0xd464,
		.subdevice = 0x9022,
		.card      = CX88_BOARD_TEVII_S464,
	}, {
		.subvendor = 0xA044,
		.subdevice = 0x2011,
@@ -3286,6 +3302,7 @@ static void cx88_card_setup(struct cx88_core *core)
	}
	case  CX88_BOARD_TEVII_S420:
	case  CX88_BOARD_TEVII_S460:
	case  CX88_BOARD_TEVII_S464:
	case  CX88_BOARD_OMICOM_SS4_PCI:
	case  CX88_BOARD_TBS_8910:
	case  CX88_BOARD_TBS_8920:
+23 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@
#include "stb6100.h"
#include "stb6100_proc.h"
#include "mb86a16.h"
#include "ds3000.h"

MODULE_DESCRIPTION("driver for cx2388x based DVB cards");
MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");
@@ -648,6 +649,20 @@ static const struct cx24116_config tevii_s460_config = {
	.reset_device  = cx24116_reset_device,
};

static int ds3000_set_ts_param(struct dvb_frontend *fe,
	int is_punctured)
{
	struct cx8802_dev *dev = fe->dvb->priv;
	dev->ts_gen_cntrl = 4;

	return 0;
}

static struct ds3000_config tevii_ds3000_config = {
	.demod_address = 0x68,
	.set_ts_params = ds3000_set_ts_param,
};

static const struct stv0900_config prof_7301_stv0900_config = {
	.demod_address = 0x6a,
/*	demod_mode = 0,*/
@@ -1381,6 +1396,14 @@ static int dvb_register(struct cx8802_dev *dev)
		if (fe0->dvb.frontend != NULL)
			fe0->dvb.frontend->ops.set_voltage = tevii_dvbs_set_voltage;
		break;
	case CX88_BOARD_TEVII_S464:
		fe0->dvb.frontend = dvb_attach(ds3000_attach,
						&tevii_ds3000_config,
						&core->i2c_adap);
		if (fe0->dvb.frontend != NULL)
			fe0->dvb.frontend->ops.set_voltage =
							tevii_dvbs_set_voltage;
		break;
	case CX88_BOARD_OMICOM_SS4_PCI:
	case CX88_BOARD_TBS_8920:
	case CX88_BOARD_PROF_7300:
+1 −0
Original line number Diff line number Diff line
@@ -373,6 +373,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
		ir_codes = RC_MAP_TBS_NEC;
		ir->sampling = 0xff00; /* address */
		break;
	case CX88_BOARD_TEVII_S464:
	case CX88_BOARD_TEVII_S460:
	case CX88_BOARD_TEVII_S420:
		ir_codes = RC_MAP_TEVII_NEC;
Loading