/* DVB USB compliant linux driver for Sigmatek DVB-110 DVB-T USB2.0 receiver
*
- * Copyright (C) 2006 Antti Palosaari (crope@iki.fi)
+ * Copyright (C) 2006 Antti Palosaari <crope@iki.fi>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
module_param_named(debug, dvb_usb_au6610_debug, int, 0644);
MODULE_PARM_DESC(debug, "set debugging level (1=rc (or-able))." DVB_USB_DEBUG_STATUS);
-
static int au6610_usb_msg(struct dvb_usb_device *d, u8 operation, u8 addr,
u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
{
.parallel_ts = 1,
};
-
static int au6610_zl10353_frontend_attach(struct dvb_usb_adapter *adap)
{
if ((adap->fe = dvb_attach(zl10353_attach, &au6610_zl10353_config,
return -EIO;
}
+static struct qt1010_config au6610_qt1010_config = {
+ .i2c_address = 0xc4
+};
+
+static int au6610_qt1010_tuner_attach(struct dvb_usb_adapter *adap)
+{
+ /* TODO FIXME; probably I2C gate.
+ QT1010 tuner does not respond before we write 0x1a to ZL10353 demodulator
+ register 0x62. This ought to be done somewhere in demodulator initialization.
+ This solution is temporary hack. */
+ u8 buf[2] = { 0x62, 0x1a };
+ struct i2c_msg msg = {
+ .addr = au6610_zl10353_config.demod_address, .flags = 0, .buf = buf, .len = 2
+ };
+ if (i2c_transfer(&adap->dev->i2c_adap, &msg, 1) != 1) {
+ printk(KERN_WARNING "au6610 tuner attach failed\n");
+ return -EREMOTEIO;
+ }
+ return dvb_attach(qt1010_attach,
+ adap->fe, &adap->dev->i2c_adap,
+ &au6610_qt1010_config) == NULL ? -ENODEV : 0;
+}
+
/* DVB USB Driver stuff */
static struct dvb_usb_device_properties au6610_properties;
.adapter = {
{
.frontend_attach = au6610_zl10353_frontend_attach,
- .tuner_attach = qt1010_tuner_attach,
+ .tuner_attach = au6610_qt1010_tuner_attach,
.stream = {
.type = USB_ISOC,
return -EIO;
}
+static struct qt1010_config gl861_qt1010_config = {
+ .i2c_address = 0xc4
+};
+
+static int gl861_tuner_attach(struct dvb_usb_adapter *adap)
+{
+ /* TODO FIXME; probably I2C gate.
+ QT1010 tuner does not respond before we write 0x1a to ZL10353 demodulator
+ register 0x62. This ought to be done somewhere in demodulator initialization.
+ This solution is temporary hack. */
+ u8 buf[2] = { 0x62, 0x1a };
+ struct i2c_msg msg = {
+ .addr = gl861_zl10353_config.demod_address, .flags = 0, .buf = buf, .len = 2
+ };
+ if (i2c_transfer(&adap->dev->i2c_adap, &msg, 1) != 1) {
+ printk(KERN_WARNING "gl861 tuner attach failed\n");
+ return -EREMOTEIO;
+ }
+ return dvb_attach(qt1010_attach,
+ adap->fe, &adap->dev->i2c_adap,
+ &gl861_qt1010_config) == NULL ? -ENODEV : 0;
+}
+
/* DVB USB Driver stuff */
static struct dvb_usb_device_properties gl861_properties;
.adapter = {{
.frontend_attach = gl861_frontend_attach,
- .tuner_attach = qt1010_tuner_attach,
+ .tuner_attach = gl861_tuner_attach,
.stream = {
.type = USB_BULK,