Lines Matching refs:entry
77 struct intel_pmt_entry *entry = container_of(attr, in intel_pmt_read() local
84 if (off >= entry->size) in intel_pmt_read()
87 if (count > entry->size - off) in intel_pmt_read()
88 count = entry->size - off; in intel_pmt_read()
90 if (entry->guid == GUID_SPR_PUNIT) in intel_pmt_read()
92 count = pmt_memcpy64_fromio(buf, entry->base + off, count); in intel_pmt_read()
94 memcpy_fromio(buf, entry->base + off, count); in intel_pmt_read()
103 struct intel_pmt_entry *entry = container_of(attr, in intel_pmt_mmap() local
108 unsigned long phys = entry->base_addr; in intel_pmt_mmap()
115 psize = (PFN_UP(entry->base_addr + entry->size) - pfn) * PAGE_SIZE; in intel_pmt_mmap()
132 struct intel_pmt_entry *entry = dev_get_drvdata(dev); in guid_show() local
134 return sprintf(buf, "0x%x\n", entry->guid); in guid_show()
141 struct intel_pmt_entry *entry = dev_get_drvdata(dev); in size_show() local
143 return sprintf(buf, "%zu\n", entry->size); in size_show()
150 struct intel_pmt_entry *entry = dev_get_drvdata(dev); in offset_show() local
152 return sprintf(buf, "%lu\n", offset_in_page(entry->base_addr)); in offset_show()
170 static int intel_pmt_populate_entry(struct intel_pmt_entry *entry, in intel_pmt_populate_entry() argument
200 entry->base_addr = disc_res->end + 1 + header->base_offset; in intel_pmt_populate_entry()
213 entry->base_addr = 0; in intel_pmt_populate_entry()
217 entry->base_addr = pci_resource_start(pci_dev, i) + in intel_pmt_populate_entry()
221 if (!entry->base_addr) in intel_pmt_populate_entry()
232 entry->base_addr = pci_resource_start(pci_dev, bir) + in intel_pmt_populate_entry()
241 entry->guid = header->guid; in intel_pmt_populate_entry()
242 entry->size = header->size; in intel_pmt_populate_entry()
247 static int intel_pmt_dev_register(struct intel_pmt_entry *entry, in intel_pmt_dev_register() argument
255 ret = xa_alloc(ns->xa, &entry->devid, entry, PMT_XA_LIMIT, GFP_KERNEL); in intel_pmt_dev_register()
259 dev = device_create(&intel_pmt_class, parent, MKDEV(0, 0), entry, in intel_pmt_dev_register()
260 "%s%d", ns->name, entry->devid); in intel_pmt_dev_register()
264 ns->name, entry->devid); in intel_pmt_dev_register()
269 entry->kobj = &dev->kobj; in intel_pmt_dev_register()
272 ret = sysfs_create_group(entry->kobj, ns->attr_grp); in intel_pmt_dev_register()
278 if (!entry->size) in intel_pmt_dev_register()
281 res.start = entry->base_addr; in intel_pmt_dev_register()
282 res.end = res.start + entry->size - 1; in intel_pmt_dev_register()
285 entry->base = devm_ioremap_resource(dev, &res); in intel_pmt_dev_register()
286 if (IS_ERR(entry->base)) { in intel_pmt_dev_register()
287 ret = PTR_ERR(entry->base); in intel_pmt_dev_register()
291 sysfs_bin_attr_init(&entry->pmt_bin_attr); in intel_pmt_dev_register()
292 entry->pmt_bin_attr.attr.name = ns->name; in intel_pmt_dev_register()
293 entry->pmt_bin_attr.attr.mode = 0440; in intel_pmt_dev_register()
294 entry->pmt_bin_attr.mmap = intel_pmt_mmap; in intel_pmt_dev_register()
295 entry->pmt_bin_attr.read = intel_pmt_read; in intel_pmt_dev_register()
296 entry->pmt_bin_attr.size = entry->size; in intel_pmt_dev_register()
298 ret = sysfs_create_bin_file(&dev->kobj, &entry->pmt_bin_attr); in intel_pmt_dev_register()
304 sysfs_remove_group(entry->kobj, ns->attr_grp); in intel_pmt_dev_register()
308 xa_erase(ns->xa, entry->devid); in intel_pmt_dev_register()
313 int intel_pmt_dev_create(struct intel_pmt_entry *entry, in intel_pmt_dev_create() argument
325 entry->disc_table = devm_platform_ioremap_resource(pdev, idx); in intel_pmt_dev_create()
326 if (IS_ERR(entry->disc_table)) in intel_pmt_dev_create()
327 return PTR_ERR(entry->disc_table); in intel_pmt_dev_create()
329 ret = ns->pmt_header_decode(entry, &header, &pdev->dev); in intel_pmt_dev_create()
333 ret = intel_pmt_populate_entry(entry, &header, &pdev->dev, disc_res); in intel_pmt_dev_create()
337 return intel_pmt_dev_register(entry, ns, &pdev->dev); in intel_pmt_dev_create()
342 void intel_pmt_dev_destroy(struct intel_pmt_entry *entry, in intel_pmt_dev_destroy() argument
345 struct device *dev = kobj_to_dev(entry->kobj); in intel_pmt_dev_destroy()
347 if (entry->size) in intel_pmt_dev_destroy()
348 sysfs_remove_bin_file(entry->kobj, &entry->pmt_bin_attr); in intel_pmt_dev_destroy()
351 sysfs_remove_group(entry->kobj, ns->attr_grp); in intel_pmt_dev_destroy()
354 xa_erase(ns->xa, entry->devid); in intel_pmt_dev_destroy()