mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-30 07:34:12 +08:00
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:
parent
3abdedd8a4
commit
ce904bcba4
@ -73,11 +73,13 @@ config DVB_USB_DIB0700
|
||||
select DVB_DIB7000M if !DVB_FE_CUSTOMISE
|
||||
select DVB_DIB3000MC 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 MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_MT2266 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_XC5000 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_MXL5007T if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
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
|
||||
|
@ -17,6 +17,8 @@
|
||||
#include "xc5000.h"
|
||||
#include "s5h1411.h"
|
||||
#include "dib0070.h"
|
||||
#include "lgdt3305.h"
|
||||
#include "mxl5007t.h"
|
||||
|
||||
static int force_lna_activation;
|
||||
module_param(force_lna_activation, int, 0644);
|
||||
@ -1370,6 +1372,72 @@ static int xc5000_tuner_attach(struct dvb_usb_adapter *adap)
|
||||
== 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 */
|
||||
struct usb_device_id dib0700_usb_id_table[] = {
|
||||
/* 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_DEVICE(USB_VID_SONY, USB_PID_SONY_PLAYTV) },
|
||||
/* 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 */
|
||||
};
|
||||
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_size = ARRAY_SIZE(dib0700_rc_keys),
|
||||
.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_NOVA_TD_STICK 0x9580
|
||||
#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_VOLAR 0xa807
|
||||
#define USB_PID_AVERMEDIA_VOLAR_2 0xb808
|
||||
|
Loading…
Reference in New Issue
Block a user