mirror of https://github.com/xemu-project/xemu.git
dummy xbox ethernet
This commit is contained in:
parent
1e400474d0
commit
cd60649e58
|
@ -213,6 +213,6 @@ obj-$(CONFIG_KVM) += ivshmem.o
|
|||
obj-$(CONFIG_LINUX) += vfio_pci.o
|
||||
endif
|
||||
|
||||
obj-$(CONFIG_XBOX) += xbox_pci.o acpi_xbox.o amd_smbus.o nv2a.o nv2a_vsh.o mcpx_apu.o mcpx_aci.o smbus_xbox_smc.o smbus_cx25871.o smbus_adm1032.o
|
||||
obj-$(CONFIG_XBOX) += xbox_pci.o acpi_xbox.o amd_smbus.o nvnet.o nv2a.o nv2a_vsh.o mcpx_apu.o mcpx_aci.o smbus_xbox_smc.o smbus_cx25871.o smbus_adm1032.o
|
||||
|
||||
endif
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include "exec/address-spaces.h"
|
||||
|
||||
#include "hw/xbox_pci.h"
|
||||
#include "hw/nvnet.h"
|
||||
#include "hw/nv2a.h"
|
||||
#include "hw/mcpx_apu.h"
|
||||
|
||||
|
@ -193,13 +194,6 @@ static void xbox_init(QEMUMachineInitArgs *args)
|
|||
/* does apparently have a pc speaker, though not used? */
|
||||
pcspk_init(isa_bus, pit);
|
||||
|
||||
|
||||
/* TODO: ethernet */
|
||||
|
||||
/* USB */
|
||||
pci_create_simple(host_bus, PCI_DEVFN(2, 0), "pci-ohci");
|
||||
pci_create_simple(host_bus, PCI_DEVFN(3, 0), "pci-ohci");
|
||||
|
||||
/* hdd shit
|
||||
* piix3's ide be right for now, maybe
|
||||
*/
|
||||
|
@ -263,6 +257,14 @@ static void xbox_init(QEMUMachineInitArgs *args)
|
|||
smbus_cx25871_init(smbus, 0x45);
|
||||
smbus_adm1032_init(smbus, 0x4c);
|
||||
|
||||
|
||||
/* USB */
|
||||
pci_create_simple(host_bus, PCI_DEVFN(2, 0), "pci-ohci");
|
||||
pci_create_simple(host_bus, PCI_DEVFN(3, 0), "pci-ohci");
|
||||
|
||||
/* Ethernet! */
|
||||
nvnet_init(host_bus, PCI_DEVFN(4, 0), gsi[4]);
|
||||
|
||||
/* APU! */
|
||||
mcpx_apu_init(host_bus, PCI_DEVFN(5, 0), gsi[5]);
|
||||
|
||||
|
|
|
@ -0,0 +1,129 @@
|
|||
/*
|
||||
* QEMU nForce Ethernet Controller implementation
|
||||
*
|
||||
* Copyright (c) 2013 espes
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 or
|
||||
* (at your option) version 3 of the License.
|
||||
*
|
||||
* This program 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "hw.h"
|
||||
#include "pc.h"
|
||||
#include "pci/pci.h"
|
||||
|
||||
#include "nvnet.h"
|
||||
|
||||
|
||||
#define IOPORT_SIZE 0x8
|
||||
#define MMIO_SIZE 0x400
|
||||
|
||||
|
||||
//#define DEBUG
|
||||
#ifdef DEBUG
|
||||
# define NVNET_DPRINTF(format, ...) printf(format, ## __VA_ARGS__)
|
||||
#else
|
||||
# define NVNET_DPRINTF(format, ...) do { } while (0)
|
||||
#endif
|
||||
|
||||
typedef struct NVNetState {
|
||||
PCIDevice dev;
|
||||
qemu_irq irq;
|
||||
|
||||
MemoryRegion mmio, io;
|
||||
} NVNetState;
|
||||
|
||||
#define NVNET_DEVICE(obj) \
|
||||
OBJECT_CHECK(NVNetState, (obj), "nvnet")
|
||||
|
||||
|
||||
static uint64_t nvnet_mmio_read(void *opaque,
|
||||
hwaddr addr, unsigned int size)
|
||||
{
|
||||
NVNET_DPRINTF("nvnet MMIO: read [0x%llx]\n", addr);
|
||||
return 0;
|
||||
}
|
||||
static void nvnet_mmio_write(void *opaque, hwaddr addr,
|
||||
uint64_t val, unsigned int size)
|
||||
{
|
||||
NVNET_DPRINTF("nvnet MMIO: [0x%llx] = 0x%llx\n", addr, val);
|
||||
}
|
||||
static const MemoryRegionOps nvnet_mmio_ops = {
|
||||
.read = nvnet_mmio_read,
|
||||
.write = nvnet_mmio_write,
|
||||
};
|
||||
|
||||
|
||||
static uint64_t nvnet_io_read(void *opaque,
|
||||
hwaddr addr, unsigned int size)
|
||||
{
|
||||
NVNET_DPRINTF("nvnet IO: read [0x%llx]\n", addr);
|
||||
return 0;
|
||||
}
|
||||
static void nvnet_io_write(void *opaque, hwaddr addr,
|
||||
uint64_t val, unsigned int size)
|
||||
{
|
||||
NVNET_DPRINTF("nvnet IO: [0x%llx] = 0x%llx\n", addr, val);
|
||||
}
|
||||
static const MemoryRegionOps nvnet_io_ops = {
|
||||
.read = nvnet_io_read,
|
||||
.write = nvnet_io_write,
|
||||
};
|
||||
|
||||
static int nvnet_initfn(PCIDevice *dev)
|
||||
{
|
||||
NVNetState *d = NVNET_DEVICE(dev);
|
||||
|
||||
memory_region_init_io(&d->mmio, &nvnet_mmio_ops, d, "nvnet-mmio", MMIO_SIZE);
|
||||
pci_register_bar(&d->dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &d->mmio);
|
||||
|
||||
memory_region_init_io(&d->io, &nvnet_io_ops, d, "nvnet-io", IOPORT_SIZE);
|
||||
pci_register_bar(&d->dev, 1, PCI_BASE_ADDRESS_SPACE_IO, &d->io);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void nvnet_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
|
||||
|
||||
k->vendor_id = PCI_VENDOR_ID_NVIDIA;
|
||||
k->device_id = PCI_DEVICE_ID_NVIDIA_NVENET_1;
|
||||
k->revision = 210;
|
||||
k->class_id = PCI_CLASS_NETWORK_ETHERNET;
|
||||
k->init = nvnet_initfn;
|
||||
|
||||
dc->desc = "nForce Ethernet Controller";
|
||||
}
|
||||
|
||||
static const TypeInfo nvnet_info = {
|
||||
.name = "nvnet",
|
||||
.parent = TYPE_PCI_DEVICE,
|
||||
.instance_size = sizeof(NVNetState),
|
||||
.class_init = nvnet_class_init,
|
||||
};
|
||||
|
||||
static void nvnet_register(void)
|
||||
{
|
||||
type_register_static(&nvnet_info);
|
||||
}
|
||||
type_init(nvnet_register);
|
||||
|
||||
|
||||
void nvnet_init(PCIBus *bus, int devfn, qemu_irq irq)
|
||||
{
|
||||
PCIDevice *dev;
|
||||
NVNetState *d;
|
||||
dev = pci_create_simple(bus, devfn, "nvnet");
|
||||
d = NVNET_DEVICE(dev);
|
||||
d->irq = irq;
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* QEMU nForce Ethernet Controller implementation
|
||||
*
|
||||
* Copyright (c) 2013 espes
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 or
|
||||
* (at your option) version 3 of the License.
|
||||
*
|
||||
* This program 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef HW_NVNET_H
|
||||
#define HW_NVNET_H
|
||||
|
||||
#include "pci/pci.h"
|
||||
|
||||
void nvnet_init(PCIBus *bus, int devfn, qemu_irq irq);
|
||||
|
||||
#endif
|
|
@ -158,6 +158,7 @@
|
|||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_LPC 0x01b2
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_SMBUS 0x01b4
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_AGP 0x01b7
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_1 0x01c3
|
||||
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE_NV2A 0x02a0
|
||||
#define PCI_DEVICE_ID_NVIDIA_XBOX_PCHB 0x02a5
|
||||
|
|
Loading…
Reference in New Issue