Lines Matching refs:vpd

42 	if (!dev->vpd || !dev->vpd->ops)  in pci_read_vpd()
44 return dev->vpd->ops->read(dev, pos, count, buf); in pci_read_vpd()
57 if (!dev->vpd || !dev->vpd->ops) in pci_write_vpd()
59 return dev->vpd->ops->write(dev, pos, count, buf); in pci_write_vpd()
70 if (!dev->vpd || !dev->vpd->ops) in pci_set_vpd_size()
72 return dev->vpd->ops->set_size(dev, len); in pci_set_vpd_size()
140 struct pci_vpd *vpd = dev->vpd; in pci_vpd_wait() local
146 if (!vpd->busy) in pci_vpd_wait()
150 ret = pci_user_read_config_word(dev, vpd->cap + PCI_VPD_ADDR, in pci_vpd_wait()
155 if ((status & PCI_VPD_ADDR_F) == vpd->flag) { in pci_vpd_wait()
156 vpd->busy = 0; in pci_vpd_wait()
178 struct pci_vpd *vpd = dev->vpd; in pci_vpd_read() local
186 if (!vpd->valid) { in pci_vpd_read()
187 vpd->valid = 1; in pci_vpd_read()
188 vpd->len = pci_vpd_size(dev, vpd->len); in pci_vpd_read()
191 if (vpd->len == 0) in pci_vpd_read()
194 if (pos > vpd->len) in pci_vpd_read()
197 if (end > vpd->len) { in pci_vpd_read()
198 end = vpd->len; in pci_vpd_read()
202 if (mutex_lock_killable(&vpd->lock)) in pci_vpd_read()
213 ret = pci_user_write_config_word(dev, vpd->cap + PCI_VPD_ADDR, in pci_vpd_read()
217 vpd->busy = 1; in pci_vpd_read()
218 vpd->flag = PCI_VPD_ADDR_F; in pci_vpd_read()
223 ret = pci_user_read_config_dword(dev, vpd->cap + PCI_VPD_DATA, &val); in pci_vpd_read()
238 mutex_unlock(&vpd->lock); in pci_vpd_read()
245 struct pci_vpd *vpd = dev->vpd; in pci_vpd_write() local
253 if (!vpd->valid) { in pci_vpd_write()
254 vpd->valid = 1; in pci_vpd_write()
255 vpd->len = pci_vpd_size(dev, vpd->len); in pci_vpd_write()
258 if (vpd->len == 0) in pci_vpd_write()
261 if (end > vpd->len) in pci_vpd_write()
264 if (mutex_lock_killable(&vpd->lock)) in pci_vpd_write()
279 ret = pci_user_write_config_dword(dev, vpd->cap + PCI_VPD_DATA, val); in pci_vpd_write()
282 ret = pci_user_write_config_word(dev, vpd->cap + PCI_VPD_ADDR, in pci_vpd_write()
287 vpd->busy = 1; in pci_vpd_write()
288 vpd->flag = 0; in pci_vpd_write()
296 mutex_unlock(&vpd->lock); in pci_vpd_write()
302 struct pci_vpd *vpd = dev->vpd; in pci_vpd_set_size() local
307 vpd->valid = 1; in pci_vpd_set_size()
308 vpd->len = len; in pci_vpd_set_size()
371 struct pci_vpd *vpd; in pci_vpd_init() local
378 vpd = kzalloc(sizeof(*vpd), GFP_ATOMIC); in pci_vpd_init()
379 if (!vpd) in pci_vpd_init()
382 vpd->len = PCI_VPD_MAX_SIZE; in pci_vpd_init()
384 vpd->ops = &pci_vpd_f0_ops; in pci_vpd_init()
386 vpd->ops = &pci_vpd_ops; in pci_vpd_init()
387 mutex_init(&vpd->lock); in pci_vpd_init()
388 vpd->cap = cap; in pci_vpd_init()
389 vpd->busy = 0; in pci_vpd_init()
390 vpd->valid = 0; in pci_vpd_init()
391 dev->vpd = vpd; in pci_vpd_init()
397 kfree(dev->vpd); in pci_vpd_release()
437 if (!dev->vpd) in pcie_vpd_create_sysfs_dev_files()
456 dev->vpd->attr = attr; in pcie_vpd_create_sysfs_dev_files()
461 if (dev->vpd && dev->vpd->attr) { in pcie_vpd_remove_sysfs_dev_files()
462 sysfs_remove_bin_file(&dev->dev.kobj, dev->vpd->attr); in pcie_vpd_remove_sysfs_dev_files()
463 kfree(dev->vpd->attr); in pcie_vpd_remove_sysfs_dev_files()
537 if (f0->vpd && dev->class == f0->class && in quirk_f0_vpd_link()
555 if (dev->vpd) { in quirk_blacklist_vpd()
556 dev->vpd->len = 0; in quirk_blacklist_vpd()
598 if (dev->vpd) in quirk_brcm_570x_limit_vpd()
599 dev->vpd->len = 0x80; in quirk_brcm_570x_limit_vpd()