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