Lines Matching refs:d
82 sysfs_obj_name(struct pci_dev *d, char *object, char *buf) in sysfs_obj_name() argument
85 sysfs_name(d->access), d->domain, d->bus, d->dev, d->func, object); in sysfs_obj_name()
87 d->access->error("File name too long"); in sysfs_obj_name()
93 sysfs_get_string(struct pci_dev *d, char *object, char *buf, int mandatory) in sysfs_get_string() argument
95 struct pci_access *a = d->access; in sysfs_get_string()
100 sysfs_obj_name(d, object, namebuf); in sysfs_get_string()
126 sysfs_deref_link(struct pci_dev *d, char *link_name) in sysfs_deref_link() argument
130 sysfs_obj_name(d, link_name, path); in sysfs_deref_link()
136 sysfs_obj_name(d, "", path); in sysfs_deref_link()
144 sysfs_get_value(struct pci_dev *d, char *object, int mandatory) in sysfs_get_value() argument
148 if (sysfs_get_string(d, object, buf, mandatory)) in sysfs_get_value()
155 sysfs_get_resources(struct pci_dev *d) in sysfs_get_resources() argument
157 struct pci_access *a = d->access; in sysfs_get_resources()
165 sysfs_obj_name(d, "resource", namebuf); in sysfs_get_resources()
182 d->flags[i] = flags; in sysfs_get_resources()
184 d->base_addr[i] = start | flags; in sysfs_get_resources()
185 d->size[i] = size; in sysfs_get_resources()
190 d->rom_flags = flags; in sysfs_get_resources()
192 d->rom_base_addr = start | flags; in sysfs_get_resources()
193 d->rom_size = size; in sysfs_get_resources()
222 d->bridge_flags[i] = lines[offset+i].flags; in sysfs_get_resources()
223 d->bridge_base_addr[i] = lines[offset+i].base_addr; in sysfs_get_resources()
224 d->bridge_size[i] = lines[offset+i].size; in sysfs_get_resources()
230 clear_fill(d, PCI_FILL_BASES | PCI_FILL_SIZES | PCI_FILL_IO_FLAGS); in sysfs_get_resources()
232 clear_fill(d, PCI_FILL_ROM_BASE); in sysfs_get_resources()
234 clear_fill(d, PCI_FILL_BRIDGE_BASES); in sysfs_get_resources()
252 struct pci_dev *d; in sysfs_scan() local
259 d = pci_alloc_dev(a); in sysfs_scan()
267 d->domain = dom; in sysfs_scan()
268 d->bus = bus; in sysfs_scan()
269 d->dev = dev; in sysfs_scan()
270 d->func = func; in sysfs_scan()
271 pci_link_dev(a, d); in sysfs_scan()
297 struct pci_dev *d; in sysfs_fill_slots() local
327 for (d = a->devices; d; d = d->next) in sysfs_fill_slots()
328 if (dom == (unsigned)d->domain && bus == d->bus && dev == d->dev && !d->phy_slot) in sysfs_fill_slots()
329 d->phy_slot = pci_set_property(d, PCI_FILL_PHYS_SLOT, entry->d_name); in sysfs_fill_slots()
337 sysfs_fill_info(struct pci_dev *d, unsigned int flags) in sysfs_fill_info() argument
341 if (!d->access->buscentric) in sysfs_fill_info()
348 if (want_fill(d, flags, PCI_FILL_IDENT)) in sysfs_fill_info()
350 d->vendor_id = sysfs_get_value(d, "vendor", 1); in sysfs_fill_info()
351 d->device_id = sysfs_get_value(d, "device", 1); in sysfs_fill_info()
353 want_class = want_fill(d, flags, PCI_FILL_CLASS); in sysfs_fill_info()
354 want_class_ext = want_fill(d, flags, PCI_FILL_CLASS_EXT); in sysfs_fill_info()
357 value = sysfs_get_value(d, "class", 1); in sysfs_fill_info()
359 d->device_class = value >> 8; in sysfs_fill_info()
362 d->prog_if = value & 0xff; in sysfs_fill_info()
363 value = sysfs_get_value(d, "revision", 0); in sysfs_fill_info()
365 value = pci_read_byte(d, PCI_REVISION_ID); in sysfs_fill_info()
367 d->rev_id = value; in sysfs_fill_info()
370 if (want_fill(d, flags, PCI_FILL_SUBSYS)) in sysfs_fill_info()
372 value = sysfs_get_value(d, "subsystem_vendor", 0); in sysfs_fill_info()
375 d->subsys_vendor_id = value; in sysfs_fill_info()
376 value = sysfs_get_value(d, "subsystem_device", 0); in sysfs_fill_info()
378 d->subsys_id = value; in sysfs_fill_info()
381 clear_fill(d, PCI_FILL_SUBSYS); in sysfs_fill_info()
383 if (want_fill(d, flags, PCI_FILL_IRQ)) in sysfs_fill_info()
384 d->irq = sysfs_get_value(d, "irq", 1); in sysfs_fill_info()
385 …if (want_fill(d, flags, PCI_FILL_BASES | PCI_FILL_ROM_BASE | PCI_FILL_SIZES | PCI_FILL_IO_FLAGS | … in sysfs_fill_info()
386 sysfs_get_resources(d); in sysfs_fill_info()
387 if (want_fill(d, flags, PCI_FILL_PARENT)) in sysfs_fill_info()
395 sysfs_obj_name(d, "..", path_rel); in sysfs_fill_info()
402 for (parent = d->access->devices; parent; parent = parent->next) in sysfs_fill_info()
419 d->parent = parent; in sysfs_fill_info()
421 clear_fill(d, PCI_FILL_PARENT); in sysfs_fill_info()
428 if (want_fill(d, flags, PCI_FILL_PHYS_SLOT)) in sysfs_fill_info()
431 sysfs_fill_slots(d->access); in sysfs_fill_info()
432 for (pd = d->access->devices; pd; pd = pd->next) in sysfs_fill_info()
436 if (want_fill(d, flags, PCI_FILL_MODULE_ALIAS)) in sysfs_fill_info()
439 if (sysfs_get_string(d, "modalias", buf, 0)) in sysfs_fill_info()
440 d->module_alias = pci_set_property(d, PCI_FILL_MODULE_ALIAS, buf); in sysfs_fill_info()
443 if (want_fill(d, flags, PCI_FILL_LABEL)) in sysfs_fill_info()
446 if (sysfs_get_string(d, "label", buf, 0)) in sysfs_fill_info()
447 d->label = pci_set_property(d, PCI_FILL_LABEL, buf); in sysfs_fill_info()
450 if (want_fill(d, flags, PCI_FILL_NUMA_NODE)) in sysfs_fill_info()
451 d->numa_node = sysfs_get_value(d, "numa_node", 0); in sysfs_fill_info()
453 if (want_fill(d, flags, PCI_FILL_IOMMU_GROUP)) in sysfs_fill_info()
455 char *group_link = sysfs_deref_link(d, "iommu_group"); in sysfs_fill_info()
458 pci_set_property(d, PCI_FILL_IOMMU_GROUP, basename(group_link)); in sysfs_fill_info()
463 if (want_fill(d, flags, PCI_FILL_DT_NODE)) in sysfs_fill_info()
465 char *node = sysfs_deref_link(d, "of_node"); in sysfs_fill_info()
468 pci_set_property(d, PCI_FILL_DT_NODE, node); in sysfs_fill_info()
473 if (want_fill(d, flags, PCI_FILL_DRIVER)) in sysfs_fill_info()
475 char *driver_path = sysfs_deref_link(d, "driver"); in sysfs_fill_info()
480 pci_set_property(d, PCI_FILL_DRIVER, driver); in sysfs_fill_info()
484 clear_fill(d, PCI_FILL_DRIVER); in sysfs_fill_info()
487 if (want_fill(d, flags, PCI_FILL_RCD_LNK)) in sysfs_fill_info()
490 if (sysfs_get_string(d, "rcd_link_cap", buf, 0)) in sysfs_fill_info()
491 d->rcd_link_cap = strtoul(buf, NULL, 16); in sysfs_fill_info()
492 if (sysfs_get_string(d, "rcd_link_ctrl", buf, 0)) in sysfs_fill_info()
493 d->rcd_link_ctrl = strtoul(buf, NULL, 16); in sysfs_fill_info()
494 if (sysfs_get_string(d, "rcd_link_status", buf, 0)) in sysfs_fill_info()
495 d->rcd_link_status = strtoul(buf, NULL, 16); in sysfs_fill_info()
498 pci_generic_fill_info(d, flags); in sysfs_fill_info()
510 sysfs_setup(struct pci_dev *d, int intent) in sysfs_setup() argument
512 struct pci_access *a = d->access; in sysfs_setup()
515 if (a->cached_dev != d || (intent == SETUP_WRITE_CONFIG && !a->fd_rw)) in sysfs_setup()
518 a->cached_dev = d; in sysfs_setup()
525 sysfs_obj_name(d, "vpd", namebuf); in sysfs_setup()
534 sysfs_obj_name(d, "config", namebuf); in sysfs_setup()
543 static int sysfs_read(struct pci_dev *d, int pos, byte *buf, int len) in sysfs_read() argument
545 int fd = sysfs_setup(d, SETUP_READ_CONFIG); in sysfs_read()
553 d->access->warning("sysfs_read: read failed: %s", strerror(errno)); in sysfs_read()
561 static int sysfs_write(struct pci_dev *d, int pos, byte *buf, int len) in sysfs_write() argument
563 int fd = sysfs_setup(d, SETUP_WRITE_CONFIG); in sysfs_write()
571 d->access->warning("sysfs_write: write failed: %s", strerror(errno)); in sysfs_write()
576 …d->access->warning("sysfs_write: tried to write %d bytes at %d, but only %d succeeded", len, pos, … in sysfs_write()
582 static int sysfs_read_vpd(struct pci_dev *d, int pos, byte *buf, int len) in sysfs_read_vpd() argument
584 int fd = sysfs_setup(d, SETUP_READ_VPD); in sysfs_read_vpd()
592 d->access->warning("sysfs_read_vpd: read failed: %s", strerror(errno)); in sysfs_read_vpd()
600 static void sysfs_cleanup_dev(struct pci_dev *d) in sysfs_cleanup_dev() argument
602 struct pci_access *a = d->access; in sysfs_cleanup_dev()
604 if (a->cached_dev == d) in sysfs_cleanup_dev()