media: em28xx: Enable Hauppauge 461e rev2
Hauppauge 461e rev2 is a DVB-S/S2 usb device containing: - m88ds3103b demod - ts2022 tuner - A8293 SEC Device is the same as Hauppauge 461e, except it contains updated m88ds3103b demod. Signed-off-by: Brad Love <brad@nextdimension.cc> Signed-off-by: Sean Young <sean@mess.org> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
e6089feca4
commit
985b0edefa
|
@ -2397,6 +2397,20 @@ const struct em28xx_board em28xx_boards[] = {
|
|||
.has_dvb = 1,
|
||||
.ir_codes = RC_MAP_PINNACLE_PCTV_HD,
|
||||
},
|
||||
/*
|
||||
* 2013:0259 PCTV DVB-S2 Stick (461e_v2)
|
||||
* Empia EM28178, Montage M88DS3103b, Montage M88TS2022, Allegro A8293
|
||||
*/
|
||||
[EM28178_BOARD_PCTV_461E_V2] = {
|
||||
.def_i2c_bus = 1,
|
||||
.i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE |
|
||||
EM28XX_I2C_FREQ_400_KHZ,
|
||||
.name = "PCTV DVB-S2 Stick (461e v2)",
|
||||
.tuner_type = TUNER_ABSENT,
|
||||
.tuner_gpio = pctv_461e,
|
||||
.has_dvb = 1,
|
||||
.ir_codes = RC_MAP_PINNACLE_PCTV_HD,
|
||||
},
|
||||
/*
|
||||
* 2013:025f PCTV tripleStick (292e).
|
||||
* Empia EM28178, Silicon Labs Si2168, Silicon Labs Si2157
|
||||
|
@ -2696,6 +2710,10 @@ struct usb_device_id em28xx_id_table[] = {
|
|||
.driver_info = EM2765_BOARD_SPEEDLINK_VAD_LAPLACE },
|
||||
{ USB_DEVICE(0x2013, 0x0258),
|
||||
.driver_info = EM28178_BOARD_PCTV_461E },
|
||||
{ USB_DEVICE(0x2013, 0x0461),
|
||||
.driver_info = EM28178_BOARD_PCTV_461E_V2 },
|
||||
{ USB_DEVICE(0x2013, 0x0259),
|
||||
.driver_info = EM28178_BOARD_PCTV_461E_V2 },
|
||||
{ USB_DEVICE(0x2013, 0x025f),
|
||||
.driver_info = EM28178_BOARD_PCTV_292E },
|
||||
{ USB_DEVICE(0x2013, 0x0264), /* Hauppauge WinTV-soloHD 292e SE */
|
||||
|
|
|
@ -1219,6 +1219,61 @@ static int em28178_dvb_init_pctv_461e(struct em28xx *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int em28178_dvb_init_pctv_461e_v2(struct em28xx *dev)
|
||||
{
|
||||
struct em28xx_dvb *dvb = dev->dvb;
|
||||
struct i2c_adapter *i2c_adapter;
|
||||
struct m88ds3103_platform_data m88ds3103_pdata = {};
|
||||
struct ts2020_config ts2020_config = {};
|
||||
struct a8293_platform_data a8293_pdata = {};
|
||||
|
||||
/* attach demod */
|
||||
m88ds3103_pdata.clk = 27000000;
|
||||
m88ds3103_pdata.i2c_wr_max = 33;
|
||||
m88ds3103_pdata.ts_mode = M88DS3103_TS_PARALLEL;
|
||||
m88ds3103_pdata.ts_clk = 16000;
|
||||
m88ds3103_pdata.ts_clk_pol = 0;
|
||||
m88ds3103_pdata.agc = 0x99;
|
||||
m88ds3103_pdata.agc_inv = 0;
|
||||
m88ds3103_pdata.spec_inv = 0;
|
||||
dvb->i2c_client_demod = dvb_module_probe("m88ds3103", "m88ds3103b",
|
||||
&dev->i2c_adap[dev->def_i2c_bus],
|
||||
0x6a, &m88ds3103_pdata);
|
||||
|
||||
if (!dvb->i2c_client_demod)
|
||||
return -ENODEV;
|
||||
|
||||
dvb->fe[0] = m88ds3103_pdata.get_dvb_frontend(dvb->i2c_client_demod);
|
||||
i2c_adapter = m88ds3103_pdata.get_i2c_adapter(dvb->i2c_client_demod);
|
||||
|
||||
/* attach tuner */
|
||||
ts2020_config.fe = dvb->fe[0];
|
||||
dvb->i2c_client_tuner = dvb_module_probe("ts2020", "ts2022",
|
||||
i2c_adapter,
|
||||
0x60, &ts2020_config);
|
||||
if (!dvb->i2c_client_tuner) {
|
||||
dvb_module_release(dvb->i2c_client_demod);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* delegate signal strength measurement to tuner */
|
||||
dvb->fe[0]->ops.read_signal_strength =
|
||||
dvb->fe[0]->ops.tuner_ops.get_rf_strength;
|
||||
|
||||
/* attach SEC */
|
||||
a8293_pdata.dvb_frontend = dvb->fe[0];
|
||||
dvb->i2c_client_sec = dvb_module_probe("a8293", NULL,
|
||||
&dev->i2c_adap[dev->def_i2c_bus],
|
||||
0x08, &a8293_pdata);
|
||||
if (!dvb->i2c_client_sec) {
|
||||
dvb_module_release(dvb->i2c_client_tuner);
|
||||
dvb_module_release(dvb->i2c_client_demod);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int em28178_dvb_init_pctv_292e(struct em28xx *dev)
|
||||
{
|
||||
struct em28xx_dvb *dvb = dev->dvb;
|
||||
|
@ -1860,6 +1915,11 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|||
if (result)
|
||||
goto out_free;
|
||||
break;
|
||||
case EM28178_BOARD_PCTV_461E_V2:
|
||||
result = em28178_dvb_init_pctv_461e_v2(dev);
|
||||
if (result)
|
||||
goto out_free;
|
||||
break;
|
||||
case EM28178_BOARD_PCTV_292E:
|
||||
result = em28178_dvb_init_pctv_292e(dev);
|
||||
if (result)
|
||||
|
|
|
@ -150,6 +150,7 @@
|
|||
#define EM2884_BOARD_TERRATEC_H6 101
|
||||
#define EM2882_BOARD_ZOLID_HYBRID_TV_STICK 102
|
||||
#define EM2861_BOARD_MAGIX_VIDEOWANDLER2 103
|
||||
#define EM28178_BOARD_PCTV_461E_V2 104
|
||||
|
||||
/* Limits minimum and default number of buffers */
|
||||
#define EM28XX_MIN_BUF 4
|
||||
|
|
Loading…
Reference in New Issue