summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ec/google/chromeec/ec.c47
-rw-r--r--src/ec/google/chromeec/ec.h20
2 files changed, 67 insertions, 0 deletions
diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c
index 2ffccbc77c..ed7f97dc43 100644
--- a/src/ec/google/chromeec/ec.c
+++ b/src/ec/google/chromeec/ec.c
@@ -1624,6 +1624,53 @@ int google_chromeec_ap_reset(void)
return 0;
}
+int google_chromeec_regulator_enable(uint32_t index, uint8_t enable)
+{
+ struct ec_params_regulator_enable params = {
+ .index = index,
+ .enable = enable,
+ };
+ struct chromeec_command cmd = {
+ .cmd_code = EC_CMD_REGULATOR_ENABLE,
+ .cmd_version = 0,
+ .cmd_data_in = &params,
+ .cmd_size_in = sizeof(params),
+ .cmd_data_out = NULL,
+ .cmd_size_out = 0,
+ .cmd_dev_index = 0,
+ };
+
+ if (google_chromeec_command(&cmd))
+ return -1;
+
+ return 0;
+}
+
+int google_chromeec_regulator_is_enabled(uint32_t index, uint8_t *enabled)
+{
+
+ struct ec_params_regulator_is_enabled params = {
+ .index = index,
+ };
+ struct ec_response_regulator_is_enabled resp = {};
+ struct chromeec_command cmd = {
+ .cmd_code = EC_CMD_REGULATOR_IS_ENABLED,
+ .cmd_version = 0,
+ .cmd_data_in = &params,
+ .cmd_size_in = sizeof(params),
+ .cmd_data_out = &resp,
+ .cmd_size_out = sizeof(resp),
+ .cmd_dev_index = 0,
+ };
+
+ if (google_chromeec_command(&cmd))
+ return -1;
+
+ *enabled = resp.enabled;
+
+ return 0;
+}
+
int google_chromeec_regulator_set_voltage(uint32_t index, uint32_t min_mv,
uint32_t max_mv)
{
diff --git a/src/ec/google/chromeec/ec.h b/src/ec/google/chromeec/ec.h
index bed8594a8b..c3c456ff14 100644
--- a/src/ec/google/chromeec/ec.h
+++ b/src/ec/google/chromeec/ec.h
@@ -354,7 +354,26 @@ int google_chromeec_get_keybd_config(struct ec_response_keybd_config *keybd);
int google_chromeec_ap_reset(void);
/**
+ * Configure the regulator as enabled / disabled.
+ *
+ * @param index Regulator ID
+ * @param enable Set to enable / disable the regulator
+ * @return 0 on success, -1 on error
+ */
+int google_chromeec_regulator_enable(uint32_t index, uint8_t enable);
+
+/**
+ * Query if the regulator is enabled.
+ *
+ * @param index Regulator ID
+ * @param *enabled If successful, enabled indicates enable/disable status.
+ * @return 0 on success, -1 on error
+ */
+int google_chromeec_regulator_is_enabled(uint32_t index, uint8_t *enabled);
+
+/**
* Set voltage for the voltage regulator within the range specified.
+ *
* @param index Regulator ID
* @param min_mv Minimum voltage
* @param max_mv Maximum voltage
@@ -365,6 +384,7 @@ int google_chromeec_regulator_set_voltage(uint32_t index, uint32_t min_mv,
/**
* Get the currently configured voltage for the voltage regulator.
+ *
* @param index Regulator ID
* @param *voltage_mv If successful, voltage_mv is filled with current voltage
* @return 0 on success, -1 on error