Skip to contentSkip to conversation

Fix to qt1010 tuner frequency selection (media/dvb)

PATCH In review Jyrki Kuoppala 2 participants 6 messages Aug 22, 2011 – Oct 23, 2011 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix to qt1010 tuner frequency selection (media/dvb)

The patch fixes frequency selection for some UHF frequencies e.g. channel 32 (562 MHz) on the qt1010 tuner. The tuner is used e.g. in the MSI Mega Sky dvb-t stick ("MSI Mega Sky 55801 DVB-T USB2.0")

One example of problem reports of the bug this fixes can be read at http://www.freak-search.com/de/thread/330303/linux-dvb_tuning_problem_with_some_frequencies_qt1010,_dvb

Applies to kernel versions 2.6.38.8, 2.6.39.4, 3.0.3 and 3.1-rc2.

drivers/media/common/tuners/qt1010.c 2011-08-21 23:16:38.209580365 +0300 renamed from drivers/media/common/tuners/qt1010.c 2011-03-15 03:20:32.000000000 +0200 +3 -2
diff -upr linux-source-2.6.38.orig/drivers/media/common/tuners/qt1010.c linux-source-2.6.38/drivers/media/common/tuners/qt1010.c
@@ -198,9 +198,10 @@ static int qt1010_set_params(struct dvb_
 
     /* 22 */
     if      (freq < 450000000) rd[15].val = 0xd0; /* 450 MHz */
-    else if (freq < 482000000) rd[15].val = 0xd1; /* 482 MHz */
+    else if (freq < 482000000) rd[15].val = 0xd2; /* 482 MHz */
     else if (freq < 514000000) rd[15].val = 0xd4; /* 514 MHz */
-    else if (freq < 546000000) rd[15].val = 0xd7; /* 546 MHz */
+    else if (freq < 546000000) rd[15].val = 0xd6; /* 546 MHz */
+    else if (freq < 578000000) rd[15].val = 0xd8; /* 578 MHz */
     else if (freq < 610000000) rd[15].val = 0xda; /* 610 MHz */
     else                       rd[15].val = 0xd0;
 
Tested-by on v1 1/1
#1 lore raw
Quoted 11 lines · On Monday 22 Aug 2011 20:19:42 Jyrki Kuoppala wrote:

The patch fixes frequency selection for some UHF frequencies e.g. channel 32 (562 MHz) on the qt1010 tuner. The tuner is used e.g. in the MSI Mega Sky dvb-t stick ("MSI Mega Sky 55801 DVB-T USB2.0")

One example of problem reports of the bug this fixes can be read at
http://www.freak-search.com/de/thread/330303/linux-dvb_tuning_problem_with_s
ome_frequencies_qt1010,_dvb

Applies to kernel versions 2.6.38.8, 2.6.39.4, 3.0.3 and 3.1-rc2.

This patch means I can now finally tune to all the BBC channels (which are on channel 31 (554 MHz) in my area). This should definitely go to stable, as I've also seen other similar reports for users who can't tune to various channels in the affected ranges here using qt1010.

Mauro - I don't see this one in your git tree in the 3.2 branch, or in the temporary linuxtv patchwork, so I'm assuming this one fell between the cracks?

-Carlos

Quoted 25 lines

diff -upr linux-source-2.6.38.orig/drivers/media/common/tuners/qt1010.c linux-source-2.6.38/drivers/media/common/tuners/qt1010.c
--- linux-source-2.6.38.orig/drivers/media/common/tuners/qt1010.c

2011-03-15 03:20:32.000000000 +0200
+++ linux-source-2.6.38/drivers/media/common/tuners/qt1010.c
2011-08-21 23:16:38.209580365 +0300
drivers/media/common/tuners/qt1010.c 2011-08-21 23:16:38.209580365 +0300 renamed from drivers/media/common/tuners/qt1010.c 2011-03-15 03:20:32.000000000 +0200 +3 -3
@@ -198,9 +198,10 @@ static int qt1010_set_params(struct dvb_
 
      /* 22 */
      if      (freq < 450000000) rd[15].val = 0xd0; /* 450 MHz */
-    else if (freq < 482000000) rd[15].val = 0xd1; /* 482 MHz */
+    else if (freq < 482000000) rd[15].val = 0xd2; /* 482 MHz */
      else if (freq < 514000000) rd[15].val = 0xd4; /* 514 MHz */
-    else if (freq < 546000000) rd[15].val = 0xd7; /* 546 MHz */
+    else if (freq < 546000000) rd[15].val = 0xd6; /* 546 MHz */
+    else if (freq < 578000000) rd[15].val = 0xd8; /* 578 MHz */
      else if (freq < 610000000) rd[15].val = 0xda; /* 610 MHz */
      else                       rd[15].val = 0xd0;
 
 
--

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

#2 lore raw

I haven't gotten any feedback, and didn't see any comments on the lists (though I've checked them only occasionally), so I think you're probably right it fell between the cracks.

Jyrki

25.09.2011 19:13, Carlos Corbacho kirjoitti:

Quoted 50 lines · On Monday 22 Aug 2011 20:19:42 Jyrki Kuoppala wrote:
Quoted 11 lines

The patch fixes frequency selection for some UHF frequencies e.g. channel 32 (562 MHz) on the qt1010 tuner. The tuner is used e.g. in the MSI Mega Sky dvb-t stick ("MSI Mega Sky 55801 DVB-T USB2.0")

One example of problem reports of the bug this fixes can be read at
http://www.freak-search.com/de/thread/330303/linux-dvb_tuning_problem_with_s
ome_frequencies_qt1010,_dvb

Applies to kernel versions 2.6.38.8, 2.6.39.4, 3.0.3 and 3.1-rc2.

This patch means I can now finally tune to all the BBC channels (which are on channel 31 (554 MHz) in my area). This should definitely go to stable, as I've also seen other similar reports for users who can't tune to various channels in the affected ranges here using qt1010.

Mauro - I don't see this one in your git tree in the 3.2 branch, or in the temporary linuxtv patchwork, so I'm assuming this one fell between the cracks?

-Carlos

Quoted 25 lines

diff -upr linux-source-2.6.38.orig/drivers/media/common/tuners/qt1010.c linux-source-2.6.38/drivers/media/common/tuners/qt1010.c
--- linux-source-2.6.38.orig/drivers/media/common/tuners/qt1010.c

2011-03-15 03:20:32.000000000 +0200
+++ linux-source-2.6.38/drivers/media/common/tuners/qt1010.c
2011-08-21 23:16:38.209580365 +0300
(quoted diff) +3 -3
@@ -198,9 +198,10 @@ static int qt1010_set_params(struct dvb_
 
       /* 22 */
       if      (freq<  450000000) rd[15].val = 0xd0; /* 450 MHz */
-    else if (freq<  482000000) rd[15].val = 0xd1; /* 482 MHz */
+    else if (freq<  482000000) rd[15].val = 0xd2; /* 482 MHz */
       else if (freq<  514000000) rd[15].val = 0xd4; /* 514 MHz */
-    else if (freq<  546000000) rd[15].val = 0xd7; /* 546 MHz */
+    else if (freq<  546000000) rd[15].val = 0xd6; /* 546 MHz */
+    else if (freq<  578000000) rd[15].val = 0xd8; /* 578 MHz */
       else if (freq<  610000000) rd[15].val = 0xda; /* 610 MHz */
       else                       rd[15].val = 0xd0;
 
 
--

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

#3 lore raw

Jyrki,

So after a bit more testing...

[...]

Quoted 6 lines
Quoted 6 lines

Review

Quoted 6 lines
       /* 22 */
       if      (freq<  450000000) rd[15].val = 0xd0; /* 450 MHz
       */
(quoted diff) +1 -1
-    else if (freq<  482000000) rd[15].val = 0xd1; /* 482 MHz */
+    else if (freq<  482000000) rd[15].val = 0xd2; /* 482 MHz */

This change isn't so good.

With this change, I can no longer tune to channel 21 (474 MHz). If I revert it back to 0xd1, it's fine.

[...]

Quoted 7 lines
Quoted 7 lines

Review

Quoted 7 lines
       else if (freq<  514000000) rd[15].val = 0xd4; /* 514 MHz
       */
(quoted diff) +2 -1
-    else if (freq<  546000000) rd[15].val = 0xd7; /* 546 MHz */
+    else if (freq<  546000000) rd[15].val = 0xd6; /* 546 MHz */
+    else if (freq<  578000000) rd[15].val = 0xd8; /* 578 MHz */

(This change is still good though, as this does allow me to now tune to the BBC channels in this range).

-Carlos

#4 lore raw

I think my problem frequency has also been at the later spot. It is possible there is something more complicated going on at 474 MHz - so based on your testing, it's best to apply just the latter change, at least for now.

Jyrki

+ else if (freq< 546000000) rd[15].val = 0xd6; /* 546 MHz */

+ else if (freq< 546000000) rd[15].val = 0xd6; /* 546 MHz */

20.10.2011 00:06, Carlos Corbacho kirjoitti:

Quoted 29 lines

Jyrki,

So after a bit more testing...

[...]

Quoted 6 lines
Quoted 6 lines

Review

Quoted 6 lines
        /* 22 */
        if      (freq<   450000000) rd[15].val = 0xd0; /* 450 MHz
        */
(quoted diff) +1 -1
-    else if (freq<   482000000) rd[15].val = 0xd1; /* 482 MHz */
+    else if (freq<   482000000) rd[15].val = 0xd2; /* 482 MHz */

This change isn't so good.

With this change, I can no longer tune to channel 21 (474 MHz). If I revert it back to 0xd1, it's fine.

[...]

Quoted 6 lines
Quoted 6 lines

Review

Quoted 6 lines
        else if (freq<   514000000) rd[15].val = 0xd4; /* 514 MHz
        */
(quoted diff) +2 -1
-    else if (freq<   546000000) rd[15].val = 0xd7; /* 546 MHz */
+    else if (freq<   546000000) rd[15].val = 0xd6; /* 546 MHz */
+    else if (freq<   578000000) rd[15].val = 0xd8; /* 578 MHz */

(This change is still good though, as this does allow me to now tune to the BBC channels in this range).

-Carlos

#5 lore raw

Review

Quoted 11 lines · On Thursday 20 Oct 2011 07:45:45 Jyrki Kuoppala wrote:

I think my problem frequency has also been at the later spot. It is possible there is something more complicated going on at 474 MHz - so based on your testing, it's best to apply just the latter change, at least for now.

Jyrki

(quoted diff) +2 -0
+    else if (freq<   546000000) rd[15].val = 0xd6; /* 546 MHz */
 
+    else if (freq<   546000000) rd[15].val = 0xd6; /* 546 MHz */

Are you going to resubmit the patch with just these changes (you can add my Tested-by to that), or if you want, I can take care of resubmitting it?

-Carlos