#define DINO_SCSI_HPA 0xfff8c000
#define LASI_HPA_715 0xf0100000
#define LASI_HPA 0xffd00000
-#define LASI_UART_HPA 0xffd05000
-#define LASI_SCSI_HPA 0xffd06000
-#define LASI_LAN_HPA 0xffd07000
-#define LASI_RTC_HPA 0xffd09000
-#define LASI_LPT_HPA 0xffd02000
-#define LASI_AUDIO_HPA 0xffd04000
-#define LASI_PS2KBD_HPA 0xffd08000
-#define LASI_PS2MOU_HPA 0xffd08100
#define LASI_GFX_HPA 0xf8000000
#define ARTIST_FB_ADDR 0xf9000000
#define CPU_HPA 0xfffb0000
#define SCSI_HPA 0xf1040000 /* emulated SCSI, needs to be in f region */
+#define HPA_DISABLED_DEVICE 1 /* add to HPA to disable */
+
/* offsets to DINO HPA: */
#define DINO_PCI_ADDR 0x064
#define DINO_CONFIG_DATA 0x068
#define HPA_POWER_BUTTON (FIRMWARE_END - 0x10)
static hwaddr soft_power_reg;
-#define enable_lasi_lan() 0
-
static DeviceState *lasi_dev;
static void hppa_powerdown_req(Notifier *n, void *opaque)
}
}
- /* Network setup. */
- if (lasi_dev) {
- lasi_82596_init(addr_space, translate(NULL, LASI_LAN_HPA),
- qdev_get_gpio_in(lasi_dev, LASI_IRQ_LAN_HPA),
- enable_lasi_lan());
- }
-
if (pci_bus) {
pci_init_nic_devices(pci_bus, mc->default_nic);
lasi_ncr710_handle_legacy_cmdline(dev);
}
+ /* LASI i82596 network */
+ dev = qemu_create_nic_device(TYPE_LASI_82596, true, "lasi");
+ if (dev) {
+ sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
+ sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0,
+ qdev_get_gpio_in(lasi_dev, LASI_IRQ_LAN_HPA));
+ memory_region_add_subregion(addr_space,
+ translate(NULL, LASI_HPA_715 + LASI_LAN),
+ sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0));
+ }
+
/* Add NICs, graphics & load firmware */
machine_HP_common_init_tail(machine, NULL, translate);
}
assert(isa_bus);
/* Serial ports: Lasi and Dino use a 7.272727 MHz clock. */
- serial_mm_init(addr_space, translate(NULL, LASI_UART_HPA + 0x800), 0,
+ serial_mm_init(addr_space, translate(NULL, LASI_HPA + LASI_UART + 0x800), 0,
qdev_get_gpio_in(lasi_dev, LASI_IRQ_UART_HPA), 7272727 / 16,
serial_hd(0), DEVICE_BIG_ENDIAN);
serial_hd(1), DEVICE_BIG_ENDIAN);
/* Parallel port */
- parallel_mm_init(addr_space, translate(NULL, LASI_LPT_HPA + 0x800), 0,
+ parallel_mm_init(addr_space,
+ translate(NULL, LASI_HPA + LASI_LPT + 0x800), 0,
qdev_get_gpio_in(lasi_dev, LASI_IRQ_LPT_HPA),
parallel_hds[0]);
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0,
qdev_get_gpio_in(lasi_dev, LASI_IRQ_PS2KBD_HPA));
memory_region_add_subregion(addr_space,
- translate(NULL, LASI_PS2KBD_HPA),
+ translate(NULL, LASI_HPA + LASI_PS2),
sysbus_mmio_get_region(SYS_BUS_DEVICE(dev),
0));
memory_region_add_subregion(addr_space,
- translate(NULL, LASI_PS2KBD_HPA + 0x100),
+ translate(NULL, LASI_HPA + LASI_PS2 + 0x100),
sysbus_mmio_get_region(SYS_BUS_DEVICE(dev),
1));
/* can only support up to max. 8 CPUs due inventory major numbers */
mc->max_cpus = MIN_CONST(HPPA_MAX_CPUS, 8);
mc->default_ram_size = 256 * MiB;
- mc->default_nic = NULL;
+ mc->default_nic = TYPE_LASI_82596;
}
memory_region_init_io(&s->mmio, OBJECT(d), &lasi_82596_mem_ops, d,
"lasi_82596-mmio", PA_GET_MACADDR + 4);
- i82596_common_init(dev, s, &net_lasi_82596_info);
-}
+ sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->irq);
+ sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->mmio);
-SysBusI82596State *lasi_82596_init(MemoryRegion *addr_space, hwaddr hpa,
- qemu_irq lan_irq, gboolean match_default)
-{
- DeviceState *dev;
- SysBusI82596State *s;
- static const MACAddr HP_MAC = {
- .a = { 0x08, 0x00, 0x09, 0xef, 0x34, 0xf6 } };
-
- dev = qemu_create_nic_device(TYPE_LASI_82596, match_default, "lasi");
- if (!dev) {
- return NULL;
- }
-
- s = SYSBUS_I82596(dev);
- s->state.irq = lan_irq;
- sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
- s->state.conf.macaddr = HP_MAC; /* set HP MAC prefix */
-
- /* LASI 82596 ports in main memory. */
- memory_region_add_subregion(addr_space, hpa, &s->state.mmio);
- return s;
+ i82596_common_init(dev, s, &net_lasi_82596_info);
}
static void lasi_82596_reset(DeviceState *dev)
{
SysBusI82596State *d = SYSBUS_I82596(obj);
I82596State *s = &d->state;
+ static const MACAddr HP_MAC = {
+ .a = { 0x08, 0x00, 0x09, 0xef, 0x34, 0xf6 } };
+
+ s->conf.macaddr = HP_MAC;
device_add_bootindex_property(obj, &s->conf.bootindex,
"bootindex", "/ethernet-phy@0",