aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2013-06-03 18:39:51 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-06-08 20:45:22 -0400
commitd716ef46fbb9de22de09516ecff990fe4e7799e3 (patch)
tree8bf5b0605ac44db5da3ad454f4f90397d468ab65
parente8292e28e3543fec62406551a026fcc0f2ca3cff (diff)
[media] af9035: correct TS mode handling
Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/usb/dvb-usb-v2/af9035.c14
-rw-r--r--drivers/media/usb/dvb-usb-v2/af9035.h11
2 files changed, 16 insertions, 9 deletions
diff --git a/drivers/media/usb/dvb-usb-v2/af9035.c b/drivers/media/usb/dvb-usb-v2/af9035.c
index e855ee6c86b5..1ea17dc2a76e 100644
--- a/drivers/media/usb/dvb-usb-v2/af9035.c
+++ b/drivers/media/usb/dvb-usb-v2/af9035.c
@@ -518,11 +518,11 @@ static int af9035_download_firmware(struct dvb_usb_device *d,
518 * which is done by master demod. 518 * which is done by master demod.
519 * Master feeds also clock and controls power via GPIO. 519 * Master feeds also clock and controls power via GPIO.
520 */ 520 */
521 ret = af9035_rd_reg(d, state->eeprom_addr + EEPROM_DUAL_MODE, &tmp); 521 ret = af9035_rd_reg(d, state->eeprom_addr + EEPROM_TS_MODE, &tmp);
522 if (ret < 0) 522 if (ret < 0)
523 goto err; 523 goto err;
524 524
525 if (tmp) { 525 if (tmp == 1 || tmp == 3) {
526 /* configure gpioh1, reset & power slave demod */ 526 /* configure gpioh1, reset & power slave demod */
527 ret = af9035_wr_reg_mask(d, 0x00d8b0, 0x01, 0x01); 527 ret = af9035_wr_reg_mask(d, 0x00d8b0, 0x01, 0x01);
528 if (ret < 0) 528 if (ret < 0)
@@ -640,13 +640,15 @@ static int af9035_read_config(struct dvb_usb_device *d)
640 } 640 }
641 641
642 /* check if there is dual tuners */ 642 /* check if there is dual tuners */
643 ret = af9035_rd_reg(d, state->eeprom_addr + EEPROM_DUAL_MODE, &tmp); 643 ret = af9035_rd_reg(d, state->eeprom_addr + EEPROM_TS_MODE, &tmp);
644 if (ret < 0) 644 if (ret < 0)
645 goto err; 645 goto err;
646 646
647 state->dual_mode = tmp; 647 if (tmp == 1 || tmp == 3)
648 dev_dbg(&d->udev->dev, "%s: dual mode=%d\n", __func__, 648 state->dual_mode = true;
649 state->dual_mode); 649
650 dev_dbg(&d->udev->dev, "%s: ts mode=%d dual mode=%d\n", __func__,
651 tmp, state->dual_mode);
650 652
651 if (state->dual_mode) { 653 if (state->dual_mode) {
652 /* read 2nd demodulator I2C address */ 654 /* read 2nd demodulator I2C address */
diff --git a/drivers/media/usb/dvb-usb-v2/af9035.h b/drivers/media/usb/dvb-usb-v2/af9035.h
index b5827ca3a01e..a1c68d829b8c 100644
--- a/drivers/media/usb/dvb-usb-v2/af9035.h
+++ b/drivers/media/usb/dvb-usb-v2/af9035.h
@@ -100,8 +100,13 @@ static const u32 clock_lut_it9135[] = {
100 * eeprom is memory mapped as read only. Writing that memory mapped address 100 * eeprom is memory mapped as read only. Writing that memory mapped address
101 * will not corrupt eeprom. 101 * will not corrupt eeprom.
102 * 102 *
103 * eeprom has value 0x00 single mode and 0x03 for dual mode as far as I have 103 * TS mode:
104 * seen to this day. 104 * 0 TS
105 * 1 DCA + PIP
106 * 3 PIP
107 * n DCA
108 *
109 * Values 0 and 3 are seen to this day. 0 for single TS and 3 for dual TS.
105 */ 110 */
106 111
107#define EEPROM_BASE_AF9035 0x42fd 112#define EEPROM_BASE_AF9035 0x42fd
@@ -109,7 +114,7 @@ static const u32 clock_lut_it9135[] = {
109#define EEPROM_SHIFT 0x10 114#define EEPROM_SHIFT 0x10
110 115
111#define EEPROM_IR_MODE 0x10 116#define EEPROM_IR_MODE 0x10
112#define EEPROM_DUAL_MODE 0x29 117#define EEPROM_TS_MODE 0x29
113#define EEPROM_2ND_DEMOD_ADDR 0x2a 118#define EEPROM_2ND_DEMOD_ADDR 0x2a
114#define EEPROM_IR_TYPE 0x2c 119#define EEPROM_IR_TYPE 0x2c
115#define EEPROM_1_IF_L 0x30 120#define EEPROM_1_IF_L 0x30