hw/gpio/pl061: Honour Luminary PL061 PUR and PDR registers
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 2 Jul 2021 10:40:13 +0000 (11:40 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 9 Jul 2021 15:09:12 +0000 (16:09 +0100)
commitad06d56fc7155c7893b18efecb9fe0f2e9124eaf
tree3ba5a94c14ceca3675e0913582e393903146714f
parent455736df2cfd3a980782986d597132776d630823
hw/gpio/pl061: Honour Luminary PL061 PUR and PDR registers

The Luminary variant of the PL061 has registers GPIOPUR and GPIOPDR
which lets the guest configure whether the GPIO lines are pull-up,
pull-down, or truly floating. Instead of assuming all lines are pulled
high, honour the PUR and PDR registers.

For the plain PL061, continue to assume that lines have an external
pull-up resistor, as we did before.

The stellaris board actually relies on this behaviour -- the CD line
of the ssd0323 display device is connected to GPIO output C7, and it
is only because of a different bug which we're about to fix that we
weren't incorrectly driving this line high on reset and putting the
ssd0323 into data mode.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
hw/gpio/pl061.c
hw/gpio/trace-events