diff options
author | Sylvain Munaut <tnt@246tNt.com> | 2012-04-01 21:36:37 +0200 |
---|---|---|
committer | Sylvain Munaut <tnt@246tNt.com> | 2012-04-01 21:36:37 +0200 |
commit | 29f13b5c184432f9994fe9888585851e94ce81c8 (patch) | |
tree | ba52e4696cbf229af98a41a9d2ee55d3efed60de | |
parent | b0baaab491f9ecfaa35a0442973267befaccb923 (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.c | 30 |
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" }, |