mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-05 04:36:13 +02:00
board: stm32pm1: Fix board_check_usb_power()
Depending of plugged power source (computer, wall charger, ...) it can happen that we got the following message: "****************************************************" "* USB TYPE-C charger not compliant with *" "* specification *" "****************************************************" " " "### ERROR ### Please RESET the board ### " This issue has been detected on STM32MP135f-DK board. It's due to max_uV and min_uV value are initialized at beginning of board_check_usb_power() and can then be used for the 2 iteration of adc_measurement(). max_uV/min_uV values issued of the first adc_measurement() iteration are used as input of the second adc_measurement() iteration, which can lead to incoherent pair of min_uV/max_uV values. To ensure that adc_measurement() returns coherent value for max_uV and min_uV, initialize max_uV and min_uV at each loop start. Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> Reviewed-by: Kory Maincent <kory.maincent@bootlin.com>
This commit is contained in:
parent
4433253ecf
commit
ecde6614bc
@ -326,8 +326,8 @@ static int adc_measurement(ofnode node, int adc_count, int *min_uV, int *max_uV)
|
||||
static int board_check_usb_power(void)
|
||||
{
|
||||
ofnode node;
|
||||
int max_uV = 0;
|
||||
int min_uV = USB_START_HIGH_THRESHOLD_UV;
|
||||
int max_uV;
|
||||
int min_uV;
|
||||
int adc_count, ret;
|
||||
u32 nb_blink;
|
||||
u8 i;
|
||||
@ -358,6 +358,9 @@ static int board_check_usb_power(void)
|
||||
|
||||
/* perform maximum of 2 ADC measurements to detect power supply current */
|
||||
for (i = 0; i < 2; i++) {
|
||||
max_uV = 0;
|
||||
min_uV = USB_START_HIGH_THRESHOLD_UV;
|
||||
|
||||
ret = adc_measurement(node, adc_count, &min_uV, &max_uV);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user