xref: /qemu/include/hw/pci-host/i440fx.h (revision 34020760)
10fd61a2dSPhilippe Mathieu-Daudé /*
20fd61a2dSPhilippe Mathieu-Daudé  * QEMU i440FX North Bridge Emulation
30fd61a2dSPhilippe Mathieu-Daudé  *
40fd61a2dSPhilippe Mathieu-Daudé  * Copyright (c) 2006 Fabrice Bellard
50fd61a2dSPhilippe Mathieu-Daudé  *
60fd61a2dSPhilippe Mathieu-Daudé  * This work is licensed under the terms of the GNU GPL, version 2 or later.
70fd61a2dSPhilippe Mathieu-Daudé  * See the COPYING file in the top-level directory.
80fd61a2dSPhilippe Mathieu-Daudé  *
90fd61a2dSPhilippe Mathieu-Daudé  */
100fd61a2dSPhilippe Mathieu-Daudé 
110fd61a2dSPhilippe Mathieu-Daudé #ifndef HW_PCI_I440FX_H
120fd61a2dSPhilippe Mathieu-Daudé #define HW_PCI_I440FX_H
130fd61a2dSPhilippe Mathieu-Daudé 
140fd61a2dSPhilippe Mathieu-Daudé #include "hw/hw.h"
150fd61a2dSPhilippe Mathieu-Daudé #include "hw/pci/pci_bus.h"
16*34020760SPhilippe Mathieu-Daudé #include "hw/pci-host/pam.h"
170fd61a2dSPhilippe Mathieu-Daudé 
180fd61a2dSPhilippe Mathieu-Daudé #define TYPE_I440FX_PCI_HOST_BRIDGE "i440FX-pcihost"
190fd61a2dSPhilippe Mathieu-Daudé #define TYPE_I440FX_PCI_DEVICE "i440FX"
200fd61a2dSPhilippe Mathieu-Daudé 
21*34020760SPhilippe Mathieu-Daudé #define I440FX_PCI_DEVICE(obj) \
22*34020760SPhilippe Mathieu-Daudé     OBJECT_CHECK(PCII440FXState, (obj), TYPE_I440FX_PCI_DEVICE)
23*34020760SPhilippe Mathieu-Daudé 
24*34020760SPhilippe Mathieu-Daudé typedef struct PCII440FXState {
25*34020760SPhilippe Mathieu-Daudé     /*< private >*/
26*34020760SPhilippe Mathieu-Daudé     PCIDevice parent_obj;
27*34020760SPhilippe Mathieu-Daudé     /*< public >*/
28*34020760SPhilippe Mathieu-Daudé 
29*34020760SPhilippe Mathieu-Daudé     MemoryRegion *system_memory;
30*34020760SPhilippe Mathieu-Daudé     MemoryRegion *pci_address_space;
31*34020760SPhilippe Mathieu-Daudé     MemoryRegion *ram_memory;
32*34020760SPhilippe Mathieu-Daudé     PAMMemoryRegion pam_regions[13];
33*34020760SPhilippe Mathieu-Daudé     MemoryRegion smram_region;
34*34020760SPhilippe Mathieu-Daudé     MemoryRegion smram, low_smram;
35*34020760SPhilippe Mathieu-Daudé } PCII440FXState;
36*34020760SPhilippe Mathieu-Daudé 
370fd61a2dSPhilippe Mathieu-Daudé #define TYPE_IGD_PASSTHROUGH_I440FX_PCI_DEVICE "igd-passthrough-i440FX"
380fd61a2dSPhilippe Mathieu-Daudé 
390fd61a2dSPhilippe Mathieu-Daudé PCIBus *i440fx_init(const char *host_type, const char *pci_type,
4048bc99a0SPhilippe Mathieu-Daudé                     PCII440FXState **pi440fx_state,
410fd61a2dSPhilippe Mathieu-Daudé                     MemoryRegion *address_space_mem,
420fd61a2dSPhilippe Mathieu-Daudé                     MemoryRegion *address_space_io,
430fd61a2dSPhilippe Mathieu-Daudé                     ram_addr_t ram_size,
440fd61a2dSPhilippe Mathieu-Daudé                     ram_addr_t below_4g_mem_size,
450fd61a2dSPhilippe Mathieu-Daudé                     ram_addr_t above_4g_mem_size,
460fd61a2dSPhilippe Mathieu-Daudé                     MemoryRegion *pci_memory,
470fd61a2dSPhilippe Mathieu-Daudé                     MemoryRegion *ram_memory);
480fd61a2dSPhilippe Mathieu-Daudé 
490fd61a2dSPhilippe Mathieu-Daudé PCIBus *find_i440fx(void);
500fd61a2dSPhilippe Mathieu-Daudé 
510fd61a2dSPhilippe Mathieu-Daudé #endif
52