]> git.ipfire.org Git - thirdparty/qemu.git/blame - include/hw/misc/macio/macio.h
Move QOM typedefs and add missing includes
[thirdparty/qemu.git] / include / hw / misc / macio / macio.h
CommitLineData
e1218e48
MCA
1/*
2 * PowerMac MacIO device emulation
3 *
4 * Copyright (c) 2005-2007 Fabrice Bellard
5 * Copyright (c) 2007 Jocelyn Mayer
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal
9 * in the Software without restriction, including without limitation the rights
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 * copies of the Software, and to permit persons to whom the Software is
12 * furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in
15 * all copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 * THE SOFTWARE.
24 */
25
26#ifndef MACIO_H
27#define MACIO_H
28
7c4166a9 29#include "hw/char/escc.h"
5a6ac100 30#include "hw/pci/pci.h"
ec150c7e 31#include "hw/ide/internal.h"
017812df 32#include "hw/intc/heathrow_pic.h"
e1218e48 33#include "hw/misc/macio/cuda.h"
7c4166a9 34#include "hw/misc/macio/gpio.h"
d811d61f 35#include "hw/misc/macio/pmu.h"
ec150c7e 36#include "hw/ppc/mac.h"
e1218e48 37#include "hw/ppc/mac_dbdma.h"
dda12e9a 38#include "hw/ppc/openpic.h"
db1015e9 39#include "qom/object.h"
e1218e48 40
bf31c56f
MCA
41/* MacIO virtual bus */
42#define TYPE_MACIO_BUS "macio-bus"
db1015e9 43typedef struct MacIOBusState MacIOBusState;
bf31c56f
MCA
44#define MACIO_BUS(obj) OBJECT_CHECK(MacIOBusState, (obj), TYPE_MACIO_BUS)
45
db1015e9 46struct MacIOBusState {
bf31c56f
MCA
47 /*< private >*/
48 BusState parent_obj;
db1015e9 49};
bf31c56f 50
9b164a46
MCA
51/* MacIO IDE */
52#define TYPE_MACIO_IDE "macio-ide"
db1015e9 53typedef struct MACIOIDEState MACIOIDEState;
9b164a46
MCA
54#define MACIO_IDE(obj) OBJECT_CHECK(MACIOIDEState, (obj), TYPE_MACIO_IDE)
55
db1015e9 56struct MACIOIDEState {
9b164a46
MCA
57 /*< private >*/
58 SysBusDevice parent_obj;
59 /*< public >*/
5c8e3d17 60 uint32_t addr;
9b164a46
MCA
61 uint32_t channel;
62 qemu_irq real_ide_irq;
63 qemu_irq real_dma_irq;
64 qemu_irq ide_irq;
65 qemu_irq dma_irq;
66
67 MemoryRegion mem;
68 IDEBus bus;
69 IDEDMA dma;
70 void *dbdma;
71 bool dma_active;
72 uint32_t timing_reg;
73 uint32_t irq_reg;
db1015e9 74};
9b164a46
MCA
75
76void macio_ide_init_drives(MACIOIDEState *ide, DriveInfo **hd_table);
77void macio_ide_register_dma(MACIOIDEState *ide);
78
e1218e48 79#define TYPE_MACIO "macio"
db1015e9 80typedef struct MacIOState MacIOState;
e1218e48
MCA
81#define MACIO(obj) OBJECT_CHECK(MacIOState, (obj), TYPE_MACIO)
82
db1015e9 83struct MacIOState {
e1218e48
MCA
84 /*< private >*/
85 PCIDevice parent;
86 /*< public >*/
87
bf31c56f 88 MacIOBusState macio_bus;
e1218e48
MCA
89 MemoryRegion bar;
90 CUDAState cuda;
d811d61f 91 PMUState pmu;
e1218e48
MCA
92 DBDMAState dbdma;
93 ESCCState escc;
e1218e48 94 uint64_t frequency;
db1015e9 95};
e1218e48
MCA
96
97#define TYPE_OLDWORLD_MACIO "macio-oldworld"
db1015e9 98typedef struct OldWorldMacIOState OldWorldMacIOState;
e1218e48
MCA
99#define OLDWORLD_MACIO(obj) \
100 OBJECT_CHECK(OldWorldMacIOState, (obj), TYPE_OLDWORLD_MACIO)
101
db1015e9 102struct OldWorldMacIOState {
e1218e48
MCA
103 /*< private >*/
104 MacIOState parent_obj;
105 /*< public >*/
106
017812df 107 HeathrowState *pic;
e1218e48
MCA
108
109 MacIONVRAMState nvram;
110 MACIOIDEState ide[2];
db1015e9 111};
e1218e48
MCA
112
113#define TYPE_NEWWORLD_MACIO "macio-newworld"
db1015e9 114typedef struct NewWorldMacIOState NewWorldMacIOState;
e1218e48
MCA
115#define NEWWORLD_MACIO(obj) \
116 OBJECT_CHECK(NewWorldMacIOState, (obj), TYPE_NEWWORLD_MACIO)
117
db1015e9 118struct NewWorldMacIOState {
e1218e48
MCA
119 /*< private >*/
120 MacIOState parent_obj;
121 /*< public >*/
dda12e9a 122
f1114c17
MCA
123 bool has_pmu;
124 bool has_adb;
dda12e9a 125 OpenPICState *pic;
e1218e48 126 MACIOIDEState ide[2];
7c4166a9 127 MacIOGPIOState gpio;
db1015e9 128};
e1218e48
MCA
129
130#endif /* MACIO_H */