diff options
author | Ninad Palsule <ninad@linux.ibm.com> | 2024-01-26 04:49:51 -0600 |
---|---|---|
committer | Cédric Le Goater <clg@kaod.org> | 2024-02-01 08:13:30 +0100 |
commit | ca0331073722d27b033ca43a827f04fdf2a2bcce (patch) | |
tree | 6ebb98e04464fc9875ff8f04ee860c052356b4fc /include/hw | |
parent | f32f8e4d20b00e9b1fc1fcdd61050312d9ec75f6 (diff) | |
download | qemu-ca0331073722d27b033ca43a827f04fdf2a2bcce.zip qemu-ca0331073722d27b033ca43a827f04fdf2a2bcce.tar.gz qemu-ca0331073722d27b033ca43a827f04fdf2a2bcce.tar.bz2 |
hw/fsi: Introduce IBM's FSI master
This is a part of patchset where IBM's Flexible Service Interface is
introduced.
This commit models the FSI master. CFAM is hanging out of FSI master which is a bus controller.
The FSI master: A controller in the platform service processor (e.g.
BMC) driving CFAM engine accesses into the POWER chip. At the
hardware level FSI is a bit-based protocol supporting synchronous and
DMA-driven accesses of engines in a CFAM.
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Signed-off-by: Ninad Palsule <ninad@linux.ibm.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
[ clg: - move FSICFAMState object under FSIMasterState
- introduced fsi_master_init()
- reworked fsi_master_realize()
- dropped FSIBus definition ]
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Diffstat (limited to 'include/hw')
-rw-r--r-- | include/hw/fsi/fsi-master.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/include/hw/fsi/fsi-master.h b/include/hw/fsi/fsi-master.h new file mode 100644 index 0000000..68e5f56 --- /dev/null +++ b/include/hw/fsi/fsi-master.h @@ -0,0 +1,32 @@ +/* + * SPDX-License-Identifier: GPL-2.0-or-later + * Copyright (C) 2024 IBM Corp. + * + * IBM Flexible Service Interface Master + */ +#ifndef FSI_FSI_MASTER_H +#define FSI_FSI_MASTER_H + +#include "exec/memory.h" +#include "hw/qdev-core.h" +#include "hw/fsi/fsi.h" +#include "hw/fsi/cfam.h" + +#define TYPE_FSI_MASTER "fsi.master" +OBJECT_DECLARE_SIMPLE_TYPE(FSIMasterState, FSI_MASTER) + +#define FSI_MASTER_NR_REGS ((0x2e0 >> 2) + 1) + +typedef struct FSIMasterState { + DeviceState parent; + MemoryRegion iomem; + MemoryRegion opb2fsi; + + FSIBus bus; + + uint32_t regs[FSI_MASTER_NR_REGS]; + FSICFAMState cfam; +} FSIMasterState; + + +#endif /* FSI_FSI_H */ |