diff --git a/ddbridge/ddbridge-core.c b/ddbridge/ddbridge-core.c index a5e7216..d7aba5b 100644 --- a/ddbridge/ddbridge-core.c +++ b/ddbridge/ddbridge-core.c @@ -352,7 +352,7 @@ static struct ddb_info ddb_c2t2i_v0_8 = { .i2c_mask = 0x0f, .board_control = 0x0ff, .board_control_2 = 0xf00, - .ts_quirks = TS_QUIRK_SERIAL, + .ts_quirks = TS_QUIRK_SERIAL | TS_QUIRK_ALT_OSC, .tempmon_irq = 24, }; @@ -2212,7 +2212,7 @@ static int dvb_input_attach(struct ddb_input *input) struct ddb_port *port = input->port; struct dvb_adapter *adap = dvb->adap; struct dvb_demux *dvbdemux = &dvb->demux; - int par = 0; + int par = 0, osc24 = 0; dvb->attached = 0x01; @@ -2292,6 +2292,12 @@ static int dvb_input_attach(struct ddb_input *input) if (tuner_attach_tda18212dd(input) < 0) return -ENODEV; break; + case DDB_TUNER_DVBC2T2I_SONY_P: + if (input->port->dev->link[input->port->lnr].info->ts_quirks & + TS_QUIRK_ALT_OSC) + osc24 = 0; + else + osc24 = 1; case DDB_TUNER_DVBCT2_SONY_P: case DDB_TUNER_DVBC2T2_SONY_P: case DDB_TUNER_ISDBT_SONY_P: @@ -2300,16 +2306,17 @@ static int dvb_input_attach(struct ddb_input *input) par = 0; else par = 1; - case DDB_TUNER_DVBCT2_SONY: - case DDB_TUNER_DVBC2T2_SONY: - case DDB_TUNER_ISDBT_SONY: - if (demod_attach_cxd2843(input, par, 0) < 0) + if (demod_attach_cxd2843(input, par, osc24) < 0) return -ENODEV; if (tuner_attach_tda18212dd(input) < 0) return -ENODEV; break; case DDB_TUNER_DVBC2T2I_SONY: - if (demod_attach_cxd2843(input, par, 1) < 0) + osc24 = 1; + case DDB_TUNER_DVBCT2_SONY: + case DDB_TUNER_DVBC2T2_SONY: + case DDB_TUNER_ISDBT_SONY: + if (demod_attach_cxd2843(input, 0, osc24) < 0) return -ENODEV; if (tuner_attach_tda18212dd(input) < 0) return -ENODEV; diff --git a/ddbridge/ddbridge.c b/ddbridge/ddbridge.c index d0c4b2b..704f84c 100644 --- a/ddbridge/ddbridge.c +++ b/ddbridge/ddbridge.c @@ -549,6 +549,7 @@ static const struct pci_device_id ddb_id_tbl[] __devinitconst = { DDB_ID(DDVID, 0x0008, DDVID, 0x0036, ddb_isdbt_8), DDB_ID(DDVID, 0x0008, DDVID, 0x0037, ddb_c2t2i_v0_8), DDB_ID(DDVID, 0x0008, DDVID, 0x0038, ddb_c2t2i_8), + DDB_ID(DDVID, 0x0006, DDVID, 0x0039, ddb_ctv7), DDB_ID(DDVID, 0x0011, DDVID, 0x0040, ddb_ci), DDB_ID(DDVID, 0x0011, DDVID, 0x0041, ddb_cis), DDB_ID(DDVID, 0x0012, DDVID, 0x0042, ddb_ci), diff --git a/ddbridge/ddbridge.h b/ddbridge/ddbridge.h index d120938..757f052 100644 --- a/ddbridge/ddbridge.h +++ b/ddbridge/ddbridge.h @@ -172,6 +172,7 @@ struct ddb_info { #define TS_QUIRK_SERIAL 1 #define TS_QUIRK_REVERSED 2 #define TS_QUIRK_NO_OUTPUT 4 +#define TS_QUIRK_ALT_OSC 8 u32 tempmon_irq; struct ddb_regmap *regmap; }; @@ -317,6 +318,7 @@ struct ddb_port { #define DDB_CI_EXTERNAL_XO2 12 #define DDB_CI_EXTERNAL_XO2_B 13 #define DDB_TUNER_DVBS_STV0910_PR 14 +#define DDB_TUNER_DVBC2T2I_SONY_P 15 #define DDB_TUNER_XO2 32 #define DDB_TUNER_DVBS_STV0910 (DDB_TUNER_XO2 + 0)