summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 9627cb0)
raw | patch | inline | side by side (parent: 9627cb0)
author | Guy Mishol <guym@ti.com> | |
Tue, 7 Jan 2014 13:12:55 +0000 (15:12 +0200) | ||
committer | Guy Mishol <guym@ti.com> | |
Thu, 9 Jan 2014 08:16:19 +0000 (10:16 +0200) |
Also remove the FW version validation fixing the set antenna commands
Makefile was updated accordingly
Signed-off-by: Guy Mishol <guym@ti.com>
Makefile was updated accordingly
Signed-off-by: Guy Mishol <guym@ti.com>
Makefile | patch | blob | history | |
calibrator.c | patch | blob | history | |
wl18xx_plt.c | patch | blob | history | |
wl18xx_plt.h | patch | blob | history |
diff --git a/Makefile b/Makefile
index 885d80af484bea517b8113495c359c90917b3056..78ed271d9938c6a65f1ad49a21eabca63c5d14ef 100644 (file)
--- a/Makefile
+++ b/Makefile
$(CC) $(LDFLAGS) --static $(OBJS) $(LIBS) -o calibrator
install:
- @echo Copy files to $(NFSROOT)/home/root
- @cp -f ./calibrator $(NFSROOT)/home/root
- @chmod 755 $(NFSROOT)/home/root/calibrator
- @cp -f ./scripts/wl12xx-tool.sh $(NFSROOT)/home/root
- @chmod 755 $(NFSROOT)/home/root/wl12xx-tool.sh
+ @echo Copy files to $(NFSROOT)/usr/bin
+ @cp -f ./calibrator $(NFSROOT)/usr/bin
+ @chmod 755 $(NFSROOT)/usr/bin/calibrator
clean:
@rm -f *.o calibrator uim
diff --git a/calibrator.c b/calibrator.c
index a68408356583715e8e6c38a6a71c05fee1f2ee36..cd5ceb17e330c458f6f7c5ccf6673b5d017696a2 100644 (file)
--- a/calibrator.c
+++ b/calibrator.c
#include "plt.h"
#include "ini.h"
-char calibrator_version[] = "0.77";
+char calibrator_version[] = "0.78";
#if !defined CONFIG_LIBNL20 && !defined CONFIG_LIBNL32
/* libnl 2.0 compatibility code */
static inline struct nl_handle *nl_socket_alloc(void)
diff --git a/wl18xx_plt.c b/wl18xx_plt.c
index e173fd637cacca73663437ff71185f091ab9345d..ffd76c734378f45c24ececc9b7d7148e6797c4b8 100644 (file)
--- a/wl18xx_plt.c
+++ b/wl18xx_plt.c
SECTION(wl18xx_plt);
+static int plt_wl18xx_tx_tone_stop(struct nl80211_state *state, struct nl_cb *cb,
+ struct nl_msg *msg, int argc, char **argv)
+{
+ struct nlattr *key;
+ struct wl18xx_cmd_phy_tx_tone_stop prms;
+
+ if (argc != 0)
+ return 1;
+
+ prms.test.id = WL18XX_TEST_CMD_STOP_TX_TONE;
+
+ key = nla_nest_start(msg, NL80211_ATTR_TESTDATA);
+ if (!key) {
+ fprintf(stderr, "fail to nla_nest_start()\n");
+ return 1;
+ }
+
+ printf("Calibrator:: Stopping TX Tone\n");
+
+ NLA_PUT_U32(msg, WL1271_TM_ATTR_CMD_ID, WL1271_TM_CMD_TEST);
+ NLA_PUT(msg, WL1271_TM_ATTR_DATA, sizeof(prms), &prms);
+
+ nla_nest_end(msg, key);
+
+ return 0;
+
+nla_put_failure:
+ fprintf(stderr, "%s> building message failed\n", __func__);
+ return 2;
+}
+
+COMMAND(wl18xx_plt, tx_tone_stop , "",
+ NL80211_CMD_TESTMODE, 0, CIB_NETDEV, plt_wl18xx_tx_tone_stop,
+ " Stop TX Tone\n");
+
+
+
+static int plt_wl18xx_tx_tone_start(struct nl80211_state *state, struct nl_cb *cb,
+ struct nl_msg *msg, int argc, char **argv)
+{
+ struct nlattr *key;
+ struct wl18xx_cmd_phy_tx_tone_start prms;
+
+ if (argc != 4)
+ return 1;
+
+ prms.test.id = WL18XX_TEST_CMD_START_TX_TONE;
+
+ prms.mode = (__u8)atoi(argv[0]);
+ prms.bin_index = (__s8)atoi(argv[1]);
+ prms.trigger_iqram_recording = 0;
+ prms.sig_gen_cw_en = 0;
+ prms.sig_gen_mod_en = 0;
+ prms.ant_mode = (__u8)atoi(argv[2]);
+ prms.set_rx_aux_on = 0;
+ prms.gain_index = (__u8)atoi(argv[3]);
+
+ if (prms.mode > 2)
+ return 1;
+
+ if ((prms.bin_index > 32) || (prms.bin_index < (-32)))
+ return 1;
+
+ if (prms.ant_mode > 2)
+ return 1;
+
+ if (prms.gain_index > 4)
+ return 1;
+
+
+ key = nla_nest_start(msg, NL80211_ATTR_TESTDATA);
+ if (!key) {
+ fprintf(stderr, "fail to nla_nest_start()\n");
+ return 1;
+ }
+
+ printf("Calibrator:: Starting TX Tone (mode=%d, bin_index=%d, ant_mode=%d, gain_index=%d)\n",
+ prms.mode, prms.bin_index, prms.ant_mode, prms.gain_index);
+
+ NLA_PUT_U32(msg, WL1271_TM_ATTR_CMD_ID, WL1271_TM_CMD_TEST);
+ NLA_PUT(msg, WL1271_TM_ATTR_DATA, sizeof(prms), &prms);
+
+ nla_nest_end(msg, key);
+
+ return 0;
+
+nla_put_failure:
+ fprintf(stderr, "%s> building message failed\n", __func__);
+ return 2;
+}
+
+COMMAND(wl18xx_plt, tx_tone_start , "<mode> <bin index> <antenna mode> <gain index>",
+ NL80211_CMD_TESTMODE, 0, CIB_NETDEV, plt_wl18xx_tx_tone_start,
+ "Start TX Tone\n\n"
+ "<mode>\t\t tone mode:\n"
+ "\t\t\t0 = silence\n"
+ "\t\t\t1 = carrier feedthrough\n"
+ "\t\t\t2 = single tone\n"
+ "<bin index>\t the offset (in round number of bins) of the tone from the carrier: [(-32)-32]\n"
+ "<ant mode>\t antenna selection:\n"
+ "\t\t\t0 = auto\n"
+ "\t\t\t1 = TX1\n"
+ "\t\t\t2 = TX2\n"
+ "<gain index>\t PA gain step: 2.4GHz: 0-1, 5GHz: 0-4\n");
+
+
static int plt_wl18xx_phy_reg_write(struct nl80211_state *state, struct nl_cb *cb,
struct nl_msg *msg, int argc, char **argv)
{
struct nlattr *key;
struct wl18xx_cmd_phy_reg_write prms;
- struct fw_version fw_ver_valid={{8,4,0,0,2}};
-
- /* Validate the FW supported version (given 3 args before) */
- if (is_fw_ver_valid(*(argv-3), &fw_ver_valid)) {
- printf("\tFail: the FW version does not support this command\n");
- printf("\tThe FW supported verstion starting from %d.%d.%d.%d.%d\n",
- fw_ver_valid.ver[0], fw_ver_valid.ver[1],
- fw_ver_valid.ver[2], fw_ver_valid.ver[3],
- fw_ver_valid.ver[4]);
- return 1;
- }
if (argc != 2)
return 1;
NL80211_CMD_TESTMODE, 0, CIB_NETDEV, plt_wl18xx_phy_reg_write,
" Write PHY register for PLT.\n");
-static int __write_phy_register(struct nl80211_state *state, char *addr, char *val)
-{
- char *prms[5] = { "wlan0", "wl18xx_plt", "phy_reg_write"};
- prms[3] = addr;
- prms[4] = val;
- int rc;
- rc = handle_cmd(state, II_NETDEV, ARRAY_SIZE(prms), prms);
- if (rc < 0) {
- fprintf(stderr, "Fail to write to PHY register (addr=%s, value=%s)\n", addr, val);
- return 1;
- }
- return 0;
-}
-
-static int plt_wl18xx_tx_tone(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
-{
- char *prms[2] = {"0x2c100", "0x1703"};
- int rc;
- rc = __write_phy_register(state, "0x22138", "0x3C0") ;
- if (rc)
- return rc;
- rc = __write_phy_register(state, "0x22034", "0x1");
- if (rc)
- return rc;
-
- printf("Calibrator:: Starting TX Tone...\n");
- return plt_wl18xx_phy_reg_write(state, cb, msg, ARRAY_SIZE(prms), prms);
-}
-
-COMMAND(wl18xx_plt, tx_tone , "",
- NL80211_CMD_TESTMODE, 0, CIB_NETDEV, plt_wl18xx_tx_tone,
- " Set TX Tone\n");
static int plt_wl18xx_display_phy_reg_read(struct nl_msg *msg, void *arg)
{
@@ -140,17 +202,6 @@ static int plt_wl18xx_phy_reg_read(struct nl80211_state *state, struct nl_cb *c
{
struct nlattr *key;
struct wl18xx_cmd_phy_reg_read prms;
- struct fw_version fw_ver_valid={{8,4,0,0,2}};
-
- /* Validate the FW supported version (given 3 args before) */
- if (is_fw_ver_valid(*(argv-3), &fw_ver_valid)) {
- printf("\tFail: the FW version does not support this command\n");
- printf("\tThe FW supported verstion starting from %d.%d.%d.%d.%d\n",
- fw_ver_valid.ver[0], fw_ver_valid.ver[1],
- fw_ver_valid.ver[2], fw_ver_valid.ver[3],
- fw_ver_valid.ver[4]);
- return 1;
- }
if (argc != 1)
return 1;
@@ -191,18 +242,6 @@ static int plt_wl18xx_set_antenna_mode_5G(struct nl80211_state *state, struct n
{
struct nlattr *key;
struct wl18xx_cmd_set_antenna_mode_5G prms;
- struct fw_version fw_ver_valid={{8,4,0,0,2}};
-
- /* Validate the FW supported version (given 3 args before) */
- if (is_fw_ver_valid(*(argv-3), &fw_ver_valid)) {
- printf("\tFail: the FW version does not support this command\n");
- printf("\tThe FW supported verstion starting from %d.%d.%d.%d.%d\n",
- fw_ver_valid.ver[0], fw_ver_valid.ver[1],
- fw_ver_valid.ver[2], fw_ver_valid.ver[3],
- fw_ver_valid.ver[4]);
- return 1;
- }
-
if (argc != 4)
return 1;
{
struct nlattr *key;
struct wl18xx_cmd_set_antenna_mode_24G prms;
- struct fw_version fw_ver_valid={{8,4,0,0,2}};
-
- /* Validate the FW supported version (given 3 args before) */
- if (is_fw_ver_valid(*(argv-3), &fw_ver_valid)) {
- printf("\tFail: the FW version does not support this command\n");
- printf("\tThe FW supported verstion starting from %d.%d.%d.%d.%d\n",
- fw_ver_valid.ver[0], fw_ver_valid.ver[1],
- fw_ver_valid.ver[2], fw_ver_valid.ver[3],
- fw_ver_valid.ver[4]);
- return 1;
- }
if (argc != 6)
return 1;
diff --git a/wl18xx_plt.h b/wl18xx_plt.h
index db0fd78d53f390d8612ec7021e926c2096b55d48..8e66d730239ef11580a24e2be9e71f5f510db09d 100644 (file)
--- a/wl18xx_plt.h
+++ b/wl18xx_plt.h
/* 0xf */ WL18XX_TEST_CMD_DEBUG,
/* 0x10 */ WL18XX_TEST_CMD_CLPC_COMMANDS,
/* 0x11 */ WL18XX_TEST_CMD_RESERVED,
- /* 0x11 */ WL18XX_TEST_CMD_RX_STAT_STOP,
- /* 0x12 */ WL18XX_TEST_CMD_RX_STAT_START,
- /* 0x13 */ WL18XX_TEST_CMD_RX_STAT_RESET,
- /* 0x14 */ WL18XX_TEST_CMD_RX_STAT_GET,
- /* 0x15 */ WL18XX_TEST_CMD_LOOPBACK_START,
- /* 0x16 */ WL18XX_TEST_CMD_LOOPBACK_STOP,
- /* 0x17 */ WL18XX_TEST_CMD_GET_FW_VERSIONS,
- /* 0x18 */ WL18XX_TEST_CMD_INI_FILE_RADIO_PARAM,
- /* 0x19 */ WL18XX_TEST_CMD_RUN_CALIBRATION_TYPE,
- /* 0x1a */ WL18XX_TEST_CMD_TX_GAIN_ADJUST,
- /* 0x1b */ WL18XX_TEST_CMD_UPDATE_PD_BUFFER_ERRORS,
- /* 0x1c */ WL18XX_TEST_CMD_UPDATE_PD_REFERENCE_POINT,
- /* 0x1d */ WL18XX_TEST_CMD_INI_FILE_GENERAL_PARAM,
- /* 0x1e */ WL18XX_TEST_CMD_SET_EFUSE,
- /* 0x1f */ WL18XX_TEST_CMD_GET_EFUSE,
- /* 0x20 */ WL18XX_TEST_CMD_TEST_TONE,
- /* 0x21 */ WL18XX_TEST_CMD_POWER_MODE,
- /* 0x22 */ WL18XX_TEST_CMD_SMART_REFLEX,
- /* 0x23 */ WL18XX_TEST_CMD_CHANNEL_RESPONSE,
- /* 0x24 */ WL18XX_TEST_CMD_DCO_ITRIM_FEATURE,
- /* 0x25 */ WL18XX_TEST_CMD_START_TX_SIMULATION,
- /* 0x26 */ WL18XX_TEST_CMD_STOP_TX_SIMULATION,
- /* 0x27 */ WL18XX_TEST_CMD_START_RX_SIMULATION,
- /* 0x28 */ WL18XX_TEST_CMD_STOP_RX_SIMULATION,
- /* 0x29 */ WL18XX_TEST_CMD_GET_RX_STATISTICS,
- /* 0x2a */ WL18XX_TEST_CMD_SET_NVS_VERSION,
- /* 0x2b */ WL18XX_TEST_CMD_CHANNEL_TUNE,
- /* 0x2c */ WL18XX_TEST_CMD_TX_POWER,
- /* 0x2d */ WL18XX_TEST_CMD_SET_ANTENNA_MODE_24G,
- /* 0x2e */ WL18XX_TEST_CMD_GET_CALIB_RESULT,
- /* 0x2f */ WL18XX_TEST_CMD_SET_ANTENNA_MODE_5G,
- /* 0x30 */ WL18XX_TEST_CMD_PHY_ADDR_READ,
- /* 0x31 */ WL18XX_TEST_CMD_PHY_ADDR_WRITE,
+ /* 0x12 */ WL18XX_TEST_CMD_RX_STAT_STOP,
+ /* 0x13 */ WL18XX_TEST_CMD_RX_STAT_START,
+ /* 0x14 */ WL18XX_TEST_CMD_RX_STAT_RESET,
+ /* 0x15 */ WL18XX_TEST_CMD_RX_STAT_GET,
+ /* 0x16 */ WL18XX_TEST_CMD_LOOPBACK_START,
+ /* 0x17 */ WL18XX_TEST_CMD_LOOPBACK_STOP,
+ /* 0x18 */ WL18XX_TEST_CMD_GET_FW_VERSIONS,
+ /* 0x19 */ WL18XX_TEST_CMD_INI_FILE_RADIO_PARAM,
+ /* 0x1a */ WL18XX_TEST_CMD_RUN_CALIBRATION_TYPE,
+ /* 0x1b */ WL18XX_TEST_CMD_TX_GAIN_ADJUST,
+ /* 0x1c */ WL18XX_TEST_CMD_UPDATE_PD_BUFFER_ERRORS,
+ /* 0x1d */ WL18XX_TEST_CMD_UPDATE_PD_REFERENCE_POINT,
+ /* 0x1e */ WL18XX_TEST_CMD_INI_FILE_GENERAL_PARAM,
+ /* 0x1f */ WL18XX_TEST_CMD_SET_EFUSE,
+ /* 0x20 */ WL18XX_TEST_CMD_GET_EFUSE,
+ /* 0x21 */ WL18XX_TEST_CMD_TEST_TONE,
+ /* 0x22 */ WL18XX_TEST_CMD_POWER_MODE,
+ /* 0x23 */ WL18XX_TEST_CMD_SMART_REFLEX,
+ /* 0x24 */ WL18XX_TEST_CMD_CHANNEL_RESPONSE,
+ /* 0x25 */ WL18XX_TEST_CMD_DCO_ITRIM_FEATURE,
+ /* 0x26 */ WL18XX_TEST_CMD_START_TX_SIMULATION,
+ /* 0x27 */ WL18XX_TEST_CMD_STOP_TX_SIMULATION,
+ /* 0x28 */ WL18XX_TEST_CMD_START_RX_SIMULATION,
+ /* 0x29 */ WL18XX_TEST_CMD_STOP_RX_SIMULATION,
+ /* 0x2a */ WL18XX_TEST_CMD_GET_RX_STATISTICS,
+ /* 0x2b */ /*WL18XX_TEST_CMD_INI_FILE_RF_EXTENDED_PARAM*/
+ /* 0x2c */ WL18XX_TEST_CMD_SET_NVS_VERSION,
+ /* 0x2d */ WL18XX_TEST_CMD_CHANNEL_TUNE,
+ /* 0x2e */ WL18XX_TEST_CMD_TX_POWER,
+ /* 0x2f */ WL18XX_TEST_CMD_SET_ANTENNA_MODE_24G,
+ /* 0x30 */ WL18XX_TEST_CMD_GET_CALIB_RESULT,
+ /* 0x31 */ WL18XX_TEST_CMD_SET_ANTENNA_MODE_5G,
+ /* 0x32 */ WL18XX_TEST_CMD_PHY_ADDR_READ,
+ /* 0x33 */ WL18XX_TEST_CMD_PHY_ADDR_WRITE,
+ /* 0x34 */ WL18XX_TEST_CMD_START_TX_TONE,
+ /* 0x35 */ WL18XX_TEST_CMD_STOP_TX_TONE,
};
struct wl18xx_cmd_channel_tune {
__le32 addr;
} __attribute__((packed));
+struct wl18xx_cmd_phy_tx_tone_start { /* TEST_CMD_START_TX_TONE */
+ struct wl1271_cmd_header header;
+ struct wl1271_cmd_test_header test;
+
+ __le32 radio_status;
+
+ __u8 mode;
+ __s8 bin_index;
+ __u8 trigger_iqram_recording;
+ __u8 sig_gen_cw_en;
+ __u8 sig_gen_mod_en;
+ __u8 ant_mode;
+ __u8 set_rx_aux_on;
+ __u8 gain_index;
+} __attribute__((packed));
+
+struct wl18xx_cmd_phy_tx_tone_stop { /* TEST_CMD_STOP_TX_TONE */
+ struct wl1271_cmd_header header;
+ struct wl1271_cmd_test_header test;
+} __attribute__((packed));
+
#endif /* __WL18XX_PLT_H__ */