static int ioh3420_initfn(PCIDevice *d)

{

    PCIBridge* br = DO_UPCAST(PCIBridge, dev, d);

    PCIEPort *p = DO_UPCAST(PCIEPort, br, br);

    PCIESlot *s = DO_UPCAST(PCIESlot, port, p);

    int rc;

    int tmp;



    rc = pci_bridge_initfn(d);

    if (rc < 0) {

        return rc;

    }



    d->config[PCI_REVISION_ID] = PCI_DEVICE_ID_IOH_REV;

    pcie_port_init_reg(d);



    pci_config_set_vendor_id(d->config, PCI_VENDOR_ID_INTEL);

    pci_config_set_device_id(d->config, PCI_DEVICE_ID_IOH_EPORT);



    rc = pci_bridge_ssvid_init(d, IOH_EP_SSVID_OFFSET,

                               IOH_EP_SSVID_SVID, IOH_EP_SSVID_SSID);

    if (rc < 0) {

        goto err_bridge;

    }

    rc = msi_init(d, IOH_EP_MSI_OFFSET, IOH_EP_MSI_NR_VECTOR,

                  IOH_EP_MSI_SUPPORTED_FLAGS & PCI_MSI_FLAGS_64BIT,

                  IOH_EP_MSI_SUPPORTED_FLAGS & PCI_MSI_FLAGS_MASKBIT);

    if (rc < 0) {

        goto err_bridge;

    }

    rc = pcie_cap_init(d, IOH_EP_EXP_OFFSET, PCI_EXP_TYPE_ROOT_PORT, p->port);

    if (rc < 0) {

        goto err_msi;

    }

    pcie_cap_deverr_init(d);

    pcie_cap_slot_init(d, s->slot);

    pcie_chassis_create(s->chassis);

    rc = pcie_chassis_add_slot(s);

    if (rc < 0) {

        goto err_pcie_cap;

        return rc;

    }

    pcie_cap_root_init(d);

    rc = pcie_aer_init(d, IOH_EP_AER_OFFSET);

    if (rc < 0) {

        goto err;

    }

    pcie_aer_root_init(d);

    ioh3420_aer_vector_update(d);

    return 0;



err:

    pcie_chassis_del_slot(s);

err_pcie_cap:

    pcie_cap_exit(d);

err_msi:

    msi_uninit(d);

err_bridge:

    tmp = pci_bridge_exitfn(d);

    assert(!tmp);

    return rc;

}

static int ioh3420_initfn(PCIDevice *d)

{

    PCIBridge* br = DO_UPCAST(PCIBridge, dev, d);

    PCIEPort *p = DO_UPCAST(PCIEPort, br, br);

    PCIESlot *s = DO_UPCAST(PCIESlot, port, p);

    int rc;

    int tmp;



    rc = pci_bridge_initfn(d);

    if (rc < 0) {

        return rc;

    }



    d->config[PCI_REVISION_ID] = PCI_DEVICE_ID_IOH_REV;

    pcie_port_init_reg(d);



    pci_config_set_vendor_id(d->config, PCI_VENDOR_ID_INTEL);

    pci_config_set_device_id(d->config, PCI_DEVICE_ID_IOH_EPORT);



    rc = pci_bridge_ssvid_init(d, IOH_EP_SSVID_OFFSET,

                               IOH_EP_SSVID_SVID, IOH_EP_SSVID_SSID);

    if (rc < 0) {

        goto err_bridge;

    }

    rc = msi_init(d, IOH_EP_MSI_OFFSET, IOH_EP_MSI_NR_VECTOR,

                  IOH_EP_MSI_SUPPORTED_FLAGS & PCI_MSI_FLAGS_64BIT,

                  IOH_EP_MSI_SUPPORTED_FLAGS & PCI_MSI_FLAGS_MASKBIT);

    if (rc < 0) {

        goto err_bridge;

    }

    rc = pcie_cap_init(d, IOH_EP_EXP_OFFSET, PCI_EXP_TYPE_ROOT_PORT, p->port);

    if (rc < 0) {

        goto err_msi;

    }

    pcie_cap_deverr_init(d);

    pcie_cap_slot_init(d, s->slot);

    pcie_chassis_create(s->chassis);

    rc = pcie_chassis_add_slot(s);

    if (rc < 0) {

        goto err_pcie_cap;

        return rc;

    }

    pcie_cap_root_init(d);

    rc = pcie_aer_init(d, IOH_EP_AER_OFFSET);

    if (rc < 0) {

        goto err;

    }

    pcie_aer_root_init(d);

    ioh3420_aer_vector_update(d);

    return 0;



err:

    pcie_chassis_del_slot(s);

err_pcie_cap:

    pcie_cap_exit(d);

err_msi:

    msi_uninit(d);

err_bridge:

    tmp = pci_bridge_exitfn(d);

    assert(!tmp);

    return rc;

}

static int FUNC_0(PCIDevice *VAR_0)

{

    PCIBridge* br = DO_UPCAST(PCIBridge, dev, VAR_0);

    PCIEPort *p = DO_UPCAST(PCIEPort, br, br);

    PCIESlot *s = DO_UPCAST(PCIESlot, port, p);

    int VAR_1;

    int VAR_2;



    VAR_1 = pci_bridge_initfn(VAR_0);

    if (VAR_1 < 0) {

        return VAR_1;

    }



    VAR_0->config[PCI_REVISION_ID] = PCI_DEVICE_ID_IOH_REV;

    pcie_port_init_reg(VAR_0);



    pci_config_set_vendor_id(VAR_0->config, PCI_VENDOR_ID_INTEL);

    pci_config_set_device_id(VAR_0->config, PCI_DEVICE_ID_IOH_EPORT);



    VAR_1 = pci_bridge_ssvid_init(VAR_0, IOH_EP_SSVID_OFFSET,

                               IOH_EP_SSVID_SVID, IOH_EP_SSVID_SSID);

    if (VAR_1 < 0) {

        goto err_bridge;

    }

    VAR_1 = msi_init(VAR_0, IOH_EP_MSI_OFFSET, IOH_EP_MSI_NR_VECTOR,

                  IOH_EP_MSI_SUPPORTED_FLAGS & PCI_MSI_FLAGS_64BIT,

                  IOH_EP_MSI_SUPPORTED_FLAGS & PCI_MSI_FLAGS_MASKBIT);

    if (VAR_1 < 0) {

        goto err_bridge;

    }

    VAR_1 = pcie_cap_init(VAR_0, IOH_EP_EXP_OFFSET, PCI_EXP_TYPE_ROOT_PORT, p->port);

    if (VAR_1 < 0) {

        goto err_msi;

    }

    pcie_cap_deverr_init(VAR_0);

    pcie_cap_slot_init(VAR_0, s->slot);

    pcie_chassis_create(s->chassis);

    VAR_1 = pcie_chassis_add_slot(s);

    if (VAR_1 < 0) {

        goto err_pcie_cap;

        return VAR_1;

    }

    pcie_cap_root_init(VAR_0);

    VAR_1 = pcie_aer_init(VAR_0, IOH_EP_AER_OFFSET);

    if (VAR_1 < 0) {

        goto err;

    }

    pcie_aer_root_init(VAR_0);

    ioh3420_aer_vector_update(VAR_0);

    return 0;



err:

    pcie_chassis_del_slot(s);

err_pcie_cap:

    pcie_cap_exit(VAR_0);

err_msi:

    msi_uninit(VAR_0);

err_bridge:

    VAR_2 = pci_bridge_exitfn(VAR_0);

    assert(!VAR_2);

    return VAR_1;

}

static int FUNC_0(PCIDevice *VAR_0)
{ PCIBridge* br = DO_UPCAST(PCIBridge, dev, VAR_0); PCIEPort *p = DO_UPCAST(PCIEPort, br, br); PCIESlot *s = DO_UPCAST(PCIESlot, port, p); int VAR_1; int VAR_2; VAR_1 = pci_bridge_initfn(VAR_0); if (VAR_1 < 0) { return VAR_1; } VAR_0->config[PCI_REVISION_ID] = PCI_DEVICE_ID_IOH_REV; pcie_port_init_reg(VAR_0); pci_config_set_vendor_id(VAR_0->config, PCI_VENDOR_ID_INTEL); pci_config_set_device_id(VAR_0->config, PCI_DEVICE_ID_IOH_EPORT); VAR_1 = pci_bridge_ssvid_init(VAR_0, IOH_EP_SSVID_OFFSET,
IOH_EP_SSVID_SVID, IOH_EP_SSVID_SSID); if (VAR_1 < 0) { goto err_bridge; } VAR_1 = msi_init(VAR_0, IOH_EP_MSI_OFFSET, IOH_EP_MSI_NR_VECTOR,
IOH_EP_MSI_SUPPORTED_FLAGS & PCI_MSI_FLAGS_64BIT,
IOH_EP_MSI_SUPPORTED_FLAGS & PCI_MSI_FLAGS_MASKBIT); if (VAR_1 < 0) { goto err_bridge; } VAR_1 = pcie_cap_init(VAR_0, IOH_EP_EXP_OFFSET, PCI_EXP_TYPE_ROOT_PORT, p->port); if (VAR_1 < 0) { goto err_msi; } pcie_cap_deverr_init(VAR_0); pcie_cap_slot_init(VAR_0, s->slot); pcie_chassis_create(s->chassis); VAR_1 = pcie_chassis_add_slot(s); if (VAR_1 < 0) { goto err_pcie_cap; return VAR_1; } pcie_cap_root_init(VAR_0); VAR_1 = pcie_aer_init(VAR_0, IOH_EP_AER_OFFSET); if (VAR_1 < 0) { goto err; } pcie_aer_root_init(VAR_0); ioh3420_aer_vector_update(VAR_0); return 0; err:
pcie_chassis_del_slot(s); err_pcie_cap:
pcie_cap_exit(VAR_0); err_msi:
msi_uninit(VAR_0); err_bridge:
VAR_2 = pci_bridge_exitfn(VAR_0); assert(!VAR_2); return VAR_1; }