Esempio n. 1
0
pciio_info_t
pciio_device_info_new(
    pciio_info_t pciio_info,
    devfs_handle_t master,
    pciio_slot_t slot,
    pciio_function_t func,
    pciio_vendor_id_t vendor_id,
    pciio_device_id_t device_id)
{
    if (!pciio_info)
        NEW(pciio_info);
    ASSERT(pciio_info != NULL);

    pciio_info->c_slot = slot;
    pciio_info->c_func = func;
    pciio_info->c_vendor = vendor_id;
    pciio_info->c_device = device_id;
    pciio_info->c_master = master;
    pciio_info->c_mfast = hwgraph_fastinfo_get(master);
    pciio_info->c_pops = pciio_provider_fns_get(master);
    pciio_info->c_efunc = 0;
    pciio_info->c_einfo = 0;

    return pciio_info;
}
Esempio n. 2
0
static pciio_provider_t *
pciio_to_provider_fns(devfs_handle_t dev)
{
    pciio_info_t            card_info;
    pciio_provider_t       *provider_fns;

    /*
     * We're called with two types of vertices, one is
     * the bridge vertex (ends with "pci") and the other is the
     * pci slot vertex (ends with "pci/[0-8]").  For the first type
     * we need to get the provider from the PFUNCS label.  For
     * the second we get it from fastinfo/c_pops.
     */
    provider_fns = pciio_provider_fns_get(dev);
    if (provider_fns == NULL) {
        card_info = pciio_info_get(dev);
        if (card_info != NULL) {
            provider_fns = pciio_info_pops_get(card_info);
        }
    }

    if (provider_fns == NULL)
#if defined(SUPPORT_PRINTING_V_FORMAT)
        PRINT_PANIC("%v: provider_fns == NULL", dev);
#else
        PRINT_PANIC("0x%x: provider_fns == NULL", dev);
#endif

    return provider_fns;

}
Esempio n. 3
0
pciio_provider_t *
pciio_to_provider_fns(vertex_hdl_t dev)
{
    pciio_info_t            card_info;
    pciio_provider_t       *provider_fns;

    /*
     * We're called with two types of vertices, one is
     * the bridge vertex (ends with "pci") and the other is the
     * pci slot vertex (ends with "pci/[0-8]").  For the first type
     * we need to get the provider from the PFUNCS label.  For
     * the second we get it from fastinfo/c_pops.
     */
    provider_fns = pciio_provider_fns_get(dev);
    if (provider_fns == NULL) {
	card_info = pciio_info_get(dev);
	if (card_info != NULL) {
		provider_fns = pciio_info_pops_get(card_info);
	}
    }

    if (provider_fns == NULL) {
	char devname[MAXDEVNAME];
	panic("%s: provider_fns == NULL", vertex_to_name(dev, devname, MAXDEVNAME));
    }
    return provider_fns;

}