gpio: Pull down HiZ pins after reading tristate GPIO strapping
People who know a lot more about electrons and stuff than I do tell me that leaving a HiZ pin floating without a pull resistor may waste power. So if we find a pin to be HiZ when reading tristate strapping GPIOs, we should make sure the internal pull-down is enabled when we're done with it. (For pins that are externally pulled high or low, we should continue to leave the internal pull disabled instead.) Signed-off-by: Julius Werner <jwerner@chromium.org> Change-Id: I1669823c8a7faab536e0441cb4c6cfeb9f696189 Reviewed-on: https://review.coreboot.org/c/coreboot/+/44253 Reviewed-by: Douglas Anderson <dianders@chromium.org> Reviewed-by: Alexandru Stan <amstan@google.com> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
0e0273a015
commit
7450790558
|
@ -114,6 +114,12 @@ uint32_t _gpio_base3_value(const gpio_t gpio[], int num_gpio, int binary_first)
|
|||
printk(BIOS_DEBUG, "%c ", tristate_char[temp]);
|
||||
result = (result * 3) + temp;
|
||||
|
||||
/* Disable pull to avoid wasting power. For HiZ we leave the
|
||||
pull-down enabled, since letting them float freely back and
|
||||
forth may waste power in the SoC's GPIO input logic. */
|
||||
if (temp != Z)
|
||||
gpio_input(gpio[index]);
|
||||
|
||||
/*
|
||||
* For binary_first we keep track of the normal ternary result
|
||||
* and whether we found any pin that was a Z. We also determine
|
||||
|
@ -159,10 +165,6 @@ uint32_t _gpio_base3_value(const gpio_t gpio[], int num_gpio, int binary_first)
|
|||
printk(BIOS_DEBUG, "= %d (%s base3 number system)\n", result,
|
||||
binary_first ? "binary_first" : "standard");
|
||||
|
||||
/* Disable pull up / pull down to conserve power */
|
||||
for (index = 0; index < num_gpio; ++index)
|
||||
gpio_input(gpio[index]);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue