2018-03-24 08:04:15 +00:00
|
|
|
/*
|
|
|
|
* QEMU Xbox PCI buses implementation
|
|
|
|
*
|
|
|
|
* Copyright (c) 2012 espes
|
2021-03-03 10:24:24 +00:00
|
|
|
* Copyright (c) 2020-2021 Matt Borgerson
|
2018-03-24 08:04:15 +00:00
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
2018-10-10 03:38:16 +00:00
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
2018-03-24 08:04:15 +00:00
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
2018-10-10 03:38:16 +00:00
|
|
|
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
2018-03-24 08:04:15 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef HW_XBOX_PCI_H
|
|
|
|
#define HW_XBOX_PCI_H
|
|
|
|
|
|
|
|
#include "hw/hw.h"
|
|
|
|
#include "hw/isa/isa.h"
|
|
|
|
#include "hw/pci/pci.h"
|
|
|
|
#include "hw/pci/pci_host.h"
|
|
|
|
#include "hw/pci/pci_bus.h"
|
|
|
|
#include "hw/xbox/amd_smbus.h"
|
|
|
|
#include "hw/acpi/acpi.h"
|
|
|
|
#include "hw/xbox/acpi_xbox.h"
|
|
|
|
|
|
|
|
typedef struct XBOX_PCIState {
|
|
|
|
PCIDevice dev;
|
|
|
|
|
|
|
|
MemoryRegion *ram_memory;
|
|
|
|
MemoryRegion *pci_address_space;
|
|
|
|
MemoryRegion *system_memory;
|
|
|
|
MemoryRegion pci_hole;
|
|
|
|
} XBOX_PCIState;
|
|
|
|
|
|
|
|
typedef struct XBOX_SMBState {
|
|
|
|
PCIDevice dev;
|
|
|
|
|
|
|
|
AMD756SMBus smb;
|
|
|
|
MemoryRegion smb_bar;
|
|
|
|
} XBOX_SMBState;
|
|
|
|
|
|
|
|
typedef struct XBOX_LPCState {
|
|
|
|
PCIDevice dev;
|
|
|
|
|
|
|
|
ISABus *isa_bus;
|
|
|
|
XBOX_PMRegs pm;
|
|
|
|
qemu_irq *pic;
|
|
|
|
|
2020-11-12 06:11:30 +00:00
|
|
|
MemoryRegion *rom_memory;
|
2018-03-24 08:04:15 +00:00
|
|
|
int bootrom_size;
|
|
|
|
uint8_t bootrom_data[512];
|
|
|
|
} XBOX_LPCState;
|
|
|
|
|
2020-06-17 23:25:48 +00:00
|
|
|
extern const VMStateDescription vmstate_xbox_pm;
|
|
|
|
|
2018-03-24 08:04:15 +00:00
|
|
|
#define XBOX_PCI_DEVICE(obj) \
|
|
|
|
OBJECT_CHECK(XBOX_PCIState, (obj), "xbox-pci")
|
|
|
|
|
|
|
|
#define XBOX_SMBUS_DEVICE(obj) \
|
|
|
|
OBJECT_CHECK(XBOX_SMBState, (obj), "xbox-smbus")
|
|
|
|
|
|
|
|
#define XBOX_LPC_DEVICE(obj) \
|
|
|
|
OBJECT_CHECK(XBOX_LPCState, (obj), "xbox-lpc")
|
|
|
|
|
|
|
|
void xbox_pci_init(qemu_irq *pic,
|
|
|
|
MemoryRegion *address_space_mem,
|
|
|
|
MemoryRegion *address_space_io,
|
|
|
|
MemoryRegion *pci_memory,
|
|
|
|
MemoryRegion *ram_memory,
|
2020-11-12 06:11:30 +00:00
|
|
|
MemoryRegion *rom_memory,
|
2018-03-24 08:04:15 +00:00
|
|
|
PCIBus **out_host_bus,
|
|
|
|
ISABus **out_isa_bus,
|
2018-06-26 21:45:02 +00:00
|
|
|
I2CBus **out_smbus,
|
2018-03-24 08:04:15 +00:00
|
|
|
PCIBus **out_agp_bus);
|
|
|
|
|
2018-06-26 21:45:02 +00:00
|
|
|
#endif
|