aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/radio/radio-si470x.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/radio/radio-si470x.c')
-rw-r--r--drivers/media/radio/radio-si470x.c47
1 files changed, 30 insertions, 17 deletions
diff --git a/drivers/media/radio/radio-si470x.c b/drivers/media/radio/radio-si470x.c
index 3efc08f424fd..2f680268c545 100644
--- a/drivers/media/radio/radio-si470x.c
+++ b/drivers/media/radio/radio-si470x.c
@@ -667,23 +667,29 @@ static int si470x_get_freq(struct si470x_device *radio, unsigned int *freq)
667 int retval; 667 int retval;
668 668
669 /* Spacing (kHz) */ 669 /* Spacing (kHz) */
670 switch (space) { 670 switch ((radio->registers[SYSCONFIG2] & SYSCONFIG2_SPACE) >> 4) {
671 /* 0: 200 kHz (USA, Australia) */ 671 /* 0: 200 kHz (USA, Australia) */
672 case 0 : spacing = 0.200 * FREQ_MUL; break; 672 case 0:
673 spacing = 0.200 * FREQ_MUL; break;
673 /* 1: 100 kHz (Europe, Japan) */ 674 /* 1: 100 kHz (Europe, Japan) */
674 case 1 : spacing = 0.100 * FREQ_MUL; break; 675 case 1:
676 spacing = 0.100 * FREQ_MUL; break;
675 /* 2: 50 kHz */ 677 /* 2: 50 kHz */
676 default: spacing = 0.050 * FREQ_MUL; break; 678 default:
679 spacing = 0.050 * FREQ_MUL; break;
677 }; 680 };
678 681
679 /* Bottom of Band (MHz) */ 682 /* Bottom of Band (MHz) */
680 switch (band) { 683 switch ((radio->registers[SYSCONFIG2] & SYSCONFIG2_BAND) >> 6) {
681 /* 0: 87.5 - 108 MHz (USA, Europe) */ 684 /* 0: 87.5 - 108 MHz (USA, Europe) */
682 case 0 : band_bottom = 87.5 * FREQ_MUL; break; 685 case 0:
686 band_bottom = 87.5 * FREQ_MUL; break;
683 /* 1: 76 - 108 MHz (Japan wide band) */ 687 /* 1: 76 - 108 MHz (Japan wide band) */
684 default: band_bottom = 76 * FREQ_MUL; break; 688 default:
689 band_bottom = 76 * FREQ_MUL; break;
685 /* 2: 76 - 90 MHz (Japan) */ 690 /* 2: 76 - 90 MHz (Japan) */
686 case 2 : band_bottom = 76 * FREQ_MUL; break; 691 case 2:
692 band_bottom = 76 * FREQ_MUL; break;
687 }; 693 };
688 694
689 /* read channel */ 695 /* read channel */
@@ -706,23 +712,29 @@ static int si470x_set_freq(struct si470x_device *radio, unsigned int freq)
706 unsigned short chan; 712 unsigned short chan;
707 713
708 /* Spacing (kHz) */ 714 /* Spacing (kHz) */
709 switch (space) { 715 switch ((radio->registers[SYSCONFIG2] & SYSCONFIG2_SPACE) >> 4) {
710 /* 0: 200 kHz (USA, Australia) */ 716 /* 0: 200 kHz (USA, Australia) */
711 case 0 : spacing = 0.200 * FREQ_MUL; break; 717 case 0:
718 spacing = 0.200 * FREQ_MUL; break;
712 /* 1: 100 kHz (Europe, Japan) */ 719 /* 1: 100 kHz (Europe, Japan) */
713 case 1 : spacing = 0.100 * FREQ_MUL; break; 720 case 1:
721 spacing = 0.100 * FREQ_MUL; break;
714 /* 2: 50 kHz */ 722 /* 2: 50 kHz */
715 default: spacing = 0.050 * FREQ_MUL; break; 723 default:
724 spacing = 0.050 * FREQ_MUL; break;
716 }; 725 };
717 726
718 /* Bottom of Band (MHz) */ 727 /* Bottom of Band (MHz) */
719 switch (band) { 728 switch ((radio->registers[SYSCONFIG2] & SYSCONFIG2_BAND) >> 6) {
720 /* 0: 87.5 - 108 MHz (USA, Europe) */ 729 /* 0: 87.5 - 108 MHz (USA, Europe) */
721 case 0 : band_bottom = 87.5 * FREQ_MUL; break; 730 case 0:
731 band_bottom = 87.5 * FREQ_MUL; break;
722 /* 1: 76 - 108 MHz (Japan wide band) */ 732 /* 1: 76 - 108 MHz (Japan wide band) */
723 default: band_bottom = 76 * FREQ_MUL; break; 733 default:
734 band_bottom = 76 * FREQ_MUL; break;
724 /* 2: 76 - 90 MHz (Japan) */ 735 /* 2: 76 - 90 MHz (Japan) */
725 case 2 : band_bottom = 76 * FREQ_MUL; break; 736 case 2:
737 band_bottom = 76 * FREQ_MUL; break;
726 }; 738 };
727 739
728 /* Chan = [ Freq (Mhz) - Bottom of Band (MHz) ] / Spacing (kHz) */ 740 /* Chan = [ Freq (Mhz) - Bottom of Band (MHz) ] / Spacing (kHz) */
@@ -1425,7 +1437,8 @@ static int si470x_vidioc_g_tuner(struct file *file, void *priv,
1425 goto done; 1437 goto done;
1426 1438
1427 strcpy(tuner->name, "FM"); 1439 strcpy(tuner->name, "FM");
1428 switch (band) { 1440 /* range limits */
1441 switch ((radio->registers[SYSCONFIG2] & SYSCONFIG2_BAND) >> 6) {
1429 /* 0: 87.5 - 108 MHz (USA, Europe, default) */ 1442 /* 0: 87.5 - 108 MHz (USA, Europe, default) */
1430 default: 1443 default:
1431 tuner->rangelow = 87.5 * FREQ_MUL; 1444 tuner->rangelow = 87.5 * FREQ_MUL;