mirror of
https://github.com/torvalds/linux.git
synced 2024-12-12 22:23:55 +00:00
[media] Add support for PCTV nanoStick T2 290e [2013:024f]
Supports DVB-T/T2/C, USB ID: 2013:024f. Empia EM28174, Sony CXD2820R and NXP TDA18271HD/C2. Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
27cfc85e3d
commit
d6a5f921fb
@ -39,6 +39,7 @@ config VIDEO_EM28XX_DVB
|
||||
select DVB_TDA10023 if !DVB_FE_CUSTOMISE
|
||||
select DVB_S921 if !DVB_FE_CUSTOMISE
|
||||
select DVB_DRXD if !DVB_FE_CUSTOMISE
|
||||
select DVB_CXD2820R if !DVB_FE_CUSTOMISE
|
||||
select VIDEOBUF_DVB
|
||||
---help---
|
||||
This adds support for DVB cards based on the
|
||||
|
@ -289,6 +289,16 @@ static struct em28xx_reg_seq leadership_reset[] = {
|
||||
{ -1, -1, -1, -1},
|
||||
};
|
||||
|
||||
/* 2013:024f PCTV Systems nanoStick T2 290e
|
||||
* GPIO_6 - demod reset
|
||||
* GPIO_7 - LED
|
||||
*/
|
||||
static struct em28xx_reg_seq pctv_290e[] = {
|
||||
{EM2874_R80_GPIO, 0x00, 0xff, 80},
|
||||
{EM2874_R80_GPIO, 0x40, 0xff, 80}, /* GPIO_6 = 1 */
|
||||
{EM2874_R80_GPIO, 0xc0, 0xff, 80}, /* GPIO_7 = 1 */
|
||||
{-1, -1, -1, -1},
|
||||
};
|
||||
|
||||
/*
|
||||
* Board definitions
|
||||
@ -1760,6 +1770,17 @@ struct em28xx_board em28xx_boards[] = {
|
||||
.dvb_gpio = kworld_a340_digital,
|
||||
.tuner_gpio = default_tuner_gpio,
|
||||
},
|
||||
/* 2013:024f PCTV Systems nanoStick T2 290e.
|
||||
* Empia EM28174, Sony CXD2820R and NXP TDA18271HD/C2 */
|
||||
[EM28174_BOARD_PCTV_290E] = {
|
||||
.i2c_speed = EM2874_I2C_SECONDARY_BUS_SELECT |
|
||||
EM28XX_I2C_CLK_WAIT_ENABLE | EM28XX_I2C_FREQ_100_KHZ,
|
||||
.xclk = EM28XX_XCLK_FREQUENCY_12MHZ,
|
||||
.name = "PCTV Systems nanoStick T2 290e",
|
||||
.tuner_type = TUNER_ABSENT,
|
||||
.tuner_gpio = pctv_290e,
|
||||
.has_dvb = 1,
|
||||
},
|
||||
};
|
||||
const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);
|
||||
|
||||
@ -1887,6 +1908,8 @@ struct usb_device_id em28xx_id_table[] = {
|
||||
.driver_info = EM2860_BOARD_GADMEI_UTV330 },
|
||||
{ USB_DEVICE(0x1b80, 0xa340),
|
||||
.driver_info = EM2870_BOARD_KWORLD_A340 },
|
||||
{ USB_DEVICE(0x2013, 0x024f),
|
||||
.driver_info = EM28174_BOARD_PCTV_290E },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, em28xx_id_table);
|
||||
|
@ -39,6 +39,7 @@
|
||||
#include "tda18271.h"
|
||||
#include "s921.h"
|
||||
#include "drxd.h"
|
||||
#include "cxd2820r.h"
|
||||
|
||||
MODULE_DESCRIPTION("driver for em28xx based DVB cards");
|
||||
MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>");
|
||||
@ -334,6 +335,26 @@ static struct tda10023_config em28xx_tda10023_config = {
|
||||
.invert = 1,
|
||||
};
|
||||
|
||||
static struct cxd2820r_config em28xx_cxd2820r_config = {
|
||||
.i2c_address = (0xd8 >> 1),
|
||||
.ts_mode = CXD2820R_TS_SERIAL,
|
||||
.if_dvbt_6 = 3300,
|
||||
.if_dvbt_7 = 3500,
|
||||
.if_dvbt_8 = 4000,
|
||||
.if_dvbt2_6 = 3300,
|
||||
.if_dvbt2_7 = 3500,
|
||||
.if_dvbt2_8 = 4000,
|
||||
.if_dvbc = 5000,
|
||||
|
||||
/* enable LNA for DVB-T2 and DVB-C */
|
||||
.gpio_dvbt2[0] = CXD2820R_GPIO_E | CXD2820R_GPIO_O | CXD2820R_GPIO_L,
|
||||
.gpio_dvbc[0] = CXD2820R_GPIO_E | CXD2820R_GPIO_O | CXD2820R_GPIO_L,
|
||||
};
|
||||
|
||||
static struct tda18271_config em28xx_cxd2820r_tda18271_config = {
|
||||
.output_opt = TDA18271_OUTPUT_LT_OFF,
|
||||
};
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
|
||||
static int attach_xc3028(u8 addr, struct em28xx *dev)
|
||||
@ -640,6 +661,34 @@ static int dvb_init(struct em28xx *dev)
|
||||
dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
|
||||
&dev->i2c_adap, &kworld_a340_config);
|
||||
break;
|
||||
case EM28174_BOARD_PCTV_290E:
|
||||
/* MFE
|
||||
* FE 0 = DVB-T/T2 + FE 1 = DVB-C, both sharing same tuner. */
|
||||
/* FE 0 */
|
||||
dvb->fe[0] = dvb_attach(cxd2820r_attach,
|
||||
&em28xx_cxd2820r_config, &dev->i2c_adap, NULL);
|
||||
if (dvb->fe[0]) {
|
||||
struct i2c_adapter *i2c_tuner;
|
||||
i2c_tuner = cxd2820r_get_tuner_i2c_adapter(dvb->fe[0]);
|
||||
/* FE 0 attach tuner */
|
||||
if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
|
||||
i2c_tuner, &em28xx_cxd2820r_tda18271_config)) {
|
||||
dvb_frontend_detach(dvb->fe[0]);
|
||||
result = -EINVAL;
|
||||
goto out_free;
|
||||
}
|
||||
/* FE 1. This dvb_attach() cannot fail. */
|
||||
dvb->fe[1] = dvb_attach(cxd2820r_attach, NULL, NULL,
|
||||
dvb->fe[0]);
|
||||
dvb->fe[1]->id = 1;
|
||||
/* FE 1 attach tuner */
|
||||
if (!dvb_attach(tda18271_attach, dvb->fe[1], 0x60,
|
||||
i2c_tuner, &em28xx_cxd2820r_tda18271_config)) {
|
||||
dvb_frontend_detach(dvb->fe[1]);
|
||||
/* leave FE 0 still active */
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
em28xx_errdev("/2: The frontend of your DVB/ATSC card"
|
||||
" isn't supported yet\n");
|
||||
|
@ -118,6 +118,7 @@
|
||||
#define EM2882_BOARD_DIKOM_DK300 75
|
||||
#define EM2870_BOARD_KWORLD_A340 76
|
||||
#define EM2874_LEADERSHIP_ISDBT 77
|
||||
#define EM28174_BOARD_PCTV_290E 78
|
||||
|
||||
|
||||
/* Limits minimum and default number of buffers */
|
||||
|
Loading…
Reference in New Issue
Block a user