From d89b7f889f262116a190464c1a3decb5aa5a1849 Mon Sep 17 00:00:00 2001 From: Michael Krufky Date: Sun, 16 Apr 2006 11:17:34 -0400 Subject: KWorld HardwareMpegTV XPert: Enable Blackbird MPEG encoder support From: Michael Krufky - clear I2SIN to deliver the audio stream to the cx23416 mpeg encoder. - enable blackbird support on the KWorld HardwareMpegTV XPert Signed-off-by: Michael Krufky --- linux/drivers/media/video/cx88/cx88-cards.c | 2 -- linux/drivers/media/video/cx88/cx88-tvaudio.c | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'linux/drivers/media') diff --git a/linux/drivers/media/video/cx88/cx88-cards.c b/linux/drivers/media/video/cx88/cx88-cards.c index 2577039bf..383af5609 100644 --- a/linux/drivers/media/video/cx88/cx88-cards.c +++ b/linux/drivers/media/video/cx88/cx88-cards.c @@ -1082,9 +1082,7 @@ struct cx88_board cx88_boards[] = { .gpio0 = 0x3de6, .gpio2 = 0x00ff, }, -#if 0 .blackbird = 1, -#endif }, [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBRID] = { .name = "DViCO FusionHDTV DVB-T Hybrid", diff --git a/linux/drivers/media/video/cx88/cx88-tvaudio.c b/linux/drivers/media/video/cx88/cx88-tvaudio.c index d1e20eca6..78f6d2c76 100644 --- a/linux/drivers/media/video/cx88/cx88-tvaudio.c +++ b/linux/drivers/media/video/cx88/cx88-tvaudio.c @@ -154,6 +154,7 @@ static void set_audio_finish(struct cx88_core *core, u32 ctl) switch (core->board) { case CX88_BOARD_HAUPPAUGE_ROSLYN: case CX88_BOARD_KWORLD_MCE200_DELUXE: + case CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT: cx_clear(AUD_CTL, EN_I2SIN_ENABLE); break; default: -- cgit v1.2.3 From 4b1ac579cb9d7f7733fa2d9e14132b18599d81f1 Mon Sep 17 00:00:00 2001 From: Michael Krufky Date: Sun, 16 Apr 2006 12:19:24 -0400 Subject: cxusb: lgh064f: set auxiliary byte in pll_set From: Michael Krufky This changeset removes pll_init, and instead sets the tuner auxiliary byte in pll_set. Signed-off-by: Michael Krufky --- linux/drivers/media/dvb/dvb-usb/cxusb.c | 36 ++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'linux/drivers/media') diff --git a/linux/drivers/media/dvb/dvb-usb/cxusb.c b/linux/drivers/media/dvb/dvb-usb/cxusb.c index d63f6ec4f..a34068f50 100644 --- a/linux/drivers/media/dvb/dvb-usb/cxusb.c +++ b/linux/drivers/media/dvb/dvb-usb/cxusb.c @@ -313,6 +313,36 @@ static int cxusb_mt352_demod_init(struct dvb_frontend* fe) return 0; } +static int cxusb_lgh064f_pll_set_i2c(struct dvb_frontend *fe, + struct dvb_frontend_parameters *fep) +{ + struct dvb_usb_device *d = fe->dvb->priv; + int ret = 0; + u8 b[5]; + struct i2c_msg msg = { .addr = d->pll_addr, .flags = 0, + .buf = &b[1], .len = 4 }; + + dvb_usb_pll_set(fe,fep,b); + + if (i2c_transfer (&d->i2c_adap, &msg, 1) != 1) { + err("tuner i2c write failed for pll_set."); + ret = -EREMOTEIO; + } + msleep(1); + + /* Set the Auxiliary Byte. */ + b[3] &= ~0x20; + b[3] |= 0x18; + b[4] = 0x50; + if (i2c_transfer(&d->i2c_adap, &msg, 1) != 1) { + err("tuner i2c write failed writing auxiliary byte."); + ret = -EREMOTEIO; + } + msleep(1); + + return ret; +} + static struct cx22702_config cxusb_cx22702_config = { .demod_address = 0x63, @@ -325,7 +355,7 @@ static struct cx22702_config cxusb_cx22702_config = { static struct lgdt330x_config cxusb_lgdt3303_config = { .demod_address = 0x0e, .demod_chip = LGDT3303, - .pll_set = dvb_usb_pll_set_i2c, + .pll_set = cxusb_lgh064f_pll_set_i2c, }; static struct mt352_config cxusb_dee1601_config = { @@ -353,11 +383,7 @@ static int cxusb_fmd1216me_tuner_attach(struct dvb_usb_device *d) static int cxusb_lgh064f_tuner_attach(struct dvb_usb_device *d) { - u8 bpll[4] = { 0x00, 0x00, 0x18, 0x50 }; - /* bpll[2] : unset bit 3, set bits 4&5 - bpll[3] : 0x50 - digital, 0x20 - analog */ d->pll_addr = 0x61; - memcpy(d->pll_init, bpll, 4); d->pll_desc = &dvb_pll_tdvs_tua6034; return 0; } -- cgit v1.2.3 From 8df57f53c08fe52b578d075f996e30f4aa5b1849 Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Sun, 16 Apr 2006 22:17:42 +0200 Subject: From: Hans Verkuil Add support for TCL M2523_5N_E tuner. Signed-off-by: Hans Verkuil --- linux/drivers/media/video/tveeprom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'linux/drivers/media') diff --git a/linux/drivers/media/video/tveeprom.c b/linux/drivers/media/video/tveeprom.c index 8dad3c6a8..5b9c4446b 100644 --- a/linux/drivers/media/video/tveeprom.c +++ b/linux/drivers/media/video/tveeprom.c @@ -222,7 +222,7 @@ hauppauge_tuner[] = /* 110-119 */ { TUNER_ABSENT, "Thompson DTT75105"}, { TUNER_ABSENT, "Conexant_CX24109"}, - { TUNER_ABSENT, "TCL M2523_5N_E"}, + { TUNER_TCL_2002N, "TCL M2523_5N_E"}, { TUNER_ABSENT, "TCL M2523_3DB_E"}, { TUNER_ABSENT, "Philips 8275A"}, { TUNER_ABSENT, "Microtune MT2060"}, -- cgit v1.2.3 From 2bc21bcdb502df4abb44c04f0f66b66e849894ba Mon Sep 17 00:00:00 2001 From: Michael Krufky Date: Mon, 17 Apr 2006 17:10:38 -0400 Subject: cx88-blackbird: revert video standard detection patch From: Michael Krufky This patch reverts changeset 328131dbb141 This patch was wrong... a better solution will come shortly. Signed-off-by: Michael Krufky --- linux/drivers/media/video/cx88/cx88-blackbird.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'linux/drivers/media') diff --git a/linux/drivers/media/video/cx88/cx88-blackbird.c b/linux/drivers/media/video/cx88/cx88-blackbird.c index e1e9580b2..935706680 100644 --- a/linux/drivers/media/video/cx88/cx88-blackbird.c +++ b/linux/drivers/media/video/cx88/cx88-blackbird.c @@ -1719,12 +1719,16 @@ static int __devinit blackbird_probe(struct pci_dev *pci_dev, memcpy(&dev->params,&default_mpeg_params,sizeof(default_mpeg_params)); memcpy(&dev->dnr_params,&default_dnr_params,sizeof(default_dnr_params)); - if (core->tuner_formats & V4L2_STD_525_60) { - dev->height = 480; - dev->params.vi_frame_rate = 30; - } else { - dev->height = 576; - dev->params.vi_frame_rate = 25; + if (core->board == CX88_BOARD_HAUPPAUGE_ROSLYN) { + + if (core->tuner_formats & V4L2_STD_525_60) { + dev->height = 480; + dev->params.vi_frame_rate = 30; + } else { + dev->height = 576; + dev->params.vi_frame_rate = 25; + } + } err = cx8802_init_common(dev); -- cgit v1.2.3 From 5f35d55636599845c22433ac77c66277e4c25ad5 Mon Sep 17 00:00:00 2001 From: Michael Krufky Date: Mon, 17 Apr 2006 23:22:09 -0400 Subject: KWorld HardwareMpegTV XPert: set encoder video standard based on tvnorm From: Michael Krufky The KWorld HardwareMpegTV XPert uses a multistandard tuner, tda8290 + tda8275. Without checking the video standard in blackbird_probe, the encoder defaults to PAL, even if the incoming video stream is NTSC. This patch checks the video standard set by the cx2388x decoder, and sets the encoding height and frame accordingly. This patch is designed to only affect the KWorld HardwareMpegTV XPert. Signed-off-by: Michael Krufky --- linux/drivers/media/video/cx88/cx88-blackbird.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'linux/drivers/media') diff --git a/linux/drivers/media/video/cx88/cx88-blackbird.c b/linux/drivers/media/video/cx88/cx88-blackbird.c index 935706680..73580db8b 100644 --- a/linux/drivers/media/video/cx88/cx88-blackbird.c +++ b/linux/drivers/media/video/cx88/cx88-blackbird.c @@ -1719,8 +1719,8 @@ static int __devinit blackbird_probe(struct pci_dev *pci_dev, memcpy(&dev->params,&default_mpeg_params,sizeof(default_mpeg_params)); memcpy(&dev->dnr_params,&default_dnr_params,sizeof(default_dnr_params)); - if (core->board == CX88_BOARD_HAUPPAUGE_ROSLYN) { - + switch (core->board) { + case CX88_BOARD_HAUPPAUGE_ROSLYN: if (core->tuner_formats & V4L2_STD_525_60) { dev->height = 480; dev->params.vi_frame_rate = 30; @@ -1728,7 +1728,16 @@ static int __devinit blackbird_probe(struct pci_dev *pci_dev, dev->height = 576; dev->params.vi_frame_rate = 25; } - + break; + case CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT: + if (core->tvnorm->id & V4L2_STD_525_60) { + dev->height = 480; + dev->params.vi_frame_rate = 30; + } else { + dev->height = 576; + dev->params.vi_frame_rate = 25; + } + break; } err = cx8802_init_common(dev); -- cgit v1.2.3 From fb70cc5ac6a14c86a9573bbb7ec6b95d32e287bb Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Wed, 19 Apr 2006 23:50:35 +0200 Subject: Add support for Samsung TCPG 6121P30A PAL tuner. From: Hans Verkuil Signed-off-by: Hans Verkuil --- linux/drivers/media/video/tuner-types.c | 21 +++++++++++++++++++++ linux/drivers/media/video/tveeprom.c | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) (limited to 'linux/drivers/media') diff --git a/linux/drivers/media/video/tuner-types.c b/linux/drivers/media/video/tuner-types.c index 409603c38..897270f56 100644 --- a/linux/drivers/media/video/tuner-types.c +++ b/linux/drivers/media/video/tuner-types.c @@ -1072,6 +1072,22 @@ static struct tuner_params tuner_thomson_fe6600_params[] = { }, }; +/* ------------ TUNER_SAMSUNG_TCPG_6121P30A - Samsung PAL ------------ */ + +static struct tuner_range tuner_samsung_tcpg_6121p30a_pal_ranges[] = { + { 16 * 146.25 /*MHz*/, 0xce, 0x01, }, + { 16 * 428.50 /*MHz*/, 0xce, 0x02, }, + { 16 * 999.99 , 0xce, 0x08, }, +}; + +static struct tuner_params tuner_samsung_tcpg_6121p30a_params[] = { + { + .type = TUNER_PARAM_TYPE_PAL, + .ranges = tuner_samsung_tcpg_6121p30a_pal_ranges, + .count = ARRAY_SIZE(tuner_samsung_tcpg_6121p30a_pal_ranges), + }, +}; + /* --------------------------------------------------------------------- */ struct tunertype tuners[] = { @@ -1448,6 +1464,11 @@ struct tunertype tuners[] = { .params = tuner_thomson_fe6600_params, .count = ARRAY_SIZE(tuner_thomson_fe6600_params), }, + [TUNER_SAMSUNG_TCPG_6121P30A] = { /* Samsung PAL */ + .name = "Samsung TCPG 6121P30A", + .params = tuner_samsung_tcpg_6121p30a_params, + .count = ARRAY_SIZE(tuner_samsung_tcpg_6121p30a_params), + }, }; unsigned const int tuner_count = ARRAY_SIZE(tuners); diff --git a/linux/drivers/media/video/tveeprom.c b/linux/drivers/media/video/tveeprom.c index 5b9c4446b..635f618ef 100644 --- a/linux/drivers/media/video/tveeprom.c +++ b/linux/drivers/media/video/tveeprom.c @@ -204,7 +204,7 @@ hauppauge_tuner[] = { TUNER_ABSENT, "Philips FQ1286A MK4"}, { TUNER_ABSENT, "Philips FQ1216ME MK5"}, { TUNER_ABSENT, "Philips FQ1236 MK5"}, - { TUNER_ABSENT, "Samsung TCPG_6121P30A"}, + { TUNER_SAMSUNG_TCPG_6121P30A, "Samsung TCPG 6121P30A"}, { TUNER_TCL_2002MB, "TCL 2002MB_3H"}, { TUNER_ABSENT, "TCL 2002MI_3H"}, { TUNER_TCL_2002N, "TCL 2002N 5H"}, -- cgit v1.2.3 From 7975c8e3b6b01e4b1d709b8ea91f5e0b216cdce1 Mon Sep 17 00:00:00 2001 From: Michael Krufky Date: Wed, 19 Apr 2006 19:40:01 -0400 Subject: cxusb-bluebird: bug-fix: power down corrupts frontend From: Michael Krufky This patch prevents a bug where the frontend is unable to tune after waking from powered down state. Now, the device remains powered on until it is disconnected, just like the windows driver. It seems that the bluebird firmware is unable to successfully handle tuning after a powered down state. This patch fixes all of the FusionHDTV Bluebird USB2 devices. The Medion MD95700 will still behave as before, since it was unaffected by this bug. Signed-off-by: Michael Krufky --- linux/drivers/media/dvb/dvb-usb/cxusb.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'linux/drivers/media') diff --git a/linux/drivers/media/dvb/dvb-usb/cxusb.c b/linux/drivers/media/dvb/dvb-usb/cxusb.c index a34068f50..b7ca16774 100644 --- a/linux/drivers/media/dvb/dvb-usb/cxusb.c +++ b/linux/drivers/media/dvb/dvb-usb/cxusb.c @@ -150,6 +150,15 @@ static int cxusb_power_ctrl(struct dvb_usb_device *d, int onoff) return cxusb_ctrl_msg(d, CMD_POWER_OFF, &b, 1, NULL, 0); } +static int cxusb_bluebird_power_ctrl(struct dvb_usb_device *d, int onoff) +{ + u8 b = 0; + if (onoff) + return cxusb_ctrl_msg(d, CMD_POWER_ON, &b, 1, NULL, 0); + else + return 0; +} + static int cxusb_streaming_ctrl(struct dvb_usb_device *d, int onoff) { u8 buf[2] = { 0x03, 0x00 }; @@ -570,7 +579,7 @@ static struct dvb_usb_properties cxusb_bluebird_lgh064f_properties = { .size_of_priv = sizeof(struct cxusb_state), .streaming_ctrl = cxusb_streaming_ctrl, - .power_ctrl = cxusb_power_ctrl, + .power_ctrl = cxusb_bluebird_power_ctrl, .frontend_attach = cxusb_lgdt3303_frontend_attach, .tuner_attach = cxusb_lgh064f_tuner_attach, @@ -615,7 +624,7 @@ static struct dvb_usb_properties cxusb_bluebird_dee1601_properties = { .size_of_priv = sizeof(struct cxusb_state), .streaming_ctrl = cxusb_streaming_ctrl, - .power_ctrl = cxusb_power_ctrl, + .power_ctrl = cxusb_bluebird_power_ctrl, .frontend_attach = cxusb_dee1601_frontend_attach, .tuner_attach = cxusb_dee1601_tuner_attach, @@ -664,7 +673,7 @@ static struct dvb_usb_properties cxusb_bluebird_lgz201_properties = { .size_of_priv = sizeof(struct cxusb_state), .streaming_ctrl = cxusb_streaming_ctrl, - .power_ctrl = cxusb_power_ctrl, + .power_ctrl = cxusb_bluebird_power_ctrl, .frontend_attach = cxusb_mt352_frontend_attach, .tuner_attach = cxusb_lgz201_tuner_attach, @@ -709,7 +718,7 @@ static struct dvb_usb_properties cxusb_bluebird_dtt7579_properties = { .size_of_priv = sizeof(struct cxusb_state), .streaming_ctrl = cxusb_streaming_ctrl, - .power_ctrl = cxusb_power_ctrl, + .power_ctrl = cxusb_bluebird_power_ctrl, .frontend_attach = cxusb_mt352_frontend_attach, .tuner_attach = cxusb_dtt7579_tuner_attach, -- cgit v1.2.3 From 18766ed521f71541ef32188c67e260f66a9b523d Mon Sep 17 00:00:00 2001 From: Michael Krufky Date: Wed, 19 Apr 2006 19:49:28 -0400 Subject: drivers/media/dvb/dvb-usb/: possible cleanups From: Adrian Bunk - make the following needlessly global struct static: dvb-usb/cxusb.c: cxusb_mt352_config Signed-off-by: Adrian Bunk Signed-off-by: Michael Krufky --- linux/drivers/media/dvb/dvb-usb/cxusb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'linux/drivers/media') diff --git a/linux/drivers/media/dvb/dvb-usb/cxusb.c b/linux/drivers/media/dvb/dvb-usb/cxusb.c index b7ca16774..d40b9dba1 100644 --- a/linux/drivers/media/dvb/dvb-usb/cxusb.c +++ b/linux/drivers/media/dvb/dvb-usb/cxusb.c @@ -373,7 +373,7 @@ static struct mt352_config cxusb_dee1601_config = { .pll_set = dvb_usb_pll_set, }; -struct mt352_config cxusb_mt352_config = { +static struct mt352_config cxusb_mt352_config = { /* used in both lgz201 and th7579 */ .demod_address = 0x0f, .demod_init = cxusb_mt352_demod_init, -- cgit v1.2.3