18c2aff776a775d34a4c9893a4c72e0434d68e36artem/***************************************************************************
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * devinfo_pci.c : PCI devices
112cd14a18db3bd3fac4ff92c4117b51ddd339abqz * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Use is subject to license terms.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Licensed under the Academic Free License version 2.1
18c2aff776a775d34a4c9893a4c72e0434d68e36artem **************************************************************************/
92f381329ebf1c2209df9608670666b32b291e05artem#pragma ident "%Z%%M% %I% %E% SMI"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "../osspec.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "../logger.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "../hald.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "../hald_dbus.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "../util.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "../ids.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artemHalDevice *devinfo_pci_add (HalDevice *parent, di_node_t node, char *devfs_path, char *device_type);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemHalDevice *devinfo_pci_add (HalDevice *parent, di_node_t node, char *devfs_path, char *device_type)
112cd14a18db3bd3fac4ff92c4117b51ddd339abqz s = (char *)hal_device_property_get_string (parent, "info.subsystem");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem devinfo_set_default_properties (d, parent, node, devfs_path);
112cd14a18db3bd3fac4ff92c4117b51ddd339abqz hal_device_property_set_string (d, "info.subsystem", "pci");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (di_prop_lookup_ints (DDI_DEV_T_ANY, node, "vendor-id", &i) > 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (di_prop_lookup_ints (DDI_DEV_T_ANY, node, "device-id", &i) > 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (di_prop_lookup_ints (DDI_DEV_T_ANY, node, "subsystem-vendor-id", &i) > 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (di_prop_lookup_ints (DDI_DEV_T_ANY, node, "subsystem-id", &i) > 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_int (d, "pci.vendor_id", vid);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_int (d, "pci.product_id", pid);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_int (d, "pci.subsys_vendor_id", svid);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_int (d, "pci.subsys_product_id", spid);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem ids_find_pci (hal_device_property_get_int (d, "pci.vendor_id"),
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_get_int (d, "pci.subsys_vendor_id"),
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_get_int (d, "pci.subsys_product_id"),
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_string (d, "pci.vendor", vendor_name);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_string (d, "info.vendor", vendor_name);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_string (d, "pci.product", product_name);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_string (d, "info.product", product_name);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_string (d, "pci.subsys_vendor",
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_string (d, "pci.subsys_product", subsys_product_name);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem devinfo_add_enqueue (d, devfs_path, &devinfo_pci_handler);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (d);