xref: /openbmc/qemu/include/hw/m68k/q800.h (revision 9d35c6ad)
1a8019229SMark Cave-Ayland /*
2a8019229SMark Cave-Ayland  * QEMU Motorla 680x0 Macintosh hardware System Emulator
3a8019229SMark Cave-Ayland  *
4a8019229SMark Cave-Ayland  * Permission is hereby granted, free of charge, to any person obtaining a copy
5a8019229SMark Cave-Ayland  * of this software and associated documentation files (the "Software"), to deal
6a8019229SMark Cave-Ayland  * in the Software without restriction, including without limitation the rights
7a8019229SMark Cave-Ayland  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8a8019229SMark Cave-Ayland  * copies of the Software, and to permit persons to whom the Software is
9a8019229SMark Cave-Ayland  * furnished to do so, subject to the following conditions:
10a8019229SMark Cave-Ayland  *
11a8019229SMark Cave-Ayland  * The above copyright notice and this permission notice shall be included in
12a8019229SMark Cave-Ayland  * all copies or substantial portions of the Software.
13a8019229SMark Cave-Ayland  *
14a8019229SMark Cave-Ayland  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15a8019229SMark Cave-Ayland  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16a8019229SMark Cave-Ayland  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17a8019229SMark Cave-Ayland  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18a8019229SMark Cave-Ayland  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19a8019229SMark Cave-Ayland  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20a8019229SMark Cave-Ayland  * THE SOFTWARE.
21a8019229SMark Cave-Ayland  */
22a8019229SMark Cave-Ayland 
23a8019229SMark Cave-Ayland #ifndef HW_Q800_H
24a8019229SMark Cave-Ayland #define HW_Q800_H
25a8019229SMark Cave-Ayland 
26a8019229SMark Cave-Ayland #include "hw/boards.h"
27a8019229SMark Cave-Ayland #include "qom/object.h"
2836e2e338SMark Cave-Ayland #include "target/m68k/cpu-qom.h"
290b9b41fbSMark Cave-Ayland #include "exec/memory.h"
301ecc6ec1SMark Cave-Ayland #include "hw/m68k/q800-glue.h"
316d32c064SMark Cave-Ayland #include "hw/misc/mac_via.h"
32804ae67eSMark Cave-Ayland #include "hw/net/dp8393x.h"
33836126c7SMark Cave-Ayland #include "hw/char/escc.h"
341a7a3f00SMark Cave-Ayland #include "hw/or-irq.h"
35e78d17caSMark Cave-Ayland #include "hw/scsi/esp.h"
3601f35a4fSMark Cave-Ayland #include "hw/block/swim.h"
3736df1c5aSMark Cave-Ayland #include "hw/nubus/mac-nubus-bridge.h"
387a1f3acbSMark Cave-Ayland #include "hw/display/macfb.h"
39e2fd695eSMark Cave-Ayland #include "hw/misc/djmemc.h"
40bdc2c77dSMark Cave-Ayland #include "hw/misc/iosb.h"
419983f6e1SMark Cave-Ayland #include "hw/audio/asc.h"
42a8019229SMark Cave-Ayland 
43a8019229SMark Cave-Ayland /*
44a8019229SMark Cave-Ayland  * The main Q800 machine
45a8019229SMark Cave-Ayland  */
46a8019229SMark Cave-Ayland 
47a8019229SMark Cave-Ayland struct Q800MachineState {
48a8019229SMark Cave-Ayland     MachineState parent_obj;
4936e2e338SMark Cave-Ayland 
507afc4356SMark Cave-Ayland     bool easc;
5136e2e338SMark Cave-Ayland     M68kCPU cpu;
520b9b41fbSMark Cave-Ayland     MemoryRegion rom;
53*9d35c6adSMark Cave-Ayland     MemoryRegion rom_alias;
541ecc6ec1SMark Cave-Ayland     GLUEState glue;
556d32c064SMark Cave-Ayland     MOS6522Q800VIA1State via1;
56d7942e16SMark Cave-Ayland     MOS6522Q800VIA2State via2;
57804ae67eSMark Cave-Ayland     dp8393xState dp8393x;
58836126c7SMark Cave-Ayland     ESCCState escc;
591a7a3f00SMark Cave-Ayland     OrIRQState escc_orgate;
60e78d17caSMark Cave-Ayland     SysBusESPState esp;
6101f35a4fSMark Cave-Ayland     Swim swim;
6236df1c5aSMark Cave-Ayland     MacNubusBridge mac_nubus_bridge;
637a1f3acbSMark Cave-Ayland     MacfbNubusState macfb;
64e2fd695eSMark Cave-Ayland     DJMEMCState djmemc;
65bdc2c77dSMark Cave-Ayland     IOSBState iosb;
669983f6e1SMark Cave-Ayland     ASCState asc;
676997f26dSMark Cave-Ayland     MemoryRegion ramio;
687527c52fSMark Cave-Ayland     MemoryRegion macio;
69f18a2886SMark Cave-Ayland     MemoryRegion macio_alias;
70e993af36SMark Cave-Ayland     MemoryRegion machine_id;
717685fc2aSMark Cave-Ayland     MemoryRegion escc_alias;
72a8019229SMark Cave-Ayland };
73a8019229SMark Cave-Ayland 
74a8019229SMark Cave-Ayland #define TYPE_Q800_MACHINE MACHINE_TYPE_NAME("q800")
75a8019229SMark Cave-Ayland OBJECT_DECLARE_SIMPLE_TYPE(Q800MachineState, Q800_MACHINE)
76a8019229SMark Cave-Ayland 
77a8019229SMark Cave-Ayland #endif
78