ソースを参照

add tuner initialization, fix fc0013 replug bug

Signed-off-by: Steve Markgraf <steve@steve-m.de>
Steve Markgraf 13 年 前
コミット
31cb96fc3c
共有2 個のファイルを変更した12 個の追加2 個の削除を含む
  1. 9 2
      src/rtl-sdr.c
  2. 3 0
      src/tuner_fc0013.c

+ 9 - 2
src/rtl-sdr.c

@@ -160,10 +160,14 @@ int rtlsdr_write_array(rtlsdr_dev_t *dev, uint8_t block, uint16_t addr, uint8_t
 	return r;
 }
 
-int rtlsdr_i2c_write_reg(rtlsdr_dev_t *dev, uint8_t i2c_addr, uint8_t data)
+int rtlsdr_i2c_write_reg(rtlsdr_dev_t *dev, uint8_t i2c_addr, uint8_t reg, uint8_t val)
 {
 	uint16_t addr = i2c_addr;
-	return rtlsdr_write_array(dev, IICB, addr, &data, 1);
+	uint8_t data[2];
+
+	data[0] = reg;
+	data[1] = val;
+	return rtlsdr_write_array(dev, IICB, addr, &data, 2);
 }
 
 uint8_t rtlsdr_i2c_read_reg(rtlsdr_dev_t *dev, uint8_t i2c_addr, uint8_t reg)
@@ -601,6 +605,9 @@ rtlsdr_dev_t *rtlsdr_open(int index)
 	}
 
 found:
+	if (dev->tuner)
+		dev->tuner->init(dev);
+
 	rtlsdr_set_i2c_repeater(dev, 0);
 	return dev;
 

+ 3 - 0
src/tuner_fc0013.c

@@ -129,6 +129,9 @@ int FC0013_Open(void *pTuner)
 	// FC0013 Reset = High -> Low
 	// (...)
 
+	/* FIXME added to fix replug-bug with rtl-sdr */
+	if(FC0013_Write(pTuner, 0x0C, 0x00) != FC0013_I2C_SUCCESS) goto error_status;
+
     //================================ update base on new FC0013 register bank
 	if(FC0013_Write(pTuner, 0x01, 0x09) != FC0013_I2C_SUCCESS) goto error_status;
 	if(FC0013_Write(pTuner, 0x02, 0x16) != FC0013_I2C_SUCCESS) goto error_status;