summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ec/google/chromeec/ec.c8
-rw-r--r--src/ec/google/chromeec/ec.h5
-rw-r--r--src/mainboard/google/fizz/mainboard.c4
-rw-r--r--src/mainboard/google/hatch/variants/puff/mainboard.c4
4 files changed, 13 insertions, 8 deletions
diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c
index 17e110c5c9..73baec63be 100644
--- a/src/ec/google/chromeec/ec.c
+++ b/src/ec/google/chromeec/ec.c
@@ -1120,9 +1120,9 @@ int google_chromeec_set_usb_charge_mode(uint8_t port_id, enum usb_charge_mode mo
return google_chromeec_command(&cmd);
}
-/* Get charger power info in Watts. Also returns type of charger */
+/* Get charger voltage and current. Also returns type of charger */
int google_chromeec_get_usb_pd_power_info(enum usb_chg_type *type,
- uint32_t *max_watts)
+ uint16_t *current_max, uint16_t *voltage_max)
{
struct ec_params_usb_pd_power_info params = {
.port = PD_POWER_CHARGING_PORT,
@@ -1147,8 +1147,8 @@ int google_chromeec_get_usb_pd_power_info(enum usb_chg_type *type,
/* values are given in milliAmps and milliVolts */
*type = resp.type;
m = resp.meas;
- *max_watts = (m.current_max * m.voltage_max) / 1000000;
-
+ *voltage_max = m.voltage_max;
+ *current_max = m.current_max;
return 0;
}
diff --git a/src/ec/google/chromeec/ec.h b/src/ec/google/chromeec/ec.h
index 13e3bd9b7f..64d7e52981 100644
--- a/src/ec/google/chromeec/ec.h
+++ b/src/ec/google/chromeec/ec.h
@@ -102,11 +102,12 @@ int google_chromeec_set_usb_pd_role(uint8_t port, enum usb_pd_control_role role)
* Retrieve the charger type and max wattage.
*
* @param type charger type
- * @param max_watts charger max wattage
+ * @param current_max charger max current
+ * @param voltage_max charger max voltage
* @return non-zero for error, otherwise 0.
*/
int google_chromeec_get_usb_pd_power_info(enum usb_chg_type *type,
- uint32_t *max_watts);
+ uint16_t *current_max, uint16_t *voltage_max);
/*
* Set max current and voltage of a dedicated charger.
diff --git a/src/mainboard/google/fizz/mainboard.c b/src/mainboard/google/fizz/mainboard.c
index daf9da4388..9f35411c24 100644
--- a/src/mainboard/google/fizz/mainboard.c
+++ b/src/mainboard/google/fizz/mainboard.c
@@ -104,8 +104,9 @@ static void mainboard_set_power_limits(config_t *conf)
{
enum usb_chg_type type;
u32 watts;
+ u16 volts_mv, current_ma;
u32 pl2, psyspl2;
- int rv = google_chromeec_get_usb_pd_power_info(&type, &watts);
+ int rv = google_chromeec_get_usb_pd_power_info(&type, &current_ma, &volts_mv);
uint8_t sku = board_sku_id();
const uint32_t u42_mask = (1 << FIZZ_SKU_ID_I7_U42) |
(1 << FIZZ_SKU_ID_I5_U42) |
@@ -126,6 +127,7 @@ static void mainboard_set_power_limits(config_t *conf)
psyspl2 = FIZZ_PSYSPL2_U42;
} else {
/* Detected TypeC. Base on max value of adapter */
+ watts = ((u32)volts_mv * current_ma) / 1000000;
psyspl2 = watts;
conf->tdp_psyspl3 = SET_PSYSPL2(psyspl2);
/* set max possible time window */
diff --git a/src/mainboard/google/hatch/variants/puff/mainboard.c b/src/mainboard/google/hatch/variants/puff/mainboard.c
index e8098b96ac..3f74c968b1 100644
--- a/src/mainboard/google/hatch/variants/puff/mainboard.c
+++ b/src/mainboard/google/hatch/variants/puff/mainboard.c
@@ -90,8 +90,9 @@ static void mainboard_set_power_limits(config_t *conf)
{
enum usb_chg_type type;
u32 watts;
+ u16 volts_mv, current_ma;
u32 psyspl2 = PUFF_PSYSPL2; // default barrel jack value for U22
- int rv = google_chromeec_get_usb_pd_power_info(&type, &watts);
+ int rv = google_chromeec_get_usb_pd_power_info(&type, &current_ma, &volts_mv);
/* use SoC default value for PsysPL3 and PL4 unless we're on USB-PD*/
conf->tdp_psyspl3 = 0;
@@ -99,6 +100,7 @@ static void mainboard_set_power_limits(config_t *conf)
if (rv == 0 && type == USB_CHG_TYPE_PD) {
/* Detected USB-PD. Base on max value of adapter */
+ watts = ((u32)current_ma * volts_mv) / 1000000;
psyspl2 = watts;
conf->tdp_psyspl3 = SET_PSYSPL2(psyspl2);
/* set max possible time window */