[PATCH] dvb: ttpci: add support for Hauppauge/TT DVB-C budget
Add support for Hauppauge/TT DVB-C budget. Signed-off-by: Gavin Hamill <gdh@acentral.co.uk> Signed-off-by: Johannes Stezenbach <js@linuxtv.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
80887a59c2
commit
5393639174
@ -3,6 +3,7 @@ config DVB_TTUSB_BUDGET
|
||||
depends on DVB_CORE && USB
|
||||
select DVB_CX22700
|
||||
select DVB_TDA1004X
|
||||
select DVB_VES1820
|
||||
select DVB_TDA8083
|
||||
select DVB_STV0299
|
||||
help
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "dmxdev.h"
|
||||
#include "dvb_demux.h"
|
||||
#include "dvb_net.h"
|
||||
#include "ves1820.h"
|
||||
#include "cx22700.h"
|
||||
#include "tda1004x.h"
|
||||
#include "stv0299.h"
|
||||
@ -1367,6 +1368,47 @@ static struct tda8083_config ttusb_novas_grundig_29504_491_config = {
|
||||
.pll_set = ttusb_novas_grundig_29504_491_pll_set,
|
||||
};
|
||||
|
||||
static int alps_tdbe2_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params)
|
||||
{
|
||||
struct ttusb* ttusb = fe->dvb->priv;
|
||||
u32 div;
|
||||
u8 data[4];
|
||||
struct i2c_msg msg = { .addr = 0x62, .flags = 0, .buf = data, .len = sizeof(data) };
|
||||
|
||||
div = (params->frequency + 35937500 + 31250) / 62500;
|
||||
|
||||
data[0] = (div >> 8) & 0x7f;
|
||||
data[1] = div & 0xff;
|
||||
data[2] = 0x85 | ((div >> 10) & 0x60);
|
||||
data[3] = (params->frequency < 174000000 ? 0x88 : params->frequency < 470000000 ? 0x84 : 0x81);
|
||||
|
||||
if (i2c_transfer (&ttusb->i2c_adap, &msg, 1) != 1)
|
||||
return -EIO;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static struct ves1820_config alps_tdbe2_config = {
|
||||
.demod_address = 0x09,
|
||||
.xin = 57840000UL,
|
||||
.invert = 1,
|
||||
.selagc = VES1820_SELAGC_SIGNAMPERR,
|
||||
.pll_set = alps_tdbe2_pll_set,
|
||||
};
|
||||
|
||||
static u8 read_pwm(struct ttusb* ttusb)
|
||||
{
|
||||
u8 b = 0xff;
|
||||
u8 pwm;
|
||||
struct i2c_msg msg[] = { { .addr = 0x50,.flags = 0,.buf = &b,.len = 1 },
|
||||
{ .addr = 0x50,.flags = I2C_M_RD,.buf = &pwm,.len = 1} };
|
||||
|
||||
if ((i2c_transfer(&ttusb->i2c_adap, msg, 2) != 2) || (pwm == 0xff))
|
||||
pwm = 0x48;
|
||||
|
||||
return pwm;
|
||||
}
|
||||
|
||||
|
||||
static void frontend_init(struct ttusb* ttusb)
|
||||
@ -1394,6 +1436,12 @@ static void frontend_init(struct ttusb* ttusb)
|
||||
|
||||
break;
|
||||
|
||||
case 0x1004: // Hauppauge/TT DVB-C budget (ves1820/ALPS TDBE2(sp5659))
|
||||
ttusb->fe = ves1820_attach(&alps_tdbe2_config, &ttusb->i2c_adap, read_pwm(ttusb));
|
||||
if (ttusb->fe != NULL)
|
||||
break;
|
||||
break;
|
||||
|
||||
case 0x1005: // Hauppauge/TT Nova-USB-t budget (tda10046/Philips td1316(tda6651tt) OR cx22700/ALPS TDMB7(??))
|
||||
// try the ALPS TDMB7 first
|
||||
ttusb->fe = cx22700_attach(&alps_tdmb7_config, &ttusb->i2c_adap);
|
||||
@ -1570,7 +1618,7 @@ static void ttusb_disconnect(struct usb_interface *intf)
|
||||
|
||||
static struct usb_device_id ttusb_table[] = {
|
||||
{USB_DEVICE(0xb48, 0x1003)},
|
||||
/* {USB_DEVICE(0xb48, 0x1004)},UNDEFINED HARDWARE - mail linuxtv.org list*/ /* to be confirmed ???? */
|
||||
{USB_DEVICE(0xb48, 0x1004)},
|
||||
{USB_DEVICE(0xb48, 0x1005)},
|
||||
{}
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user