ec/google/chromeec: Add wrappers to get/set the voltage
Add APIs to get and set the voltage for the target regulator. BUG=b:147789962 BRANCH=none TEST=emerge-asurada coreboot Change-Id: I0e56df45fc3309c387b9949534334eadefb616b2 Signed-off-by: Yidi Lin <yidi.lin@mediatek.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/46404 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Yu-Ping Wu <yupingso@google.com>
This commit is contained in:
parent
5611cfd55f
commit
79a812e536
2 changed files with 65 additions and 0 deletions
|
@ -1616,3 +1616,50 @@ int google_chromeec_ap_reset(void)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int google_chromeec_regulator_set_voltage(uint32_t index, uint32_t min_mv,
|
||||
uint32_t max_mv)
|
||||
{
|
||||
struct ec_params_regulator_set_voltage params = {
|
||||
.index = index,
|
||||
.min_mv = min_mv,
|
||||
.max_mv = max_mv,
|
||||
};
|
||||
struct chromeec_command cmd = {
|
||||
.cmd_code = EC_CMD_REGULATOR_SET_VOLTAGE,
|
||||
.cmd_version = 0,
|
||||
.cmd_data_in = ¶ms,
|
||||
.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_get_voltage(uint32_t index, uint32_t *voltage_mv)
|
||||
{
|
||||
struct ec_params_regulator_get_voltage params = {
|
||||
.index = index,
|
||||
};
|
||||
struct ec_response_regulator_get_voltage resp = {};
|
||||
struct chromeec_command cmd = {
|
||||
.cmd_code = EC_CMD_REGULATOR_GET_VOLTAGE,
|
||||
.cmd_version = 0,
|
||||
.cmd_data_in = ¶ms,
|
||||
.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;
|
||||
|
||||
*voltage_mv = resp.voltage_mv;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -353,6 +353,24 @@ int google_chromeec_get_keybd_config(struct ec_response_keybd_config *keybd);
|
|||
*/
|
||||
int google_chromeec_ap_reset(void);
|
||||
|
||||
/**
|
||||
* Set voltage for the voltage regulator within the range specified.
|
||||
* @param index Regulator ID
|
||||
* @param min_mv Minimum voltage
|
||||
* @param max_mv Maximum voltage
|
||||
* @return 0 on success, -1 on error
|
||||
*/
|
||||
int google_chromeec_regulator_set_voltage(uint32_t index, uint32_t min_mv,
|
||||
uint32_t max_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
|
||||
*/
|
||||
int google_chromeec_regulator_get_voltage(uint32_t index, uint32_t *voltage_mv);
|
||||
|
||||
#if CONFIG(HAVE_ACPI_TABLES)
|
||||
/**
|
||||
* Writes USB Type-C PD related information to the SSDT
|
||||
|
|
Loading…
Reference in a new issue