summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSylvain Munaut <tnt@246tNt.com>2012-04-01 21:36:37 +0200
committerSylvain Munaut <tnt@246tNt.com>2012-04-01 21:36:37 +0200
commit29f13b5c184432f9994fe9888585851e94ce81c8 (patch)
treeba52e4696cbf229af98a41a9d2ee55d3efed60de
parentb0baaab491f9ecfaa35a0442973267befaccb923 (diff)
fw/sdr-test: Add command for direct e4k register manipulation R/W
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
-rw-r--r--firmware/sdr-test-project/main.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/firmware/sdr-test-project/main.c b/firmware/sdr-test-project/main.c
index 62fb0c5..fe8ac2e 100644
--- a/firmware/sdr-test-project/main.c
+++ b/firmware/sdr-test-project/main.c
@@ -335,6 +335,34 @@ static int cmd_tuner_iqofs(struct cmd_state *cs, enum cmd_op op,
return e4k_manual_dc_offset(&e4k, iofs, irange, qofs, qrange);
}
+static int cmd_tuner_reg(struct cmd_state *cs, enum cmd_op op,
+ const char *cmd, int argc, char ** argv)
+{
+ uint8_t reg, val;
+
+ if (argc < 1)
+ return -EINVAL;
+
+ reg = strtol(argv[0], NULL, 16);
+
+ switch (op) {
+ case CMD_OP_GET:
+ val = e4k_reg_read(&e4k, reg);
+ uart_cmd_out(cs, "%02x=%02x\n\r", reg, val);
+ break;
+ case CMD_OP_SET:
+ if (argc < 2)
+ return -EINVAL;
+ val = strtol(argv[1], NULL, 16);
+ e4k_reg_write(&e4k, reg, val);
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
static int cmd_dfu(struct cmd_state *cs, enum cmd_op op,
const char *cmd, int argc, char ** argv)
{
@@ -363,6 +391,8 @@ static struct cmd cmds[] = {
"Switch common mode voltage" },
{ "tuner.iqofs", CMD_OP_SET, cmd_tuner_iqofs,
"Manually set I/Q offset and correction range" },
+ { "tuner.reg", CMD_OP_SET|CMD_OP_GET, cmd_tuner_reg,
+ "Manually access a register on the E4K" },
{ "si570.freq", CMD_OP_SET|CMD_OP_GET, cmd_si570_freq,
"Change the SI570 clock frequency" },