Lines Matching defs:vpd
36 * @pos: offset in vpd space
42 if (!dev->vpd || !dev->vpd->ops)
44 return dev->vpd->ops->read(dev, pos, count, buf);
51 * @pos: offset in vpd space
57 if (!dev->vpd || !dev->vpd->ops)
59 return dev->vpd->ops->write(dev, pos, count, buf);
66 * @len: size of vpd space
70 if (!dev->vpd || !dev->vpd->ops)
72 return dev->vpd->ops->set_size(dev, len);
140 struct pci_vpd *vpd = dev->vpd;
146 if (!vpd->busy)
150 ret = pci_user_read_config_word(dev, vpd->cap + PCI_VPD_ADDR,
155 if ((status & PCI_VPD_ADDR_F) == vpd->flag) {
156 vpd->busy = 0;
178 struct pci_vpd *vpd = dev->vpd;
186 if (!vpd->valid) {
187 vpd->valid = 1;
188 vpd->len = pci_vpd_size(dev, vpd->len);
191 if (vpd->len == 0)
194 if (pos > vpd->len)
197 if (end > vpd->len) {
198 end = vpd->len;
202 if (mutex_lock_killable(&vpd->lock))
213 ret = pci_user_write_config_word(dev, vpd->cap + PCI_VPD_ADDR,
217 vpd->busy = 1;
218 vpd->flag = PCI_VPD_ADDR_F;
223 ret = pci_user_read_config_dword(dev, vpd->cap + PCI_VPD_DATA, &val);
238 mutex_unlock(&vpd->lock);
245 struct pci_vpd *vpd = dev->vpd;
253 if (!vpd->valid) {
254 vpd->valid = 1;
255 vpd->len = pci_vpd_size(dev, vpd->len);
258 if (vpd->len == 0)
261 if (end > vpd->len)
264 if (mutex_lock_killable(&vpd->lock))
279 ret = pci_user_write_config_dword(dev, vpd->cap + PCI_VPD_DATA, val);
282 ret = pci_user_write_config_word(dev, vpd->cap + PCI_VPD_ADDR,
287 vpd->busy = 1;
288 vpd->flag = 0;
296 mutex_unlock(&vpd->lock);
302 struct pci_vpd *vpd = dev->vpd;
307 vpd->valid = 1;
308 vpd->len = len;
371 struct pci_vpd *vpd;
378 vpd = kzalloc(sizeof(*vpd), GFP_ATOMIC);
379 if (!vpd)
382 vpd->len = PCI_VPD_MAX_SIZE;
384 vpd->ops = &pci_vpd_f0_ops;
386 vpd->ops = &pci_vpd_ops;
387 mutex_init(&vpd->lock);
388 vpd->cap = cap;
389 vpd->busy = 0;
390 vpd->valid = 0;
391 dev->vpd = vpd;
397 kfree(dev->vpd);
437 if (!dev->vpd)
446 attr->attr.name = "vpd";
456 dev->vpd->attr = attr;
461 if (dev->vpd && dev->vpd->attr) {
462 sysfs_remove_bin_file(&dev->dev.kobj, dev->vpd->attr);
463 kfree(dev->vpd->attr);
537 if (f0->vpd && dev->class == f0->class &&
555 if (dev->vpd) {
556 dev->vpd->len = 0;
583 * observed when a vpd entry was created in sysfs
584 * ('/sys/bus/pci/devices/<id>/vpd'). A read to this sysfs entry
603 if (dev->vpd)
604 dev->vpd->len = 0x80;