V4L/DVB (10927): dib0700: add support for Hauppauge ATSC MiniCard
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
3abdedd8a4
commit
ce904bcba4
@@ -73,11 +73,13 @@ config DVB_USB_DIB0700
|
|||||||
select DVB_DIB7000M if !DVB_FE_CUSTOMISE
|
select DVB_DIB7000M if !DVB_FE_CUSTOMISE
|
||||||
select DVB_DIB3000MC if !DVB_FE_CUSTOMISE
|
select DVB_DIB3000MC if !DVB_FE_CUSTOMISE
|
||||||
select DVB_S5H1411 if !DVB_FE_CUSTOMISE
|
select DVB_S5H1411 if !DVB_FE_CUSTOMISE
|
||||||
|
select DVB_LGDT3305 if !DVB_FE_CUSTOMISE
|
||||||
select DVB_TUNER_DIB0070 if !DVB_FE_CUSTOMISE
|
select DVB_TUNER_DIB0070 if !DVB_FE_CUSTOMISE
|
||||||
select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMIZE
|
select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMIZE
|
||||||
select MEDIA_TUNER_MT2266 if !MEDIA_TUNER_CUSTOMIZE
|
select MEDIA_TUNER_MT2266 if !MEDIA_TUNER_CUSTOMIZE
|
||||||
select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMIZE
|
select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMIZE
|
||||||
select MEDIA_TUNER_XC5000 if !MEDIA_TUNER_CUSTOMIZE
|
select MEDIA_TUNER_XC5000 if !MEDIA_TUNER_CUSTOMIZE
|
||||||
|
select MEDIA_TUNER_MXL5007T if !MEDIA_TUNER_CUSTOMIZE
|
||||||
help
|
help
|
||||||
Support for USB2.0/1.1 DVB receivers based on the DiB0700 USB bridge. The
|
Support for USB2.0/1.1 DVB receivers based on the DiB0700 USB bridge. The
|
||||||
USB bridge is also present in devices having the DiB7700 DVB-T-USB
|
USB bridge is also present in devices having the DiB7700 DVB-T-USB
|
||||||
|
@@ -17,6 +17,8 @@
|
|||||||
#include "xc5000.h"
|
#include "xc5000.h"
|
||||||
#include "s5h1411.h"
|
#include "s5h1411.h"
|
||||||
#include "dib0070.h"
|
#include "dib0070.h"
|
||||||
|
#include "lgdt3305.h"
|
||||||
|
#include "mxl5007t.h"
|
||||||
|
|
||||||
static int force_lna_activation;
|
static int force_lna_activation;
|
||||||
module_param(force_lna_activation, int, 0644);
|
module_param(force_lna_activation, int, 0644);
|
||||||
@@ -1370,6 +1372,72 @@ static int xc5000_tuner_attach(struct dvb_usb_adapter *adap)
|
|||||||
== NULL ? -ENODEV : 0;
|
== NULL ? -ENODEV : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct lgdt3305_config hcw_lgdt3305_config = {
|
||||||
|
.i2c_addr = 0x0e,
|
||||||
|
.mpeg_mode = LGDT3305_MPEG_PARALLEL,
|
||||||
|
.tpclk_edge = LGDT3305_TPCLK_FALLING_EDGE,
|
||||||
|
.tpvalid_polarity = LGDT3305_TP_VALID_LOW,
|
||||||
|
.deny_i2c_rptr = 0,
|
||||||
|
.spectral_inversion = 1,
|
||||||
|
.qam_if_khz = 6000,
|
||||||
|
.vsb_if_khz = 6000,
|
||||||
|
.usref_8vsb = 0x0500,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct mxl5007t_config hcw_mxl5007t_config = {
|
||||||
|
.xtal_freq_hz = MxL_XTAL_25_MHZ,
|
||||||
|
.if_freq_hz = MxL_IF_6_MHZ,
|
||||||
|
.invert_if = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* TIGER-ATSC map:
|
||||||
|
GPIO0 - LNA_CTR (H: LNA power enabled, L: LNA power disabled)
|
||||||
|
GPIO1 - ANT_SEL (H: VPA, L: MCX)
|
||||||
|
GPIO4 - SCL2
|
||||||
|
GPIO6 - EN_TUNER
|
||||||
|
GPIO7 - SDA2
|
||||||
|
GPIO10 - DEM_RST
|
||||||
|
|
||||||
|
MXL is behind LG's i2c repeater. LG is on SCL2/SDA2 gpios on the DIB
|
||||||
|
*/
|
||||||
|
static int lgdt3305_frontend_attach(struct dvb_usb_adapter *adap)
|
||||||
|
{
|
||||||
|
struct dib0700_state *st = adap->dev->priv;
|
||||||
|
|
||||||
|
/* Make use of the new i2c functions from FW 1.20 */
|
||||||
|
st->fw_use_new_i2c_api = 1;
|
||||||
|
|
||||||
|
st->disable_streaming_master_mode = 1;
|
||||||
|
|
||||||
|
/* fe power enable */
|
||||||
|
dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 0);
|
||||||
|
msleep(30);
|
||||||
|
dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 1);
|
||||||
|
msleep(30);
|
||||||
|
|
||||||
|
/* demod reset */
|
||||||
|
dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1);
|
||||||
|
msleep(30);
|
||||||
|
dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0);
|
||||||
|
msleep(30);
|
||||||
|
dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1);
|
||||||
|
msleep(30);
|
||||||
|
|
||||||
|
adap->fe = dvb_attach(lgdt3305_attach,
|
||||||
|
&hcw_lgdt3305_config,
|
||||||
|
&adap->dev->i2c_adap);
|
||||||
|
|
||||||
|
return adap->fe == NULL ? -ENODEV : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int mxl5007t_tuner_attach(struct dvb_usb_adapter *adap)
|
||||||
|
{
|
||||||
|
return dvb_attach(mxl5007t_attach, adap->fe,
|
||||||
|
&adap->dev->i2c_adap, 0x60,
|
||||||
|
&hcw_mxl5007t_config) == NULL ? -ENODEV : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* DVB-USB and USB stuff follows */
|
/* DVB-USB and USB stuff follows */
|
||||||
struct usb_device_id dib0700_usb_id_table[] = {
|
struct usb_device_id dib0700_usb_id_table[] = {
|
||||||
/* 0 */ { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK7700P) },
|
/* 0 */ { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK7700P) },
|
||||||
@@ -1421,6 +1489,8 @@ struct usb_device_id dib0700_usb_id_table[] = {
|
|||||||
USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2) },
|
USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2) },
|
||||||
{ USB_DEVICE(USB_VID_SONY, USB_PID_SONY_PLAYTV) },
|
{ USB_DEVICE(USB_VID_SONY, USB_PID_SONY_PLAYTV) },
|
||||||
/* 45 */{ USB_DEVICE(USB_VID_YUAN, USB_PID_YUAN_PD378S) },
|
/* 45 */{ USB_DEVICE(USB_VID_YUAN, USB_PID_YUAN_PD378S) },
|
||||||
|
{ USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_TIGER_ATSC) },
|
||||||
|
{ USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_TIGER_ATSC_B210) },
|
||||||
{ 0 } /* Terminating entry */
|
{ 0 } /* Terminating entry */
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table);
|
MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table);
|
||||||
@@ -1796,6 +1866,31 @@ struct dvb_usb_device_properties dib0700_devices[] = {
|
|||||||
.rc_key_map = dib0700_rc_keys,
|
.rc_key_map = dib0700_rc_keys,
|
||||||
.rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys),
|
.rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys),
|
||||||
.rc_query = dib0700_rc_query
|
.rc_query = dib0700_rc_query
|
||||||
|
}, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
|
||||||
|
.num_adapters = 1,
|
||||||
|
.adapter = {
|
||||||
|
{
|
||||||
|
.frontend_attach = lgdt3305_frontend_attach,
|
||||||
|
.tuner_attach = mxl5007t_tuner_attach,
|
||||||
|
|
||||||
|
DIB0700_DEFAULT_STREAMING_CONFIG(0x02),
|
||||||
|
|
||||||
|
.size_of_priv = sizeof(struct
|
||||||
|
dib0700_adapter_state),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
.num_device_descs = 2,
|
||||||
|
.devices = {
|
||||||
|
{ "Hauppauge ATSC MiniCard (B200)",
|
||||||
|
{ &dib0700_usb_id_table[46], NULL },
|
||||||
|
{ NULL },
|
||||||
|
},
|
||||||
|
{ "Hauppauge ATSC MiniCard (B210)",
|
||||||
|
{ &dib0700_usb_id_table[47], NULL },
|
||||||
|
{ NULL },
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -151,6 +151,8 @@
|
|||||||
#define USB_PID_HAUPPAUGE_MYTV_T 0x7080
|
#define USB_PID_HAUPPAUGE_MYTV_T 0x7080
|
||||||
#define USB_PID_HAUPPAUGE_NOVA_TD_STICK 0x9580
|
#define USB_PID_HAUPPAUGE_NOVA_TD_STICK 0x9580
|
||||||
#define USB_PID_HAUPPAUGE_NOVA_TD_STICK_52009 0x5200
|
#define USB_PID_HAUPPAUGE_NOVA_TD_STICK_52009 0x5200
|
||||||
|
#define USB_PID_HAUPPAUGE_TIGER_ATSC 0xb200
|
||||||
|
#define USB_PID_HAUPPAUGE_TIGER_ATSC_B210 0xb210
|
||||||
#define USB_PID_AVERMEDIA_EXPRESS 0xb568
|
#define USB_PID_AVERMEDIA_EXPRESS 0xb568
|
||||||
#define USB_PID_AVERMEDIA_VOLAR 0xa807
|
#define USB_PID_AVERMEDIA_VOLAR 0xa807
|
||||||
#define USB_PID_AVERMEDIA_VOLAR_2 0xb808
|
#define USB_PID_AVERMEDIA_VOLAR_2 0xb808
|
||||||
|
Reference in New Issue
Block a user