summaryrefslogtreecommitdiff
path: root/include/host_command.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/host_command.h')
-rw-r--r--include/host_command.h27
1 files changed, 25 insertions, 2 deletions
diff --git a/include/host_command.h b/include/host_command.h
index c00df1a93d..7bebbe5e19 100644
--- a/include/host_command.h
+++ b/include/host_command.h
@@ -15,8 +15,10 @@
struct host_command {
/* Command code. */
int command;
- /* Handler for the command; data points to parameters/response. */
- enum lpc_status (*handler)(uint8_t *data);
+ /* Handler for the command; data points to parameters/response.
+ * returns negative error code if case of failure (using EC_LPC_STATUS
+ * codes). sets <response_size> if it returns a payload to the host. */
+ int (*handler)(uint8_t *data, int *response_size);
};
@@ -24,6 +26,27 @@ struct host_command {
command slots (0=kernel, 1=user). */
void host_command_received(int slot, int command);
+/* Send errors or success result code to a host command,
+ * without response data.
+ * <slot> is 0 for kernel-originated commands,
+ * 1 for usermode-originated commands.
+ * <result> is the error code. */
+void host_send_result(int slot, int result);
+
+ // success results with response data
+/* Send a successful result code along with response data to a host command.
+ * <slot> is 0 for kernel-originated commands,
+ * 1 for usermode-originated commands.
+ * <data> is the buffer with the response payload.
+ * <size> is the size of the response buffer. */
+void host_send_response(int slot, const uint8_t *data, int size);
+
+/* Return a pointer to the host command data buffer. This buffer must
+ * only be accessed between a notification to host_command_received()
+ * and a subsequent call to lpc_SendHostResponse(). <slot> is 0 for
+ * kernel-originated commands, 1 for usermode-originated commands. */
+uint8_t *host_get_buffer(int slot);
+
/* Register a host command handler */
#define DECLARE_HOST_COMMAND(command, routine) \
const struct host_command __host_cmd_##command \