Unverified Commit dff08caf authored by Pi-Hsun Shih's avatar Pi-Hsun Shih Committed by Mark Brown
Browse files

platform/chrome: cros_ec: Add command for regulator control.



Add host commands for voltage regulator control through ChromeOS EC.

Signed-off-by: default avatarPi-Hsun Shih <pihsun@chromium.org>
Reviewed-by: default avatarEnric Balletbo i Serra <enric.balletbo@collabora.com>
Link: https://lore.kernel.org/r/20200612040526.192878-3-pihsun@chromium.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 54bd53b9
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -161,6 +161,11 @@
	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), \
+82 −0
Original line number Diff line number Diff line
@@ -5430,6 +5430,88 @@ struct ec_response_rollback_info {
/* Issue AP reset */
#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. */