diff options
| author | Steve Markgraf <steve@steve-m.de> | 2012-04-03 17:37:55 +0200 |
|---|---|---|
| committer | Steve Markgraf <steve@steve-m.de> | 2012-04-03 17:37:55 +0200 |
| commit | 2f6183cd6c51fa75724e8a8bd285d5011875bd3e (patch) | |
| tree | a13ac751fb76dfeb48f4df2f6af10b1057432d5d /src | |
| parent | ca700872099dded53143a654d46454ac1a3be12b (diff) | |
properly poweroff PLL/ADCs/tuner on exit
Signed-off-by: Steve Markgraf <steve@steve-m.de>
Diffstat (limited to 'src')
| -rw-r--r-- | src/rtl-sdr.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/rtl-sdr.c b/src/rtl-sdr.c index 24b6276..0db4b9a 100644 --- a/src/rtl-sdr.c +++ b/src/rtl-sdr.c @@ -400,6 +400,17 @@ void rtlsdr_init_baseband(rtlsdr_dev_t *dev) rtlsdr_demod_write_reg(dev, 1, 0xb1, 0x1b, 1); } +void rtlsdr_deinit_baseband(rtlsdr_dev_t *dev) +{ + /* deinitialize tuner */ + rtlsdr_set_i2c_repeater(dev, 1); + dev->tuner->exit(dev); + rtlsdr_set_i2c_repeater(dev, 0); + + /* poweroff demodulator and ADCs */ + rtlsdr_write_reg(dev, SYSB, DEMOD_CTL, 0x20, 1); +} + int rtlsdr_set_center_freq(rtlsdr_dev_t *dev, uint32_t freq) { int r; @@ -717,6 +728,8 @@ int rtlsdr_close(rtlsdr_dev_t *dev) if (!dev) return -1; + rtlsdr_deinit_baseband(dev); + libusb_release_interface(dev->devh, 0); libusb_close(dev->devh); |
