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)
|
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
|
* 0x0, 0x1, 0x10, 0x11
|
||||||
*
|
*
|
||||||
* 4 chips should be the maximum
|
* 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))
|
#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 TYPE_POWERNV_MACHINE MACHINE_TYPE_NAME("powernv")
|
||||||
#define POWERNV_MACHINE(obj) \
|
#define POWERNV_MACHINE(obj) \
|
||||||
OBJECT_CHECK(PnvMachineState, (obj), TYPE_POWERNV_MACHINE)
|
OBJECT_CHECK(PnvMachineState, (obj), TYPE_POWERNV_MACHINE)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user