提交 115eea4e 编写于 作者: S Svante Olofsson 提交者: Linus Torvalds

[PATCH] dvb: usb: digitv: support for nxt6000 demod

Add support for the NXT6000-based digitv-box.  Add .get_tune_settings callback
for the NXT6000 to have a min_tune_delay of 500ms.
Signed-off-by: NSvante Olofsson <svante@agentum.com>
Signed-off-by: NPatrick Boettcher <pb@linuxtv.org>
Signed-off-by: NJohannes Stezenbach <js@linuxtv.org>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 47dc3d68
...@@ -111,31 +111,28 @@ static int digitv_mt352_demod_init(struct dvb_frontend *fe) ...@@ -111,31 +111,28 @@ static int digitv_mt352_demod_init(struct dvb_frontend *fe)
} }
static struct mt352_config digitv_mt352_config = { static struct mt352_config digitv_mt352_config = {
.demod_address = 0x0, /* ignored by the digitv anyway */
.demod_init = digitv_mt352_demod_init, .demod_init = digitv_mt352_demod_init,
.pll_set = dvb_usb_pll_set, .pll_set = dvb_usb_pll_set,
}; };
static struct nxt6000_config digitv_nxt6000_config = { static int digitv_nxt6000_pll_set(struct dvb_frontend *fe, struct dvb_frontend_parameters *fep)
.demod_address = 0x0, /* ignored by the digitv anyway */ {
.clock_inversion = 0x0, struct dvb_usb_device *d = fe->dvb->priv;
u8 b[5];
dvb_usb_pll_set(fe,fep,b);
return digitv_ctrl_msg(d,USB_WRITE_TUNER,0,&b[1],4,NULL,0);
}
.pll_init = NULL, static struct nxt6000_config digitv_nxt6000_config = {
.pll_set = NULL, .clock_inversion = 1,
.pll_set = digitv_nxt6000_pll_set,
}; };
static int digitv_frontend_attach(struct dvb_usb_device *d) static int digitv_frontend_attach(struct dvb_usb_device *d)
{ {
if ((d->fe = mt352_attach(&digitv_mt352_config, &d->i2c_adap)) != NULL) if ((d->fe = mt352_attach(&digitv_mt352_config, &d->i2c_adap)) != NULL ||
(d->fe = nxt6000_attach(&digitv_nxt6000_config, &d->i2c_adap)) != NULL)
return 0; return 0;
if ((d->fe = nxt6000_attach(&digitv_nxt6000_config, &d->i2c_adap)) != NULL) {
warn("nxt6000 support is not done yet, in fact you are one of the first "
"person who wants to use this device in Linux. Please report to "
"linux-dvb@linuxtv.org");
return 0;
}
return -EIO; return -EIO;
} }
...@@ -173,7 +170,18 @@ static struct dvb_usb_properties digitv_properties; ...@@ -173,7 +170,18 @@ static struct dvb_usb_properties digitv_properties;
static int digitv_probe(struct usb_interface *intf, static int digitv_probe(struct usb_interface *intf,
const struct usb_device_id *id) const struct usb_device_id *id)
{ {
return dvb_usb_device_init(intf,&digitv_properties,THIS_MODULE,NULL); struct dvb_usb_device *d;
int ret;
if ((ret = dvb_usb_device_init(intf,&digitv_properties,THIS_MODULE,&d)) == 0) {
u8 b[4] = { 0 };
b[0] = 1;
digitv_ctrl_msg(d,USB_WRITE_REMOTE_TYPE,0,b,4,NULL,0);
b[0] = 0;
digitv_ctrl_msg(d,USB_WRITE_REMOTE,0,b,4,NULL,0);
}
return ret;
} }
static struct usb_device_id digitv_table [] = { static struct usb_device_id digitv_table [] = {
......
...@@ -482,6 +482,7 @@ static int nxt6000_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par ...@@ -482,6 +482,7 @@ static int nxt6000_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
if ((result = nxt6000_set_inversion(state, param->inversion)) < 0) if ((result = nxt6000_set_inversion(state, param->inversion)) < 0)
return result; return result;
msleep(500);
return 0; return 0;
} }
...@@ -525,6 +526,12 @@ static int nxt6000_read_signal_strength(struct dvb_frontend* fe, u16* signal_str ...@@ -525,6 +526,12 @@ static int nxt6000_read_signal_strength(struct dvb_frontend* fe, u16* signal_str
return 0; return 0;
} }
static int nxt6000_fe_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings *tune)
{
tune->min_delay_ms = 500;
return 0;
}
static struct dvb_frontend_ops nxt6000_ops; static struct dvb_frontend_ops nxt6000_ops;
struct dvb_frontend* nxt6000_attach(const struct nxt6000_config* config, struct dvb_frontend* nxt6000_attach(const struct nxt6000_config* config,
...@@ -578,6 +585,8 @@ static struct dvb_frontend_ops nxt6000_ops = { ...@@ -578,6 +585,8 @@ static struct dvb_frontend_ops nxt6000_ops = {
.init = nxt6000_init, .init = nxt6000_init,
.get_tune_settings = nxt6000_fe_get_tune_settings,
.set_frontend = nxt6000_set_frontend, .set_frontend = nxt6000_set_frontend,
.read_status = nxt6000_read_status, .read_status = nxt6000_read_status,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册