diff options
Diffstat (limited to 'firmware/target/arm/imx233')
-rw-r--r-- | firmware/target/arm/imx233/power-imx233.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/firmware/target/arm/imx233/power-imx233.c b/firmware/target/arm/imx233/power-imx233.c index 0a4482fa08..c374644c0b 100644 --- a/firmware/target/arm/imx233/power-imx233.c +++ b/firmware/target/arm/imx233/power-imx233.c | |||
@@ -355,6 +355,19 @@ void imx233_power_get_regulator(enum imx233_regulator_t reg, unsigned *value_mv, | |||
355 | *brownout_mv = 0; | 355 | *brownout_mv = 0; |
356 | } | 356 | } |
357 | 357 | ||
358 | #if IMX233_SUBTARGET >= 3700 && IMX233_SUBTARGET < 3780 | ||
359 | static void update_dcfuncv(void) | ||
360 | { | ||
361 | int vddd, vdda, vddio; | ||
362 | imx233_power_get_regulator(REGULATOR_VDDD, &vddd, NULL); | ||
363 | imx233_power_get_regulator(REGULATOR_VDDA, &vdda, NULL); | ||
364 | imx233_power_get_regulator(REGULATOR_VDDIO, &vddio, NULL); | ||
365 | // assume Li-Ion, to divide by 6.25, do *100 and /625 | ||
366 | HW_POWER_DCFUNCV = BF_OR2(POWER_DCFUNCV, VDDIO(((vddio - vdda) * 100) / 625), | ||
367 | VDDD(((vdda - vddd) * 100) / 625)); | ||
368 | } | ||
369 | #endif | ||
370 | |||
358 | void imx233_power_set_regulator(enum imx233_regulator_t reg, unsigned value_mv, | 371 | void imx233_power_set_regulator(enum imx233_regulator_t reg, unsigned value_mv, |
359 | unsigned brownout_mv) | 372 | unsigned brownout_mv) |
360 | { | 373 | { |
@@ -393,6 +406,10 @@ void imx233_power_set_regulator(enum imx233_regulator_t reg, unsigned value_mv, | |||
393 | if(!BF_RD(POWER_STS, DC1_OK) || !BF_RD(POWER_STS, DC2_OK)) | 406 | if(!BF_RD(POWER_STS, DC1_OK) || !BF_RD(POWER_STS, DC2_OK)) |
394 | panicf("regulator %d: failed to stabilize", reg); | 407 | panicf("regulator %d: failed to stabilize", reg); |
395 | #endif | 408 | #endif |
409 | /* On STMP37xx, we need to update the weird HW_POWER_DCFUNCV register */ | ||
410 | #if IMX233_SUBTARGET >= 3700 && IMX233_SUBTARGET < 3780 | ||
411 | update_dcfuncv(); | ||
412 | #endif | ||
396 | } | 413 | } |
397 | 414 | ||
398 | // offset is -1,0 or 1 | 415 | // offset is -1,0 or 1 |