OSDN Git Service

hw/gpio: Add basic Aspeed GPIO model for AST2400 and AST2500
authorRashmica Gupta <rashmica.g@gmail.com>
Wed, 4 Sep 2019 07:04:57 +0000 (09:04 +0200)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 13 Sep 2019 15:05:00 +0000 (16:05 +0100)
commit4b7f956862dc2db4c5c60762abcb3b6179751cc6
tree46caa40b305fa93d40c5d890386792d938b44e6e
parent85182c96de61f0b600bbe834d5a23e713162e892
hw/gpio: Add basic Aspeed GPIO model for AST2400 and AST2500

GPIO pins are arranged in groups of 8 pins labeled A,B,..,Y,Z,AA,AB,AC.
(Note that the ast2400 controller only goes up to group AB).
A set has four groups (except set AC which only has one) and is
referred to by the groups it is composed of (eg ABCD,EFGH,...,YZAAAB).
Each set is accessed and controlled by a bank of 14 registers.

These registers operate on a per pin level where each bit in the register
corresponds to a pin, except for the command source registers. The command
source registers operate on a per group level where bits 24, 16, 8 and 0
correspond to each group in the set.

 eg. registers for set ABCD:
 |D7...D0|C7...C0|B7...B0|A7...A0| <- GPIOs
 |31...24|23...16|15....8|7.....0| <- bit position

Note that there are a couple of groups that only have 4 pins.

There are two ways that this model deviates from the behaviour of the
actual controller:
(1) The only control source driving the GPIO pins in the model is the ARM
model (as there currently aren't models for the LPC or Coprocessor).

(2) None of the registers in the model are reset tolerant (needs
integration with the watchdog).

Signed-off-by: Rashmica Gupta <rashmica.g@gmail.com>
Tested-by: Andrew Jeffery <andrew@aj.id.au>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-id: 20190904070506.1052-2-clg@kaod.org
[clg: fixed missing header files
      made use of HWADDR_PRIx to fix compilation on windows ]
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/gpio/Makefile.objs
hw/gpio/aspeed_gpio.c [new file with mode: 0644]
include/hw/gpio/aspeed_gpio.h [new file with mode: 0644]