Commit 2f2e6d14 authored by Gwendal Grignou's avatar Gwendal Grignou Committed by Lee Jones

mfd: cros_ec: Add Management API entry points

Add commands for test and management.
Add command space for future development.
Signed-off-by: default avatarGwendal Grignou <gwendal@chromium.org>
Acked-by: default avatarEnric Balletbo i Serra <enric.balletbo@collabora.com>
Acked-by: default avatarBenson Leung <bleung@chromium.org>
Reviewed-by: default avatarFabien Lahoudere <fabien.lahoudere@collabora.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent cc3a032f
......@@ -5176,6 +5176,119 @@ struct ec_params_set_cbi {
uint8_t data[]; /* For string and raw data */
} __ec_align1;
/*
* Information about resets of the AP by the EC and the EC's own uptime.
*/
#define EC_CMD_GET_UPTIME_INFO 0x0121
struct ec_response_uptime_info {
/*
* Number of milliseconds since the last EC boot. Sysjump resets
* typically do not restart the EC's time_since_boot epoch.
*
* WARNING: The EC's sense of time is much less accurate than the AP's
* sense of time, in both phase and frequency. This timebase is similar
* to CLOCK_MONOTONIC_RAW, but with 1% or more frequency error.
*/
uint32_t time_since_ec_boot_ms;
/*
* Number of times the AP was reset by the EC since the last EC boot.
* Note that the AP may be held in reset by the EC during the initial
* boot sequence, such that the very first AP boot may count as more
* than one here.
*/
uint32_t ap_resets_since_ec_boot;
/*
* The set of flags which describe the EC's most recent reset. See
* include/system.h RESET_FLAG_* for details.
*/
uint32_t ec_reset_flags;
/* Empty log entries have both the cause and timestamp set to zero. */
struct ap_reset_log_entry {
/*
* See include/chipset.h: enum chipset_{reset,shutdown}_reason
* for details.
*/
uint16_t reset_cause;
/* Reserved for protocol growth. */
uint16_t reserved;
/*
* The time of the reset's assertion, in milliseconds since the
* last EC boot, in the same epoch as time_since_ec_boot_ms.
* Set to zero if the log entry is empty.
*/
uint32_t reset_time_ms;
} recent_ap_reset[4];
} __ec_align4;
/*
* Add entropy to the device secret (stored in the rollback region).
*
* Depending on the chip, the operation may take a long time (e.g. to erase
* flash), so the commands are asynchronous.
*/
#define EC_CMD_ADD_ENTROPY 0x0122
enum add_entropy_action {
/* Add entropy to the current secret. */
ADD_ENTROPY_ASYNC = 0,
/*
* Add entropy, and also make sure that the previous secret is erased.
* (this can be implemented by adding entropy multiple times until
* all rolback blocks have been overwritten).
*/
ADD_ENTROPY_RESET_ASYNC = 1,
/* Read back result from the previous operation. */
ADD_ENTROPY_GET_RESULT = 2,
};
struct ec_params_rollback_add_entropy {
uint8_t action;
} __ec_align1;
/*
* Perform a single read of a given ADC channel.
*/
#define EC_CMD_ADC_READ 0x0123
struct ec_params_adc_read {
uint8_t adc_channel;
} __ec_align1;
struct ec_response_adc_read {
int32_t adc_value;
} __ec_align4;
/*
* Read back rollback info
*/
#define EC_CMD_ROLLBACK_INFO 0x0124
struct ec_response_rollback_info {
int32_t id; /* Incrementing number to indicate which region to use. */
int32_t rollback_min_version;
int32_t rw_rollback_version;
} __ec_align4;
/* Issue AP reset */
#define EC_CMD_AP_RESET 0x0125
/*****************************************************************************/
/* The command range 0x200-0x2FF is reserved for Rotor. */
/*****************************************************************************/
/*
* Reserve a range of host commands for the CR51 firmware.
*/
#define EC_CMD_CR51_BASE 0x0300
#define EC_CMD_CR51_LAST 0x03FF
/*****************************************************************************/
/* Fingerprint MCU commands: range 0x0400-0x040x */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment