[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 5/5] mac_oldworld: Map macio to expected address at reset
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v2 5/5] mac_oldworld: Map macio to expected address at reset |
Date: |
Sat, 13 Jun 2020 20:14:56 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 |
On 6/13/20 3:36 PM, BALATON Zoltan wrote:
> 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 | 17 +++++++++++++++--
> 2 files changed, 27 insertions(+), 2 deletions(-)
>
> diff --git a/hw/ppc/mac.h b/hw/ppc/mac.h
> index 6af87d1fa0..35a5f21163 100644
> --- a/hw/ppc/mac.h
> +++ b/hw/ppc/mac.h
> @@ -57,6 +57,18 @@
> #define OLDWORLD_IDE1_IRQ 0xe
> #define OLDWORLD_IDE1_DMA_IRQ 0x3
>
> +/* 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_pci;
> +} 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 9138752ccb..fa9527410d 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, PCI_COMMAND, PCI_COMMAND_MEMORY,
> 2);
> + pci_default_write_config(m->macio_pci, PCI_BASE_ADDRESS_0, 0xf3000000,
> 4);
Hmm either this should be the default reset state of the device,
or we miss a 'BIOS' boot code that sets this state before you can
run your code.
> +}
> +
> static void ppc_heathrow_cpu_reset(void *opaque)
> {
> PowerPCCPU *cpu = opaque;
> @@ -91,6 +100,7 @@ const MemoryRegionOps machine_id_reg_ops = {
>
> static void ppc_heathrow_init(MachineState *machine)
> {
> + HeathrowMachineState *hm = HEATHROW_MACHINE(machine);
> ram_addr_t ram_size = machine->ram_size;
> const char *kernel_filename = machine->kernel_filename;
> const char *kernel_cmdline = machine->kernel_cmdline;
> @@ -298,7 +308,8 @@ static void ppc_heathrow_init(MachineState *machine)
> ide_drive_get(hd, ARRAY_SIZE(hd));
>
> /* MacIO */
> - macio = OLDWORLD_MACIO(pci_create(pci_bus, -1, TYPE_OLDWORLD_MACIO));
> + hm->macio_pci = pci_create(pci_bus, -1, TYPE_OLDWORLD_MACIO);
> + macio = OLDWORLD_MACIO(hm->macio_pci);
> dev = DEVICE(macio);
> qdev_prop_set_uint64(dev, "frequency", tbfreq);
> object_property_set_link(OBJECT(macio), OBJECT(pic_dev), "pic",
> @@ -450,6 +461,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
> @@ -466,9 +478,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 },
> { }
>
- [PATCH v2 0/5] Mac Old World ROM experiment, BALATON Zoltan, 2020/06/13
- [PATCH v2 2/5] mac_oldworld: Add machine ID register, BALATON Zoltan, 2020/06/13
- [PATCH v2 1/5] mac_oldworld: Allow loading binary ROM image, BALATON Zoltan, 2020/06/13
- [PATCH v2 4/5] mac_oldworld: Rename ppc_heathrow_reset reset to ppc_heathrow_cpu_reset, BALATON Zoltan, 2020/06/13
- [PATCH v2 5/5] mac_oldworld: Map macio to expected address at reset, BALATON Zoltan, 2020/06/13
- [PATCH v2 3/5] grackle: Set revision in PCI config to match hardware, BALATON Zoltan, 2020/06/13
- Re: [PATCH v2 0/5] Mac Old World ROM experiment, BALATON Zoltan, 2020/06/13