pl110: Implement vertical compare/next base interrupts
commit24da047af0e99a83fcc0d50b86c0f2627f7418b3
authorLinus Walleij <linus.walleij@linaro.org>
Thu, 25 Jan 2018 11:45:30 +0000 (25 11:45 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Thu, 25 Jan 2018 11:45:30 +0000 (25 11:45 +0000)
treed90727b6edeee71497ace8dc91b3476a30a98b65
parentfbe5dac7b2777626670097218ce4dfc4a19a17e9
pl110: Implement vertical compare/next base interrupts

This implements rudimentary support for interrupt generation on the
PL110. I am working on a new DRI/KMS driver for Linux and since that
uses the blanking interrupt, we need something to fire here. Without
any interrupt support Linux waits for a while and then gives ugly
messages about the vblank not working in the console (it does not
hang perpetually or anything though, DRI is pretty forgiving).

I solved it for now by setting up a timer to fire at 60Hz and pull
the interrupts for "vertical compare" and "next memory base"
at this interval. This works fine and fires roughly the same number
of IRQs on QEMU as on the hardware and leaves the console clean
and nice.

People who want to create more accurate emulation can probably work
on top of this if need be. It is certainly closer to the hardware
behaviour than what we have today anyway.

Cc: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Message-id: 20180123225654.5764-1-linus.walleij@linaro.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
[PMM: folded long lines]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/display/pl110.c