Skip to contentSkip to conversation

af9035: add support for 2nd tuner of MSI DigiVox Diversity

PATCH In review Stefan Pöschel 1 participant 3 messages Jan 4, 2016 – Jan 25, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 af9035: add support for 2nd tuner of MSI DigiVox Diversity

PIP tested with VLC. Diversity tested with the Windows driver.

---
 drivers/media/usb/dvb-usb-v2/af9035.c | 4 ++--
 drivers/media/usb/dvb-usb-v2/af9035.h | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)
drivers/media/usb/dvb-usb-v2/af9035.c +2 -2
index 6e02a15..b3c09fe 100644
@@ -684,7 +684,7 @@ static int af9035_download_firmware(struct dvb_usb_device *d,
 	if (ret < 0)
 		goto err;
 
-	if (tmp == 1 || tmp == 3) {
+	if (tmp == 1 || tmp == 3 || tmp == 5) {
 		/* configure gpioh1, reset & power slave demod */
 		ret = af9035_wr_reg_mask(d, 0x00d8b0, 0x01, 0x01);
 		if (ret < 0)
@@ -823,7 +823,7 @@ static int af9035_read_config(struct dvb_usb_device *d)
 	if (ret < 0)
 		goto err;
 
-	if (tmp == 1 || tmp == 3)
+	if (tmp == 1 || tmp == 3 || tmp == 5)
 		state->dual_mode = true;
 
 	dev_dbg(&d->udev->dev, "%s: ts mode=%d dual mode=%d\n", __func__,
drivers/media/usb/dvb-usb-v2/af9035.h +2 -1
index 416a97f..df22001 100644
@@ -112,9 +112,10 @@ static const u32 clock_lut_it9135[] = {
  * 0  TS
  * 1  DCA + PIP
  * 3  PIP
+ * 5  DCA + PIP
  * n  DCA
  *
- * Values 0 and 3 are seen to this day. 0 for single TS and 3 for dual TS.
+ * Values 0, 3 and 5 are seen to this day. 0 for single TS and 3/5 for dual TS.
  */
 
 #define EEPROM_BASE_AF9035        0x42fd
Signature · 1 line
2.6.4
#1 lore raw

Hi,

I just wanted to ask if there is any further information needed regarding my patch.

Best regards,
Stefan

Am 04.01.2016 um 22:16 schrieb Stefan Pöschel:

Quoted 47 lines

PIP tested with VLC. Diversity tested with the Windows driver.

---
 drivers/media/usb/dvb-usb-v2/af9035.c | 4 ++--
 drivers/media/usb/dvb-usb-v2/af9035.h | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)
drivers/media/usb/dvb-usb-v2/af9035.c +2 -2
index 6e02a15..b3c09fe 100644
@@ -684,7 +684,7 @@ static int af9035_download_firmware(struct dvb_usb_device *d,
 	if (ret < 0)
 		goto err;
 
-	if (tmp =1 || tmp == 3) {
+	if (tmp =1 || tmp == 3 || tmp == 5) {
 		/* configure gpioh1, reset & power slave demod */
 		ret =f9035_wr_reg_mask(d, 0x00d8b0, 0x01, 0x01);
 		if (ret < 0)
@@ -823,7 +823,7 @@ static int af9035_read_config(struct dvb_usb_device *d)
 	if (ret < 0)
 		goto err;
 
-	if (tmp =1 || tmp == 3)
+	if (tmp =1 || tmp == 3 || tmp == 5)
 		state->dual_mode =rue;
 
 	dev_dbg(&d->udev->dev, "%s: ts mode= dual mode=%d\n", __func__,
drivers/media/usb/dvb-usb-v2/af9035.h +2 -1
index 416a97f..df22001 100644
@@ -112,9 +112,10 @@ static const u32 clock_lut_it9135[] =
  * 0  TS
  * 1  DCA + PIP
  * 3  PIP
+ * 5  DCA + PIP
  * n  DCA
  *
- * Values 0 and 3 are seen to this day. 0 for single TS and 3 for dual TS.
+ * Values 0, 3 and 5 are seen to this day. 0 for single TS and 3/5 for dual TS.
  */
 
 #define EEPROM_BASE_AF9035        0x42fd
#2 lore raw

OK, I guess some further details might help here:

The MSI DigiVox Diversity (USB DVB-T stick) has two tuners and is promoted with diversity function. I can confirm both features working under Windows.
The stick also works out-of-the-box under a more or less recent kernel - however only one tuner/DVB adapter is recognized and added.

Therefore I sniffed the stick initialisation via USB under Windows and stepwise compared the I²C writing/reading with another dump of the stick init under Linux. It turned out that the regarding EEPROM register of the stick has a different value than the two present ones, to announce that it has two tuners and diversity.
After adding the new value of 5 to the regarding IF clauses, the second tuner is recognized and added as a second DVB adapter.

To verify the tuners working independent from each other, I used VLC with the --dvb-adapter param and tuned to different DVB-T muxes. Both tuners worked at the same time without problems.
Though the diversity feature does not seem to work yet; as far as I understand there are hardly kernel drivers supporting this...

Regards,
Stefan

Am 15.01.2016 um 18:13 schrieb Stefan Pöschel:

Quoted 60 lines

Hi,

I just wanted to ask if there is any further information needed regarding my patch.

Best regards,
Stefan

Am 04.01.2016 um 22:16 schrieb Stefan Pöschel:

Quoted 37 lines

PIP tested with VLC. Diversity tested with the Windows driver.

---
 drivers/media/usb/dvb-usb-v2/af9035.c | 4 ++--
 drivers/media/usb/dvb-usb-v2/af9035.h | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)
drivers/media/usb/dvb-usb-v2/af9035.c +2 -2
index 6e02a15..b3c09fe 100644
@@ -684,7 +684,7 @@ static int af9035_download_firmware(struct dvb_usb_device *d,
 	if (ret < 0)
 		goto err;
 
-	if (tmp =1 || tmp == 3) {
+	if (tmp =1 || tmp == 3 || tmp == 5) {
 		/* configure gpioh1, reset & power slave demod */
 		ret =f9035_wr_reg_mask(d, 0x00d8b0, 0x01, 0x01);
 		if (ret < 0)
@@ -823,7 +823,7 @@ static int af9035_read_config(struct dvb_usb_device *d)
 	if (ret < 0)
 		goto err;
 
-	if (tmp =1 || tmp == 3)
+	if (tmp =1 || tmp == 3 || tmp == 5)
 		state->dual_mode =rue;
 
 	dev_dbg(&d->udev->dev, "%s: ts mode= dual mode=%d\n", __func__,
drivers/media/usb/dvb-usb-v2/af9035.h +0 -0
index 416a97f..df22001 100644
@@ -112,9 +112,10 @@ static const u32 clock_lut_it9135[] =
  * 0  TS

drivers/media/usb/dvb-usb-v2/af9035.h static const u32 clock_lut_it9135[] = · line 121

Quoted 10 lines
drivers/media/usb/dvb-usb-v2/af9035.h +2 -1
  * 1  DCA + PIP
  * 3  PIP
+ * 5  DCA + PIP
  * n  DCA
  *
- * Values 0 and 3 are seen to this day. 0 for single TS and 3 for dual TS.
+ * Values 0, 3 and 5 are seen to this day. 0 for single TS and 3/5 for dual TS.
  */
 
 #define EEPROM_BASE_AF9035        0x42fd

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html