Parcourir la source

remove e4k-specific I2C functions from library

Signed-off-by: Steve Markgraf <steve@steve-m.de>
Steve Markgraf il y a 11 ans
Parent
commit
015c78a4ca
3 fichiers modifiés avec 17 ajouts et 22 suppressions
  1. 0 3
      include/tuner_e4k.h
  2. 0 11
      src/librtlsdr.c
  3. 17 8
      src/tuner_e4k.c

+ 0 - 3
include/tuner_e4k.h

@@ -212,9 +212,6 @@ int e4k_if_filter_bw_set(struct e4k_state *e4k, enum e4k_if_filter filter,
 int e4k_if_filter_chan_enable(struct e4k_state *e4k, int on);
 int e4k_rf_filter_set(struct e4k_state *e4k);
 
-int e4k_reg_write(struct e4k_state *e4k, uint8_t reg, uint8_t val);
-uint8_t e4k_reg_read(struct e4k_state *e4k, uint8_t reg);
-
 int e4k_manual_dc_offset(struct e4k_state *e4k, int8_t iofs, int8_t irange, int8_t qofs, int8_t qrange);
 int e4k_dc_offset_calibrate(struct e4k_state *e4k);
 int e4k_dc_offset_gen_table(struct e4k_state *e4k);

+ 0 - 11
src/librtlsdr.c

@@ -403,17 +403,6 @@ uint8_t rtlsdr_i2c_read_reg(rtlsdr_dev_t *dev, uint8_t i2c_addr, uint8_t reg)
 	return data;
 }
 
-/* TODO clean this up again */
-int e4k_reg_write(struct e4k_state *e4k, uint8_t reg, uint8_t val)
-{
-	return rtlsdr_i2c_write_reg((rtlsdr_dev_t*)e4k->rtl_dev, e4k->i2c_addr, reg, val);
-}
-
-uint8_t e4k_reg_read(struct e4k_state *e4k, uint8_t reg)
-{
-	return rtlsdr_i2c_read_reg((rtlsdr_dev_t*)e4k->rtl_dev, e4k->i2c_addr, reg);
-}
-
 int rtlsdr_i2c_write(rtlsdr_dev_t *dev, uint8_t i2c_addr, uint8_t *buffer, int len)
 {
 	uint16_t addr = i2c_addr;

+ 17 - 8
src/tuner_e4k.c

@@ -29,6 +29,7 @@
 
 #include <reg_field.h>
 #include <tuner_e4k.h>
+#include <rtlsdr_i2c.h>
 
 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
 
@@ -55,17 +56,19 @@ static const uint8_t width2mask[] = {
 /***********************************************************************
  * Register Access */
 
-#if 0
 /*! \brief Write a register of the tuner chip
  *  \param[in] e4k reference to the tuner
  *  \param[in] reg number of the register
  *  \param[in] val value to be written
  *  \returns 0 on success, negative in case of error
  */
-int e4k_reg_write(struct e4k_state *e4k, uint8_t reg, uint8_t val)
+static int e4k_reg_write(struct e4k_state *e4k, uint8_t reg, uint8_t val)
 {
-	/* FIXME */
-	return 0;
+	uint8_t data[2];
+	data[0] = reg;
+	data[1] = val;
+
+	return rtlsdr_i2c_write_fn(e4k->rtl_dev, e4k->i2c_addr, data, 2);
 }
 
 /*! \brief Read a register of the tuner chip
@@ -73,12 +76,18 @@ int e4k_reg_write(struct e4k_state *e4k, uint8_t reg, uint8_t val)
  *  \param[in] reg number of the register
  *  \returns positive 8bit register contents on success, negative in case of error
  */
-int e4k_reg_read(struct e4k_state *e4k, uint8_t reg)
+static int e4k_reg_read(struct e4k_state *e4k, uint8_t reg)
 {
-	/* FIXME */
-	return 0;
+	uint8_t data = reg;
+
+	if (rtlsdr_i2c_write_fn(e4k->rtl_dev, e4k->i2c_addr, &data, 1) < 1)
+		return -1;
+
+	if (rtlsdr_i2c_read_fn(e4k->rtl_dev, e4k->i2c_addr, &data, 1) < 1)
+		return -1;
+
+	return data;
 }
-#endif
 
 /*! \brief Set or clear some (masked) bits inside a register
  *  \param[in] e4k reference to the tuner