From 84d7263fa4b642ed06af7cb6db2a29f595c86ff2 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Wed, 19 Feb 2014 12:55:32 -0800 Subject: [PATCH] Widen frequency argument/return paths in RFFC5071 code. --- firmware/common/rffc5071.c | 9 +++++---- firmware/common/rffc5071.h | 3 ++- firmware/common/tuning.c | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/firmware/common/rffc5071.c b/firmware/common/rffc5071.c index 67bbd023..74de7b4e 100644 --- a/firmware/common/rffc5071.c +++ b/firmware/common/rffc5071.c @@ -1,5 +1,6 @@ /* * Copyright 2012 Michael Ossmann + * Copyright 2014 Jared Boone * * This file is part of HackRF. * @@ -407,12 +408,12 @@ void rffc5071_enable(void) { #define REF_FREQ 50 /* configure frequency synthesizer in integer mode (lo in MHz) */ -uint32_t rffc5071_config_synth_int(uint16_t lo) { +uint64_t rffc5071_config_synth_int(uint16_t lo) { uint8_t lodiv; uint16_t fvco; uint8_t fbkdiv; uint16_t n; - uint32_t tune_freq_hz; + uint64_t tune_freq_hz; uint16_t p1nmsb; uint8_t p1nlsb; @@ -448,7 +449,7 @@ uint32_t rffc5071_config_synth_int(uint16_t lo) { p1nlsb = (tmp_n >> 5ULL) & 0xff; //~ tune_freq = REF_FREQ*tmp_n*fbkdiv/lodiv / (1 << 29); - tune_freq_hz = (uint32_t)(REF_FREQ*tmp_n*fbkdiv/lodiv * 1000*1000 / (1 << 29ULL)); + tune_freq_hz = REF_FREQ*tmp_n*fbkdiv/lodiv * 1000*1000 / (1 << 29ULL); LOG("# lo=%d n_lo=%d lodiv=%d fvco=%d fbkdiv=%d n=%d tune_freq_hz=%d\n", lo, n_lo, lodiv, fvco, fbkdiv, n, tune_freq); @@ -472,7 +473,7 @@ uint32_t rffc5071_config_synth_int(uint16_t lo) { } /* !!!!!!!!!!! hz is currently ignored !!!!!!!!!!! */ -uint32_t rffc5071_set_frequency(uint16_t mhz) { +uint64_t rffc5071_set_frequency(uint16_t mhz) { uint32_t tune_freq; rffc5071_disable(); diff --git a/firmware/common/rffc5071.h b/firmware/common/rffc5071.h index cd403771..98c31a3e 100644 --- a/firmware/common/rffc5071.h +++ b/firmware/common/rffc5071.h @@ -1,5 +1,6 @@ /* * Copyright 2012 Michael Ossmann + * Copyright 2014 Jared Boone * * This file is part of HackRF. * @@ -49,7 +50,7 @@ extern void rffc5071_reg_write(uint8_t r, uint16_t v); extern void rffc5071_regs_commit(void); /* Set frequency (MHz). */ -extern uint32_t rffc5071_set_frequency(uint16_t mhz); +extern uint64_t rffc5071_set_frequency(uint16_t mhz); /* Set up rx only, tx only, or full duplex. Chip should be disabled * before _tx, _rx, or _rxtx are called. */ diff --git a/firmware/common/tuning.c b/firmware/common/tuning.c index 66a01d76..9f16e391 100644 --- a/firmware/common/tuning.c +++ b/firmware/common/tuning.c @@ -51,7 +51,7 @@ bool set_freq(const uint64_t freq) bool success; uint32_t RFFC5071_freq_mhz; uint32_t MAX2837_freq_hz; - uint32_t real_RFFC5071_freq_hz; + uint64_t real_RFFC5071_freq_hz; uint32_t tmp_hz; const uint32_t freq_mhz = freq / 1000000;