1*43c6a5ecSNinad Palsule /* 2*43c6a5ecSNinad Palsule * SPDX-License-Identifier: GPL-2.0-or-later 3*43c6a5ecSNinad Palsule * Copyright (C) 2024 IBM Corp. 4*43c6a5ecSNinad Palsule * 5*43c6a5ecSNinad Palsule * IBM Local bus and connected device structures. 6*43c6a5ecSNinad Palsule */ 7*43c6a5ecSNinad Palsule #ifndef FSI_LBUS_H 8*43c6a5ecSNinad Palsule #define FSI_LBUS_H 9*43c6a5ecSNinad Palsule 10*43c6a5ecSNinad Palsule #include "hw/qdev-core.h" 11*43c6a5ecSNinad Palsule #include "qemu/units.h" 12*43c6a5ecSNinad Palsule #include "exec/memory.h" 13*43c6a5ecSNinad Palsule 14*43c6a5ecSNinad Palsule #define TYPE_FSI_LBUS_DEVICE "fsi.lbus.device" 15*43c6a5ecSNinad Palsule OBJECT_DECLARE_SIMPLE_TYPE(FSILBusDevice, FSI_LBUS_DEVICE) 16*43c6a5ecSNinad Palsule 17*43c6a5ecSNinad Palsule typedef struct FSILBusDevice { 18*43c6a5ecSNinad Palsule DeviceState parent; 19*43c6a5ecSNinad Palsule 20*43c6a5ecSNinad Palsule MemoryRegion iomem; 21*43c6a5ecSNinad Palsule } FSILBusDevice; 22*43c6a5ecSNinad Palsule 23*43c6a5ecSNinad Palsule #define TYPE_FSI_LBUS "fsi.lbus" 24*43c6a5ecSNinad Palsule OBJECT_DECLARE_SIMPLE_TYPE(FSILBus, FSI_LBUS) 25*43c6a5ecSNinad Palsule 26*43c6a5ecSNinad Palsule typedef struct FSILBus { 27*43c6a5ecSNinad Palsule BusState bus; 28*43c6a5ecSNinad Palsule 29*43c6a5ecSNinad Palsule MemoryRegion mr; 30*43c6a5ecSNinad Palsule } FSILBus; 31*43c6a5ecSNinad Palsule 32*43c6a5ecSNinad Palsule #define TYPE_FSI_SCRATCHPAD "fsi.scratchpad" 33*43c6a5ecSNinad Palsule #define SCRATCHPAD(obj) OBJECT_CHECK(FSIScratchPad, (obj), TYPE_FSI_SCRATCHPAD) 34*43c6a5ecSNinad Palsule 35*43c6a5ecSNinad Palsule #define FSI_SCRATCHPAD_NR_REGS 4 36*43c6a5ecSNinad Palsule 37*43c6a5ecSNinad Palsule typedef struct FSIScratchPad { 38*43c6a5ecSNinad Palsule FSILBusDevice parent; 39*43c6a5ecSNinad Palsule 40*43c6a5ecSNinad Palsule uint32_t regs[FSI_SCRATCHPAD_NR_REGS]; 41 } FSIScratchPad; 42 43 #endif /* FSI_LBUS_H */ 44