qemu/include/hw/fsi/fsi-master.h
Ninad Palsule ca03310737 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>
2024-02-01 08:13:30 +01:00

33 lines
649 B
C

/*
* 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 */