The original commit fixes configuring the direction of the GPIO pins on the 2832 so it actually works. The FC0012 failure is probably a side-effect of the direction bits now really being set.

The tuner initialization does this:

rtlsdr_set_gpio_output(dev, 5); /* should set GPIO 5 to output mode, but actually does not touch the direction bits and instead turns on GPIO output 5 */
rtlsdr_set_gpio_bit(dev, 5, 1);   /* turns on GPIO 5 output */
rtlsdr_set_gpio_bit(dev, 5, 0);   /* turns off GPIO 5 output */

I don't know the reset state of the 2832 offhand but assuming GPIO 5 is not set as an output on reset, then that tuner reset was doing nothing much before the GPIO fix.
Maybe the FC0012 takes a while to settle after a reset, so when it really gets reset the detection immediately afterwards fails. You could try commenting out those three lines and see if anything changes.

Oliver


On 27 October 2017 at 18:13, Marcus Müller <mueller@kit.edu> wrote:
Hi Sylvain,

I'd love to, but I honestly don't even have the symptom (whatever that is) of what this commit fixes. Admittedly, I'd assume myself that maybe I just haven't looked hard enough for a symptom, but if you'd have insight on what the fact that the register was wrong effects, then I'd be thankful!

I really just observe that this commit breaks something, and that I haven't been able to find out what out fixes :(

Cheers
Marcus


On 27 October 2017 6:09:18 PM GMT+02:00, Sylvain Munaut <246tnt@gmail.com> wrote:
That commit might break something but it still looks like the right thing to do.
This is just a symptom of another underlying problem. Find that
problem and fix it.


On Fri, Oct 27, 2017 at 5:03 PM, Marcus Müller <mueller@kit.edu> wrote:
This reverts commit ba64a7459a43652354990855176a7d8dad5b9d54.

The mentioned commit leads to nonfunctionality of Fitipower FC0012
dongles (tested by a small horde of students) and doesn't increase
functionality on my "RTL-SDR.com" branded R820T-based dongle.
---
src/librtlsdr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/librtlsdr.c b/src/librtlsdr.c
index b369a5d..6c079a5 100644
--- a/src/librtlsdr.c
+++ b/src/librtlsdr.c
@@ -570,7 +570,7 @@ void rtlsdr_set_gpio_output(rtlsdr_dev_t *dev, uint8_t gpio)
gpio = 1 << gpio;

r = rtlsdr_read_reg(dev, SYSB, GPD, 1);
- rtlsdr_write_reg(dev, SYSB, GPD, r & ~gpio, 1);
+ rtlsdr_write_reg(dev, SYSB, GPO, r & ~gpio, 1);
r = rtlsdr_read_reg(dev, SYSB, GPOE, 1);
rtlsdr_write_reg(dev, SYSB, GPOE, r | gpio, 1);
}
--
2.13.6


--
Sent from my Android device with K-9 Mail. Please excuse my brevity.