carlu: add missing endian conversion
[carl9170fw.git] / tools / carlu / src / cmd.c
index e7759dcb563abb3983fa04a707055bb94c3b2d66..81702b3fd94740e8275b29da88b23b7bcf42563c 100644 (file)
@@ -40,6 +40,7 @@
 #include "debug.h"
 #include "fwcmd.h"
 #include "eeprom.h"
+#include "cmd.h"
 
 int carlu_cmd_echo(struct carlu *ar, const uint32_t message)
 {
@@ -119,7 +120,7 @@ int carlu_cmd_write_mem(struct carlu *ar, const uint32_t addr,
                        const uint32_t val)
 {
        int err;
-       __le32 msg, block[2] = { addr, val };
+       __le32 msg, block[2] = { cpu_to_le32(addr), cpu_to_le32(val) };
 
        err = carlusb_cmd(ar, CARL9170_CMD_WREG,
                          (void *) &block, sizeof(block),
@@ -127,6 +128,18 @@ int carlu_cmd_write_mem(struct carlu *ar, const uint32_t addr,
        return err;
 }
 
+int carlu_cmd_read_mem(struct carlu *ar, const uint32_t _addr,
+                      uint32_t *val)
+{
+       int err;
+       __le32 msg, addr = { cpu_to_le32(_addr) };
+       err = carlusb_cmd(ar, CARL9170_CMD_RREG, (void *) &addr, sizeof(addr),
+                         (void *) &msg, sizeof(msg));
+
+       *val = le32_to_cpu(msg);
+       return err;
+}
+
 int carlu_cmd_read_eeprom(struct carlu *ar)
 {