[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v6 07/11] mac_oldworld: Map macio to expected address at reset
From: |
BALATON Zoltan |
Subject: |
[PATCH v6 07/11] mac_oldworld: Map macio to expected address at reset |
Date: |
Sun, 28 Jun 2020 20:03:36 +0200 |
Add a reset function that maps macio to the address expected by the
firmware of the board at startup.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
---
hw/ppc/mac.h | 12 ++++++++++++
hw/ppc/mac_oldworld.c | 15 ++++++++++++++-
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/hw/ppc/mac.h b/hw/ppc/mac.h
index 195967facd..58ae5a2226 100644
--- a/hw/ppc/mac.h
+++ b/hw/ppc/mac.h
@@ -60,6 +60,18 @@
#define OLDWORLD_SCREAMER_TX_DMA_IRQ 0x08
#define OLDWORLD_SCREAMER_RX_IRQ 0x09
+/* g3beige machine */
+#define TYPE_HEATHROW_MACHINE MACHINE_TYPE_NAME("g3beige")
+#define HEATHROW_MACHINE(obj) OBJECT_CHECK(HeathrowMachineState, (obj), \
+ TYPE_HEATHROW_MACHINE)
+
+typedef struct HeathrowMachineState {
+ /*< private >*/
+ MachineState parent;
+
+ PCIDevice *macio;
+} HeathrowMachineState;
+
/* New World IRQs */
#define NEWWORLD_CUDA_IRQ 0x19
#define NEWWORLD_PMU_IRQ 0x19
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index f97f241e0c..13562e26e6 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -73,6 +73,15 @@ static uint64_t translate_kernel_address(void *opaque,
uint64_t addr)
return (addr & 0x0fffffff) + KERNEL_LOAD_ADDR;
}
+static void ppc_heathrow_reset(MachineState *machine)
+{
+ HeathrowMachineState *m = HEATHROW_MACHINE(machine);
+
+ qemu_devices_reset();
+ pci_default_write_config(m->macio, PCI_COMMAND, PCI_COMMAND_MEMORY, 2);
+ pci_default_write_config(m->macio, PCI_BASE_ADDRESS_0, 0xf3000000, 4);
+}
+
static void ppc_heathrow_cpu_reset(void *opaque)
{
PowerPCCPU *cpu = opaque;
@@ -82,6 +91,7 @@ static void ppc_heathrow_cpu_reset(void *opaque)
static void ppc_heathrow_init(MachineState *machine)
{
+ HeathrowMachineState *hm = HEATHROW_MACHINE(machine);
ram_addr_t ram_size = machine->ram_size;
const char *boot_device = machine->boot_order;
PowerPCCPU *cpu = NULL;
@@ -287,6 +297,7 @@ static void ppc_heathrow_init(MachineState *machine)
/* MacIO */
macio = pci_new(-1, TYPE_OLDWORLD_MACIO);
+ hm->macio = macio;
dev = DEVICE(macio);
qdev_prop_set_uint64(dev, "frequency", tbfreq);
object_property_set_link(OBJECT(macio), OBJECT(pic_dev), "pic",
@@ -439,6 +450,7 @@ static void heathrow_class_init(ObjectClass *oc, void *data)
mc->desc = "Heathrow based PowerMAC";
mc->init = ppc_heathrow_init;
+ mc->reset = ppc_heathrow_reset;
mc->block_default_type = IF_IDE;
mc->max_cpus = MAX_CPUS;
#ifndef TARGET_PPC64
@@ -455,9 +467,10 @@ static void heathrow_class_init(ObjectClass *oc, void
*data)
}
static const TypeInfo ppc_heathrow_machine_info = {
- .name = MACHINE_TYPE_NAME("g3beige"),
+ .name = TYPE_HEATHROW_MACHINE,
.parent = TYPE_MACHINE,
.class_init = heathrow_class_init,
+ .instance_size = sizeof(HeathrowMachineState),
.interfaces = (InterfaceInfo[]) {
{ TYPE_FW_PATH_PROVIDER },
{ }
--
2.21.3
- [PATCH v6 00/11] Mac Old World ROM experiment, BALATON Zoltan, 2020/06/28
- [PATCH v6 01/11] mac_oldworld: Allow loading binary ROM image, BALATON Zoltan, 2020/06/28
- [PATCH v6 02/11] mac_newworld: Allow loading binary ROM image, BALATON Zoltan, 2020/06/28
- [PATCH v6 03/11] mac_oldworld: Drop a variable, use get_system_memory() directly, BALATON Zoltan, 2020/06/28
- [PATCH v6 04/11] mac_oldworld: Drop some variables, BALATON Zoltan, 2020/06/28
- [PATCH v6 06/11] mac_oldworld: Rename ppc_heathrow_reset to ppc_heathrow_cpu_reset, BALATON Zoltan, 2020/06/28
- [PATCH v6 05/11] grackle: Set revision in PCI config to match hardware, BALATON Zoltan, 2020/06/28
- [PATCH v6 08/11] mac_oldworld: Add machine ID register, BALATON Zoltan, 2020/06/28
- [PATCH v6 07/11] mac_oldworld: Map macio to expected address at reset,
BALATON Zoltan <=
- [RFC PATCH v6 10/11] WIP macio/cuda: Attempt to add i2c support, BALATON Zoltan, 2020/06/28
- [PATCH v6 11/11] mac_oldworld: Add SPD data to cover RAM, BALATON Zoltan, 2020/06/28
- [PATCH v6 09/11] i2c: Match parameters of i2c_start_transfer and i2c_send_recv, BALATON Zoltan, 2020/06/28