summaryrefslogtreecommitdiff
path: root/common/pstore_commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/pstore_commands.c')
-rw-r--r--common/pstore_commands.c45
1 files changed, 23 insertions, 22 deletions
diff --git a/common/pstore_commands.c b/common/pstore_commands.c
index fdd0eaf26c..9717d3ccdb 100644
--- a/common/pstore_commands.c
+++ b/common/pstore_commands.c
@@ -5,42 +5,40 @@
/* Persistent storage commands for Chrome EC */
-#include "board.h"
+#include "common.h"
#include "eeprom.h"
#include "host_command.h"
#include "util.h"
-
-int pstore_command_get_info(uint8_t *data, int *resp_size)
+int pstore_command_get_info(struct host_cmd_handler_args *args)
{
struct ec_response_pstore_info *r =
- (struct ec_response_pstore_info *)data;
+ (struct ec_response_pstore_info *)args->response;
ASSERT(EEPROM_BLOCK_START_PSTORE + EEPROM_BLOCK_COUNT_PSTORE <=
eeprom_get_block_count());
r->pstore_size = EEPROM_BLOCK_COUNT_PSTORE * eeprom_get_block_size();
r->access_size = sizeof(uint32_t);
- *resp_size = sizeof(struct ec_response_pstore_info);
+ args->response_size = sizeof(*r);
return EC_RES_SUCCESS;
}
-DECLARE_HOST_COMMAND(EC_CMD_PSTORE_INFO, pstore_command_get_info);
-
+DECLARE_HOST_COMMAND(EC_CMD_PSTORE_INFO,
+ pstore_command_get_info,
+ EC_VER_MASK(0));
-int pstore_command_read(uint8_t *data, int *resp_size)
+int pstore_command_read(struct host_cmd_handler_args *args)
{
- struct ec_params_pstore_read *p =
- (struct ec_params_pstore_read *)data;
- struct ec_response_pstore_read *r =
- (struct ec_response_pstore_read *)data;
- char *dest = r->data;
+ const struct ec_params_pstore_read *p =
+ (const struct ec_params_pstore_read *)args->params;
+ char *dest = args->response;
int block_size = eeprom_get_block_size();
int block = p->offset / block_size + EEPROM_BLOCK_COUNT_PSTORE;
int offset = p->offset % block_size;
int bytes_left = p->size;
- if (p->size > sizeof(r->data))
- return EC_RES_ERROR;
+ if (p->size > sizeof(EC_PARAM_SIZE))
+ return EC_RES_INVALID_PARAM;
while (bytes_left) {
/* Read what we can from the current block */
@@ -60,16 +58,17 @@ int pstore_command_read(uint8_t *data, int *resp_size)
dest += bytes_this;
}
- *resp_size = sizeof(struct ec_response_pstore_read);
+ args->response_size = p->size;
return EC_RES_SUCCESS;
}
-DECLARE_HOST_COMMAND(EC_CMD_PSTORE_READ, pstore_command_read);
-
+DECLARE_HOST_COMMAND(EC_CMD_PSTORE_READ,
+ pstore_command_read,
+ EC_VER_MASK(0));
-int pstore_command_write(uint8_t *data, int *resp_size)
+int pstore_command_write(struct host_cmd_handler_args *args)
{
- struct ec_params_pstore_write *p =
- (struct ec_params_pstore_write *)data;
+ const struct ec_params_pstore_write *p =
+ (const struct ec_params_pstore_write *)args->params;
const char *src = p->data;
int block_size = eeprom_get_block_size();
@@ -100,4 +99,6 @@ int pstore_command_write(uint8_t *data, int *resp_size)
return EC_RES_SUCCESS;
}
-DECLARE_HOST_COMMAND(EC_CMD_PSTORE_WRITE, pstore_command_write);
+DECLARE_HOST_COMMAND(EC_CMD_PSTORE_WRITE,
+ pstore_command_write,
+ EC_VER_MASK(0));