mac_oldworld: use object link to pass heathrow PIC object to macio
Also switch macio_oldworld_realize() over to use it rather than using the pic_mem memory region directly. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
		
							parent
							
								
									e1218e4812
								
							
						
					
					
						commit
						017812df5d
					
				@ -31,6 +31,7 @@
 | 
				
			|||||||
#include "hw/ppc/mac_dbdma.h"
 | 
					#include "hw/ppc/mac_dbdma.h"
 | 
				
			||||||
#include "hw/char/escc.h"
 | 
					#include "hw/char/escc.h"
 | 
				
			||||||
#include "hw/misc/macio/macio.h"
 | 
					#include "hw/misc/macio/macio.h"
 | 
				
			||||||
 | 
					#include "hw/intc/heathrow_pic.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * The mac-io has two interfaces to the ESCC. One is called "escc-legacy",
 | 
					 * The mac-io has two interfaces to the ESCC. One is called "escc-legacy",
 | 
				
			||||||
@ -167,10 +168,10 @@ static void macio_oldworld_realize(PCIDevice *d, Error **errp)
 | 
				
			|||||||
                                sysbus_mmio_get_region(sysbus_dev, 0));
 | 
					                                sysbus_mmio_get_region(sysbus_dev, 0));
 | 
				
			||||||
    pmac_format_nvram_partition(&os->nvram, os->nvram.size);
 | 
					    pmac_format_nvram_partition(&os->nvram, os->nvram.size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (s->pic_mem) {
 | 
					 | 
				
			||||||
    /* Heathrow PIC */
 | 
					    /* Heathrow PIC */
 | 
				
			||||||
        memory_region_add_subregion(&s->bar, 0x00000, s->pic_mem);
 | 
					    sysbus_dev = SYS_BUS_DEVICE(os->pic);
 | 
				
			||||||
    }
 | 
					    memory_region_add_subregion(&s->bar, 0x0,
 | 
				
			||||||
 | 
					                                sysbus_mmio_get_region(sysbus_dev, 0));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* IDE buses */
 | 
					    /* IDE buses */
 | 
				
			||||||
    for (i = 0; i < ARRAY_SIZE(os->ide); i++) {
 | 
					    for (i = 0; i < ARRAY_SIZE(os->ide); i++) {
 | 
				
			||||||
@ -208,6 +209,11 @@ static void macio_oldworld_init(Object *obj)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    qdev_init_gpio_out(DEVICE(obj), os->irqs, ARRAY_SIZE(os->irqs));
 | 
					    qdev_init_gpio_out(DEVICE(obj), os->irqs, ARRAY_SIZE(os->irqs));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    object_property_add_link(obj, "pic", TYPE_HEATHROW,
 | 
				
			||||||
 | 
					                             (Object **) &os->pic,
 | 
				
			||||||
 | 
					                             qdev_prop_allow_set_link_before_realize,
 | 
				
			||||||
 | 
					                             0, NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    object_initialize(&os->nvram, sizeof(os->nvram), TYPE_MACIO_NVRAM);
 | 
					    object_initialize(&os->nvram, sizeof(os->nvram), TYPE_MACIO_NVRAM);
 | 
				
			||||||
    dev = DEVICE(&os->nvram);
 | 
					    dev = DEVICE(&os->nvram);
 | 
				
			||||||
    qdev_prop_set_uint32(dev, "size", 0x2000);
 | 
					    qdev_prop_set_uint32(dev, "size", 0x2000);
 | 
				
			||||||
 | 
				
			|||||||
@ -93,7 +93,7 @@ static void ppc_heathrow_init(MachineState *machine)
 | 
				
			|||||||
    uint32_t kernel_base, initrd_base, cmdline_base = 0;
 | 
					    uint32_t kernel_base, initrd_base, cmdline_base = 0;
 | 
				
			||||||
    int32_t kernel_size, initrd_size;
 | 
					    int32_t kernel_size, initrd_size;
 | 
				
			||||||
    PCIBus *pci_bus;
 | 
					    PCIBus *pci_bus;
 | 
				
			||||||
    PCIDevice *macio;
 | 
					    OldWorldMacIOState *macio;
 | 
				
			||||||
    MACIOIDEState *macio_ide;
 | 
					    MACIOIDEState *macio_ide;
 | 
				
			||||||
    DeviceState *dev, *pic_dev;
 | 
					    DeviceState *dev, *pic_dev;
 | 
				
			||||||
    SysBusDevice *sbd;
 | 
					    SysBusDevice *sbd;
 | 
				
			||||||
@ -271,7 +271,7 @@ static void ppc_heathrow_init(MachineState *machine)
 | 
				
			|||||||
    ide_drive_get(hd, ARRAY_SIZE(hd));
 | 
					    ide_drive_get(hd, ARRAY_SIZE(hd));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* MacIO */
 | 
					    /* MacIO */
 | 
				
			||||||
    macio = pci_create(pci_bus, -1, TYPE_OLDWORLD_MACIO);
 | 
					    macio = OLDWORLD_MACIO(pci_create(pci_bus, -1, TYPE_OLDWORLD_MACIO));
 | 
				
			||||||
    dev = DEVICE(macio);
 | 
					    dev = DEVICE(macio);
 | 
				
			||||||
    qdev_connect_gpio_out(dev, 0, pic[0x12]); /* CUDA */
 | 
					    qdev_connect_gpio_out(dev, 0, pic[0x12]); /* CUDA */
 | 
				
			||||||
    qdev_connect_gpio_out(dev, 1, pic[0x10]); /* ESCC-B */
 | 
					    qdev_connect_gpio_out(dev, 1, pic[0x10]); /* ESCC-B */
 | 
				
			||||||
@ -281,8 +281,10 @@ static void ppc_heathrow_init(MachineState *machine)
 | 
				
			|||||||
    qdev_connect_gpio_out(dev, 5, pic[0x0E]); /* IDE-1 */
 | 
					    qdev_connect_gpio_out(dev, 5, pic[0x0E]); /* IDE-1 */
 | 
				
			||||||
    qdev_connect_gpio_out(dev, 6, pic[0x03]); /* IDE-1 DMA */
 | 
					    qdev_connect_gpio_out(dev, 6, pic[0x03]); /* IDE-1 DMA */
 | 
				
			||||||
    qdev_prop_set_uint64(dev, "frequency", tbfreq);
 | 
					    qdev_prop_set_uint64(dev, "frequency", tbfreq);
 | 
				
			||||||
 | 
					    object_property_set_link(OBJECT(macio), OBJECT(pic_dev), "pic",
 | 
				
			||||||
 | 
					                             &error_abort);
 | 
				
			||||||
    sbd = SYS_BUS_DEVICE(pic_dev);
 | 
					    sbd = SYS_BUS_DEVICE(pic_dev);
 | 
				
			||||||
    macio_init(macio, sysbus_mmio_get_region(sbd, 0));
 | 
					    macio_init(PCI_DEVICE(macio), sysbus_mmio_get_region(sbd, 0));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    macio_ide = MACIO_IDE(object_resolve_path_component(OBJECT(macio),
 | 
					    macio_ide = MACIO_IDE(object_resolve_path_component(OBJECT(macio),
 | 
				
			||||||
                                                        "ide[0]"));
 | 
					                                                        "ide[0]"));
 | 
				
			||||||
 | 
				
			|||||||
@ -26,6 +26,7 @@
 | 
				
			|||||||
#ifndef MACIO_H
 | 
					#ifndef MACIO_H
 | 
				
			||||||
#define MACIO_H
 | 
					#define MACIO_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "hw/intc/heathrow_pic.h"
 | 
				
			||||||
#include "hw/misc/macio/cuda.h"
 | 
					#include "hw/misc/macio/cuda.h"
 | 
				
			||||||
#include "hw/ppc/mac_dbdma.h"
 | 
					#include "hw/ppc/mac_dbdma.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -54,6 +55,7 @@ typedef struct OldWorldMacIOState {
 | 
				
			|||||||
    MacIOState parent_obj;
 | 
					    MacIOState parent_obj;
 | 
				
			||||||
    /*< public >*/
 | 
					    /*< public >*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    HeathrowState *pic;
 | 
				
			||||||
    qemu_irq irqs[7];
 | 
					    qemu_irq irqs[7];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    MacIONVRAMState nvram;
 | 
					    MacIONVRAMState nvram;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user