|
@@ -22,6 +22,7 @@
|
|
*/
|
|
*/
|
|
|
|
|
|
#include <stdint.h>
|
|
#include <stdint.h>
|
|
|
|
+#include <stdio.h>
|
|
|
|
|
|
#include "rtlsdr_i2c.h"
|
|
#include "rtlsdr_i2c.h"
|
|
#include "tuner_fc0012.h"
|
|
#include "tuner_fc0012.h"
|
|
@@ -215,12 +216,23 @@ int fc0012_set_params(void *dev, uint32_t freq, uint32_t bandwidth)
|
|
am = (uint8_t)(xdiv - (8 * pm));
|
|
am = (uint8_t)(xdiv - (8 * pm));
|
|
|
|
|
|
if (am < 2) {
|
|
if (am < 2) {
|
|
- reg[1] = am + 8;
|
|
|
|
- reg[2] = pm - 1;
|
|
|
|
|
|
+ am += 8;
|
|
|
|
+ pm--;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (pm > 31) {
|
|
|
|
+ reg[1] = am + (8 * (pm - 31));
|
|
|
|
+ reg[2] = 31;
|
|
} else {
|
|
} else {
|
|
reg[1] = am;
|
|
reg[1] = am;
|
|
reg[2] = pm;
|
|
reg[2] = pm;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ if (reg[1] > 15) {
|
|
|
|
+ fprintf(stderr, "[FC0012] no valid PLL combination "
|
|
|
|
+ "found for %u Hz!\n", freq);
|
|
|
|
+ return -1;
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
/* fix for frequency less than 45 MHz */
|
|
/* fix for frequency less than 45 MHz */
|
|
reg[1] = 0x06;
|
|
reg[1] = 0x06;
|