xilinx.h: Error check when setting links
Assert that the ethernet and dma controller are sucessfully linked to their peers. Signed-off-by: Peter A. G. Crosthwaite <peter.crosthwaite@petalogix.com>
This commit is contained in:
		
							parent
							
								
									919f89f44c
								
							
						
					
					
						commit
						4b5e52101f
					
				
							
								
								
									
										10
									
								
								hw/xilinx.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								hw/xilinx.h
									
									
									
									
									
								
							@ -55,13 +55,16 @@ xilinx_axiethernet_create(NICInfo *nd, StreamSlave *peer,
 | 
				
			|||||||
                          int txmem, int rxmem)
 | 
					                          int txmem, int rxmem)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    DeviceState *dev;
 | 
					    DeviceState *dev;
 | 
				
			||||||
 | 
					    Error *errp = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    qemu_check_nic_model(nd, "xlnx.axi-ethernet");
 | 
					    qemu_check_nic_model(nd, "xlnx.axi-ethernet");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    dev = qdev_create(NULL, "xlnx.axi-ethernet");
 | 
					    dev = qdev_create(NULL, "xlnx.axi-ethernet");
 | 
				
			||||||
    qdev_set_nic_properties(dev, nd);
 | 
					    qdev_set_nic_properties(dev, nd);
 | 
				
			||||||
    qdev_prop_set_uint32(dev, "rxmem", rxmem);
 | 
					    qdev_prop_set_uint32(dev, "rxmem", rxmem);
 | 
				
			||||||
    qdev_prop_set_uint32(dev, "txmem", txmem);
 | 
					    qdev_prop_set_uint32(dev, "txmem", txmem);
 | 
				
			||||||
    object_property_set_link(OBJECT(dev), OBJECT(peer), "tx_dev", NULL);
 | 
					    object_property_set_link(OBJECT(dev), OBJECT(peer), "tx_dev", &errp);
 | 
				
			||||||
 | 
					    assert_no_error(errp);
 | 
				
			||||||
    qdev_init_nofail(dev);
 | 
					    qdev_init_nofail(dev);
 | 
				
			||||||
    sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
 | 
					    sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
 | 
				
			||||||
    sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
 | 
					    sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
 | 
				
			||||||
@ -74,8 +77,11 @@ xilinx_axiethernetdma_init(DeviceState *dev, StreamSlave *peer,
 | 
				
			|||||||
                           target_phys_addr_t base, qemu_irq irq,
 | 
					                           target_phys_addr_t base, qemu_irq irq,
 | 
				
			||||||
                           qemu_irq irq2, int freqhz)
 | 
					                           qemu_irq irq2, int freqhz)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    Error *errp = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    qdev_prop_set_uint32(dev, "freqhz", freqhz);
 | 
					    qdev_prop_set_uint32(dev, "freqhz", freqhz);
 | 
				
			||||||
    object_property_set_link(OBJECT(dev), OBJECT(peer), "tx_dev", NULL);
 | 
					    object_property_set_link(OBJECT(dev), OBJECT(peer), "tx_dev", &errp);
 | 
				
			||||||
 | 
					    assert_no_error(errp);
 | 
				
			||||||
    qdev_init_nofail(dev);
 | 
					    qdev_init_nofail(dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
 | 
					    sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user