mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 17:23:56 -06:00
ppc/pnv: add a LPC Controller model for POWER9
The LPC Controller on POWER9 is very similar to the one found on POWER8 but accesses are now done via on MMIOs, without the XSCOM and ECCB logic. The device tree is populated differently so we add a specific POWER9 routine for the purpose. SerIRQ routing is yet to be done. Signed-off-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20190307223548.20516-7-clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
64d011d56e
commit
15376c66fa
4 changed files with 234 additions and 1 deletions
|
@ -87,6 +87,7 @@ typedef struct Pnv9Chip {
|
|||
/*< public >*/
|
||||
PnvXive xive;
|
||||
Pnv9Psi psi;
|
||||
PnvLpcController lpc;
|
||||
} Pnv9Chip;
|
||||
|
||||
typedef struct PnvChipClass {
|
||||
|
@ -234,6 +235,9 @@ void pnv_bmc_powerdown(IPMIBmc *bmc);
|
|||
#define PNV9_XIVE_PC_SIZE 0x0000001000000000ull
|
||||
#define PNV9_XIVE_PC_BASE(chip) PNV9_CHIP_BASE(chip, 0x0006018000000000ull)
|
||||
|
||||
#define PNV9_LPCM_SIZE 0x0000000100000000ull
|
||||
#define PNV9_LPCM_BASE(chip) PNV9_CHIP_BASE(chip, 0x0006030000000000ull)
|
||||
|
||||
#define PNV9_PSIHB_SIZE 0x0000000000100000ull
|
||||
#define PNV9_PSIHB_BASE(chip) PNV9_CHIP_BASE(chip, 0x0006030203000000ull)
|
||||
|
||||
|
|
|
@ -27,6 +27,9 @@
|
|||
#define TYPE_PNV8_LPC TYPE_PNV_LPC "-POWER8"
|
||||
#define PNV8_LPC(obj) OBJECT_CHECK(PnvLpcController, (obj), TYPE_PNV8_LPC)
|
||||
|
||||
#define TYPE_PNV9_LPC TYPE_PNV_LPC "-POWER9"
|
||||
#define PNV9_LPC(obj) OBJECT_CHECK(PnvLpcController, (obj), TYPE_PNV9_LPC)
|
||||
|
||||
typedef struct PnvLpcController {
|
||||
DeviceState parent;
|
||||
|
||||
|
@ -85,6 +88,12 @@ typedef struct PnvLpcClass {
|
|||
DeviceRealize parent_realize;
|
||||
} PnvLpcClass;
|
||||
|
||||
/*
|
||||
* Old compilers error on typdef forward declarations. Keep them happy.
|
||||
*/
|
||||
struct PnvChip;
|
||||
|
||||
ISABus *pnv_lpc_isa_create(PnvLpcController *lpc, bool use_cpld, Error **errp);
|
||||
int pnv_dt_lpc(struct PnvChip *chip, void *fdt, int root_offset);
|
||||
|
||||
#endif /* _PPC_PNV_LPC_H */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue