xref: /qemu/include/hw/pci-host/uninorth.h (revision e226efbb262468241c2c8828373a84ffd93992ac)
15d2eaa02SMark Cave-Ayland /*
25d2eaa02SMark Cave-Ayland  * QEMU Uninorth PCI host (for all Mac99 and newer machines)
35d2eaa02SMark Cave-Ayland  *
45d2eaa02SMark Cave-Ayland  * Copyright (c) 2006 Fabrice Bellard
55d2eaa02SMark Cave-Ayland  *
65d2eaa02SMark Cave-Ayland  * Permission is hereby granted, free of charge, to any person obtaining a copy
75d2eaa02SMark Cave-Ayland  * of this software and associated documentation files (the "Software"), to deal
85d2eaa02SMark Cave-Ayland  * in the Software without restriction, including without limitation the rights
95d2eaa02SMark Cave-Ayland  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
105d2eaa02SMark Cave-Ayland  * copies of the Software, and to permit persons to whom the Software is
115d2eaa02SMark Cave-Ayland  * furnished to do so, subject to the following conditions:
125d2eaa02SMark Cave-Ayland  *
135d2eaa02SMark Cave-Ayland  * The above copyright notice and this permission notice shall be included in
145d2eaa02SMark Cave-Ayland  * all copies or substantial portions of the Software.
155d2eaa02SMark Cave-Ayland  *
165d2eaa02SMark Cave-Ayland  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
175d2eaa02SMark Cave-Ayland  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
185d2eaa02SMark Cave-Ayland  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
195d2eaa02SMark Cave-Ayland  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
205d2eaa02SMark Cave-Ayland  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
215d2eaa02SMark Cave-Ayland  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
225d2eaa02SMark Cave-Ayland  * THE SOFTWARE.
235d2eaa02SMark Cave-Ayland  */
245d2eaa02SMark Cave-Ayland 
255d2eaa02SMark Cave-Ayland #ifndef UNINORTH_H
265d2eaa02SMark Cave-Ayland #define UNINORTH_H
275d2eaa02SMark Cave-Ayland 
285d2eaa02SMark Cave-Ayland #include "hw/hw.h"
295d2eaa02SMark Cave-Ayland 
30e7755cc1SMark Cave-Ayland #include "hw/ppc/openpic.h"
31e7755cc1SMark Cave-Ayland 
325d2eaa02SMark Cave-Ayland #define TYPE_UNI_NORTH_PCI_HOST_BRIDGE "uni-north-pci-pcihost"
335d2eaa02SMark Cave-Ayland #define TYPE_UNI_NORTH_AGP_HOST_BRIDGE "uni-north-agp-pcihost"
345d2eaa02SMark Cave-Ayland #define TYPE_UNI_NORTH_INTERNAL_PCI_HOST_BRIDGE "uni-north-internal-pci-pcihost"
355d2eaa02SMark Cave-Ayland #define TYPE_U3_AGP_HOST_BRIDGE "u3-agp-pcihost"
365d2eaa02SMark Cave-Ayland 
375d2eaa02SMark Cave-Ayland #define UNI_NORTH_PCI_HOST_BRIDGE(obj) \
385d2eaa02SMark Cave-Ayland     OBJECT_CHECK(UNINState, (obj), TYPE_UNI_NORTH_PCI_HOST_BRIDGE)
395d2eaa02SMark Cave-Ayland #define UNI_NORTH_AGP_HOST_BRIDGE(obj) \
405d2eaa02SMark Cave-Ayland     OBJECT_CHECK(UNINState, (obj), TYPE_UNI_NORTH_AGP_HOST_BRIDGE)
415d2eaa02SMark Cave-Ayland #define UNI_NORTH_INTERNAL_PCI_HOST_BRIDGE(obj) \
425d2eaa02SMark Cave-Ayland     OBJECT_CHECK(UNINState, (obj), TYPE_UNI_NORTH_INTERNAL_PCI_HOST_BRIDGE)
435d2eaa02SMark Cave-Ayland #define U3_AGP_HOST_BRIDGE(obj) \
445d2eaa02SMark Cave-Ayland     OBJECT_CHECK(UNINState, (obj), TYPE_U3_AGP_HOST_BRIDGE)
455d2eaa02SMark Cave-Ayland 
465d2eaa02SMark Cave-Ayland typedef struct UNINState {
475d2eaa02SMark Cave-Ayland     PCIHostState parent_obj;
485d2eaa02SMark Cave-Ayland 
49e7755cc1SMark Cave-Ayland     OpenPICState *pic;
50e7755cc1SMark Cave-Ayland     qemu_irq irqs[4];
515d2eaa02SMark Cave-Ayland     MemoryRegion pci_mmio;
525d2eaa02SMark Cave-Ayland     MemoryRegion pci_hole;
53*e226efbbSMark Cave-Ayland     MemoryRegion pci_io;
545d2eaa02SMark Cave-Ayland } UNINState;
555d2eaa02SMark Cave-Ayland 
565d2eaa02SMark Cave-Ayland #endif /* UNINORTH_H */
57