]> Git Repo - qemu.git/commitdiff
ppc/pnv: add a helper to calculate MMIO addresses registers
authorCédric Le Goater <[email protected]>
Mon, 3 Apr 2017 07:46:04 +0000 (09:46 +0200)
committerDavid Gibson <[email protected]>
Wed, 26 Apr 2017 02:00:42 +0000 (12:00 +1000)
Some controllers (ICP, PSI) have a base register address which is
calculated using the chip id.

Signed-off-by: Cédric Le Goater <[email protected]>
Reviewed-by: David Gibson <[email protected]>
Signed-off-by: David Gibson <[email protected]>
include/hw/ppc/pnv.h

index df98a72006e414b6b6fa83f195af646fd0a2ea92..5693ba181d245fad29a6ca3c6c9d3c94a0ffe078 100644 (file)
@@ -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)
This page took 0.024056 seconds and 4 git commands to generate.