diff options
| -rw-r--r-- | drivers/media/dvb/dvb-usb/au6610.c | 29 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-usb/gl861.c | 11 |
2 files changed, 23 insertions, 17 deletions
diff --git a/drivers/media/dvb/dvb-usb/au6610.c b/drivers/media/dvb/dvb-usb/au6610.c index 1c0160dfc2af..456b89f4f761 100644 --- a/drivers/media/dvb/dvb-usb/au6610.c +++ b/drivers/media/dvb/dvb-usb/au6610.c | |||
| @@ -24,8 +24,8 @@ static int au6610_usb_msg(struct dvb_usb_device *d, u8 operation, u8 addr, | |||
| 24 | { | 24 | { |
| 25 | int ret; | 25 | int ret; |
| 26 | u16 index; | 26 | u16 index; |
| 27 | u8 usb_buf[6]; /* enough for all known requests, read returns 5 and write 6 bytes */ | 27 | u8 usb_buf[6]; /* enough for all known requests, |
| 28 | 28 | read returns 5 and write 6 bytes */ | |
| 29 | switch (wlen) { | 29 | switch (wlen) { |
| 30 | case 1: | 30 | case 1: |
| 31 | index = wbuf[0] << 8; | 31 | index = wbuf[0] << 8; |
| @@ -40,7 +40,7 @@ static int au6610_usb_msg(struct dvb_usb_device *d, u8 operation, u8 addr, | |||
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | ret = usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0), operation, | 42 | ret = usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0), operation, |
| 43 | USB_TYPE_VENDOR | USB_DIR_IN, addr, index, usb_buf, | 43 | USB_TYPE_VENDOR|USB_DIR_IN, addr, index, usb_buf, |
| 44 | sizeof(usb_buf), AU6610_USB_TIMEOUT); | 44 | sizeof(usb_buf), AU6610_USB_TIMEOUT); |
| 45 | 45 | ||
| 46 | if (ret < 0) | 46 | if (ret < 0) |
| @@ -56,7 +56,8 @@ static int au6610_usb_msg(struct dvb_usb_device *d, u8 operation, u8 addr, | |||
| 56 | return ret; | 56 | return ret; |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | static int au6610_i2c_msg(struct dvb_usb_device *d, u8 addr, u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen) | 59 | static int au6610_i2c_msg(struct dvb_usb_device *d, u8 addr, |
| 60 | u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen) | ||
| 60 | { | 61 | { |
| 61 | u8 request; | 62 | u8 request; |
| 62 | u8 wo = (rbuf == NULL || rlen == 0); /* write-only */ | 63 | u8 wo = (rbuf == NULL || rlen == 0); /* write-only */ |
| @@ -72,7 +73,8 @@ static int au6610_i2c_msg(struct dvb_usb_device *d, u8 addr, u8 *wbuf, u16 wlen, | |||
| 72 | 73 | ||
| 73 | 74 | ||
| 74 | /* I2C */ | 75 | /* I2C */ |
| 75 | static int au6610_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], int num) | 76 | static int au6610_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], |
| 77 | int num) | ||
| 76 | { | 78 | { |
| 77 | struct dvb_usb_device *d = i2c_get_adapdata(adap); | 79 | struct dvb_usb_device *d = i2c_get_adapdata(adap); |
| 78 | int i; | 80 | int i; |
| @@ -87,7 +89,8 @@ static int au6610_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], int n | |||
| 87 | /* write/read request */ | 89 | /* write/read request */ |
| 88 | if (i+1 < num && (msg[i+1].flags & I2C_M_RD)) { | 90 | if (i+1 < num && (msg[i+1].flags & I2C_M_RD)) { |
| 89 | if (au6610_i2c_msg(d, msg[i].addr, msg[i].buf, | 91 | if (au6610_i2c_msg(d, msg[i].addr, msg[i].buf, |
| 90 | msg[i].len, msg[i+1].buf, msg[i+1].len) < 0) | 92 | msg[i].len, msg[i+1].buf, |
| 93 | msg[i+1].len) < 0) | ||
| 91 | break; | 94 | break; |
| 92 | i++; | 95 | i++; |
| 93 | } else if (au6610_i2c_msg(d, msg[i].addr, msg[i].buf, | 96 | } else if (au6610_i2c_msg(d, msg[i].addr, msg[i].buf, |
| @@ -143,13 +146,14 @@ static struct qt1010_config au6610_qt1010_config = { | |||
| 143 | static int au6610_qt1010_tuner_attach(struct dvb_usb_adapter *adap) | 146 | static int au6610_qt1010_tuner_attach(struct dvb_usb_adapter *adap) |
| 144 | { | 147 | { |
| 145 | /* TODO FIXME; probably I2C gate. | 148 | /* TODO FIXME; probably I2C gate. |
| 146 | QT1010 tuner does not respond before we write 0x1a to ZL10353 demodulator | 149 | QT1010 tuner does not respond before we write 0x1a to ZL10353 demod |
| 147 | register 0x62. This ought to be done somewhere in demodulator initialization. | 150 | register 0x62. This ought to be done somewhere in demod initialization. |
| 148 | This solution is temporary hack. */ | 151 | This solution is temporary hack. */ |
| 152 | |||
| 149 | u8 buf[2] = { 0x62, 0x1a }; | 153 | u8 buf[2] = { 0x62, 0x1a }; |
| 150 | struct i2c_msg msg = { | 154 | struct i2c_msg msg = { .addr = au6610_zl10353_config.demod_address, |
| 151 | .addr = au6610_zl10353_config.demod_address, .flags = 0, .buf = buf, .len = 2 | 155 | .flags = 0, .buf = buf, .len = 2 }; |
| 152 | }; | 156 | |
| 153 | if (i2c_transfer(&adap->dev->i2c_adap, &msg, 1) != 1) { | 157 | if (i2c_transfer(&adap->dev->i2c_adap, &msg, 1) != 1) { |
| 154 | printk(KERN_WARNING "au6610 tuner attach failed\n"); | 158 | printk(KERN_WARNING "au6610 tuner attach failed\n"); |
| 155 | return -EREMOTEIO; | 159 | return -EREMOTEIO; |
| @@ -162,7 +166,8 @@ static int au6610_qt1010_tuner_attach(struct dvb_usb_adapter *adap) | |||
| 162 | /* DVB USB Driver stuff */ | 166 | /* DVB USB Driver stuff */ |
| 163 | static struct dvb_usb_device_properties au6610_properties; | 167 | static struct dvb_usb_device_properties au6610_properties; |
| 164 | 168 | ||
| 165 | static int au6610_probe(struct usb_interface *intf, const struct usb_device_id *id) | 169 | static int au6610_probe(struct usb_interface *intf, |
| 170 | const struct usb_device_id *id) | ||
| 166 | { | 171 | { |
| 167 | struct dvb_usb_device *d; | 172 | struct dvb_usb_device *d; |
| 168 | struct usb_host_interface *alt; | 173 | struct usb_host_interface *alt; |
diff --git a/drivers/media/dvb/dvb-usb/gl861.c b/drivers/media/dvb/dvb-usb/gl861.c index 200ba13d1d19..d62edb533d00 100644 --- a/drivers/media/dvb/dvb-usb/gl861.c +++ b/drivers/media/dvb/dvb-usb/gl861.c | |||
| @@ -123,13 +123,14 @@ static struct qt1010_config gl861_qt1010_config = { | |||
| 123 | static int gl861_tuner_attach(struct dvb_usb_adapter *adap) | 123 | static int gl861_tuner_attach(struct dvb_usb_adapter *adap) |
| 124 | { | 124 | { |
| 125 | /* TODO FIXME; probably I2C gate. | 125 | /* TODO FIXME; probably I2C gate. |
| 126 | QT1010 tuner does not respond before we write 0x1a to ZL10353 demodulator | 126 | QT1010 tuner does not respond before we write 0x1a to ZL10353 demod |
| 127 | register 0x62. This ought to be done somewhere in demodulator initialization. | 127 | register 0x62. This ought to be done somewhere in demod initialization. |
| 128 | This solution is temporary hack. */ | 128 | This solution is temporary hack. */ |
| 129 | |||
| 129 | u8 buf[2] = { 0x62, 0x1a }; | 130 | u8 buf[2] = { 0x62, 0x1a }; |
| 130 | struct i2c_msg msg = { | 131 | struct i2c_msg msg = { .addr = gl861_zl10353_config.demod_address, |
| 131 | .addr = gl861_zl10353_config.demod_address, .flags = 0, .buf = buf, .len = 2 | 132 | .flags = 0, .buf = buf, .len = 2 }; |
| 132 | }; | 133 | |
| 133 | if (i2c_transfer(&adap->dev->i2c_adap, &msg, 1) != 1) { | 134 | if (i2c_transfer(&adap->dev->i2c_adap, &msg, 1) != 1) { |
| 134 | printk(KERN_WARNING "gl861 tuner attach failed\n"); | 135 | printk(KERN_WARNING "gl861 tuner attach failed\n"); |
| 135 | return -EREMOTEIO; | 136 | return -EREMOTEIO; |
