qemu/include/hw/fsi/cfam.h
Ninad Palsule f32f8e4d20 hw/fsi: Introduce IBM's cfam
This is a part of patchset where IBM's Flexible Service Interface is
introduced.

The Common FRU Access Macro (CFAM), an address space containing
various "engines" that drive accesses on busses internal and external
to the POWER chip. Examples include the SBEFIFO and I2C masters. The
engines hang off of an internal Local Bus (LBUS) which is described
by the CFAM configuration block.

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: - moved object FSIScratchPad under FSICFAMState
       - moved FSIScratchPad code under cfam.c
       - introduced fsi_cfam_instance_init()
       - reworked fsi_cfam_realize() ]
Signed-off-by: Cédric Le Goater <clg@kaod.org>
2024-02-01 08:13:30 +01:00

35 lines
639 B
C

/*
* SPDX-License-Identifier: GPL-2.0-or-later
* Copyright (C) 2024 IBM Corp.
*
* IBM Common FRU Access Macro
*/
#ifndef FSI_CFAM_H
#define FSI_CFAM_H
#include "exec/memory.h"
#include "hw/fsi/fsi.h"
#include "hw/fsi/lbus.h"
#define TYPE_FSI_CFAM "cfam"
#define FSI_CFAM(obj) OBJECT_CHECK(FSICFAMState, (obj), TYPE_FSI_CFAM)
/* P9-ism */
#define CFAM_CONFIG_NR_REGS 0x28
typedef struct FSICFAMState {
/* < private > */
FSISlaveState parent;
/* CFAM config address space */
MemoryRegion config_iomem;
MemoryRegion mr;
FSILBus lbus;
FSIScratchPad scratchpad;
} FSICFAMState;
#endif /* FSI_CFAM_H */