platform/chrome: cros_ec: Add command for regulator control.
authorPi-Hsun Shih <pihsun@chromium.org>
Fri, 12 Jun 2020 04:05:19 +0000 (12:05 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 15 Jun 2020 21:40:14 +0000 (22:40 +0100)
Add host commands for voltage regulator control through ChromeOS EC.

Signed-off-by: Pi-Hsun Shih <pihsun@chromium.org>
Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Link: https://lore.kernel.org/r/20200612040526.192878-3-pihsun@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/platform/chrome/cros_ec_trace.c
include/linux/platform_data/cros_ec_commands.h

index 523a39b..425e944 100644 (file)
        TRACE_SYMBOL(EC_CMD_ADC_READ), \
        TRACE_SYMBOL(EC_CMD_ROLLBACK_INFO), \
        TRACE_SYMBOL(EC_CMD_AP_RESET), \
+       TRACE_SYMBOL(EC_CMD_REGULATOR_GET_INFO), \
+       TRACE_SYMBOL(EC_CMD_REGULATOR_ENABLE), \
+       TRACE_SYMBOL(EC_CMD_REGULATOR_IS_ENABLED), \
+       TRACE_SYMBOL(EC_CMD_REGULATOR_SET_VOLTAGE), \
+       TRACE_SYMBOL(EC_CMD_REGULATOR_GET_VOLTAGE), \
        TRACE_SYMBOL(EC_CMD_CR51_BASE), \
        TRACE_SYMBOL(EC_CMD_CR51_LAST), \
        TRACE_SYMBOL(EC_CMD_FP_PASSTHRU), \
index 6921088..a417b51 100644 (file)
@@ -5431,6 +5431,88 @@ struct ec_response_rollback_info {
 #define EC_CMD_AP_RESET 0x0125
 
 /*****************************************************************************/
+/* Voltage regulator controls */
+
+/*
+ * Get basic info of voltage regulator for given index.
+ *
+ * Returns the regulator name and supported voltage list in mV.
+ */
+#define EC_CMD_REGULATOR_GET_INFO 0x012B
+
+/* Maximum length of regulator name */
+#define EC_REGULATOR_NAME_MAX_LEN 16
+
+/* Maximum length of the supported voltage list. */
+#define EC_REGULATOR_VOLTAGE_MAX_COUNT 16
+
+struct ec_params_regulator_get_info {
+       uint32_t index;
+} __ec_align4;
+
+struct ec_response_regulator_get_info {
+       char name[EC_REGULATOR_NAME_MAX_LEN];
+       uint16_t num_voltages;
+       uint16_t voltages_mv[EC_REGULATOR_VOLTAGE_MAX_COUNT];
+} __ec_align1;
+
+/*
+ * Configure the regulator as enabled / disabled.
+ */
+#define EC_CMD_REGULATOR_ENABLE 0x012C
+
+struct ec_params_regulator_enable {
+       uint32_t index;
+       uint8_t enable;
+} __ec_align4;
+
+/*
+ * Query if the regulator is enabled.
+ *
+ * Returns 1 if the regulator is enabled, 0 if not.
+ */
+#define EC_CMD_REGULATOR_IS_ENABLED 0x012D
+
+struct ec_params_regulator_is_enabled {
+       uint32_t index;
+} __ec_align4;
+
+struct ec_response_regulator_is_enabled {
+       uint8_t enabled;
+} __ec_align1;
+
+/*
+ * Set voltage for the voltage regulator within the range specified.
+ *
+ * The driver should select the voltage in range closest to min_mv.
+ *
+ * Also note that this might be called before the regulator is enabled, and the
+ * setting should be in effect after the regulator is enabled.
+ */
+#define EC_CMD_REGULATOR_SET_VOLTAGE 0x012E
+
+struct ec_params_regulator_set_voltage {
+       uint32_t index;
+       uint32_t min_mv;
+       uint32_t max_mv;
+} __ec_align4;
+
+/*
+ * Get the currently configured voltage for the voltage regulator.
+ *
+ * Note that this might be called before the regulator is enabled.
+ */
+#define EC_CMD_REGULATOR_GET_VOLTAGE 0x012F
+
+struct ec_params_regulator_get_voltage {
+       uint32_t index;
+} __ec_align4;
+
+struct ec_response_regulator_get_voltage {
+       uint32_t voltage_mv;
+} __ec_align4;
+
+/*****************************************************************************/
 /* The command range 0x200-0x2FF is reserved for Rotor. */
 
 /*****************************************************************************/