mirror of
https://github.com/opnsense/src.git
synced 2026-06-03 13:58:30 -04:00
amdgpio: fix reading status of input pins
AMD FCH GPIO controller uses different bits for setting the output level and for reporting the input level. MFC after: 2 weeks
This commit is contained in:
parent
cfdb42f880
commit
cada7eafac
1 changed files with 11 additions and 4 deletions
|
|
@ -264,10 +264,17 @@ amdgpio_pin_get(device_t dev, uint32_t pin, unsigned int *value)
|
|||
reg = AMDGPIO_PIN_REGISTER(pin);
|
||||
val = amdgpio_read_4(sc, reg);
|
||||
|
||||
if (val & BIT(OUTPUT_VALUE_OFF))
|
||||
*value = GPIO_PIN_HIGH;
|
||||
else
|
||||
*value = GPIO_PIN_LOW;
|
||||
if ((sc->sc_gpio_pins[pin].gp_flags & GPIO_PIN_OUTPUT) != 0) {
|
||||
if (val & BIT(OUTPUT_VALUE_OFF))
|
||||
*value = GPIO_PIN_HIGH;
|
||||
else
|
||||
*value = GPIO_PIN_LOW;
|
||||
} else {
|
||||
if (val & BIT(PIN_STS_OFF))
|
||||
*value = GPIO_PIN_HIGH;
|
||||
else
|
||||
*value = GPIO_PIN_LOW;
|
||||
}
|
||||
|
||||
dprintf("pin %d value 0x%x\n", pin, *value);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue