ppc/pnv: add a helper to calculate MMIO addresses registers
Some controllers (ICP, PSI) have a base register address which is calculated using the chip id. Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
960fbd29e5
commit
5509db4aec
@ -91,14 +91,24 @@ typedef struct PnvChipClass {
|
||||
OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER9)
|
||||
|
||||
/*
|
||||
* This generates a HW chip id depending on an index:
|
||||
* This generates a HW chip id depending on an index, as found on a
|
||||
* two socket system with dual chip modules :
|
||||
*
|
||||
* 0x0, 0x1, 0x10, 0x11
|
||||
*
|
||||
* 4 chips should be the maximum
|
||||
*
|
||||
* TODO: use a machine property to define the chip ids
|
||||
*/
|
||||
#define PNV_CHIP_HWID(i) ((((i) & 0x3e) << 3) | ((i) & 0x1))
|
||||
|
||||
/*
|
||||
* Converts back a HW chip id to an index. This is useful to calculate
|
||||
* the MMIO addresses of some controllers which depend on the chip id.
|
||||
*/
|
||||
#define PNV_CHIP_INDEX(chip) \
|
||||
(((chip)->chip_id >> 2) * 2 + ((chip)->chip_id & 0x3))
|
||||
|
||||
#define TYPE_POWERNV_MACHINE MACHINE_TYPE_NAME("powernv")
|
||||
#define POWERNV_MACHINE(obj) \
|
||||
OBJECT_CHECK(PnvMachineState, (obj), TYPE_POWERNV_MACHINE)
|
||||
|
Loading…
Reference in New Issue
Block a user