summaryrefslogtreecommitdiff
path: root/arch/alpha/kernel/pci-sysfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/alpha/kernel/pci-sysfs.c')
-rw-r--r--arch/alpha/kernel/pci-sysfs.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/alpha/kernel/pci-sysfs.c b/arch/alpha/kernel/pci-sysfs.c
index 6cf688621ea9..e1a4546ac2db 100644
--- a/arch/alpha/kernel/pci-sysfs.c
+++ b/arch/alpha/kernel/pci-sysfs.c
@@ -104,6 +104,26 @@ static int pci_mmap_resource_dense(struct file *filp, struct kobject *kobj,
return pci_mmap_resource(kobj, attr, vma, 0);
}
+#define __pci_dev_resource_attr(_bar, _name, _suffix, _mmap) \
+static const struct bin_attribute \
+pci_dev_resource##_bar##_suffix##_attr = { \
+ .attr = { .name = __stringify(_name), .mode = 0600 }, \
+ .private = (void *)(unsigned long)(_bar), \
+ .mmap = (_mmap), \
+}
+
+#define pci_dev_resource_attr(_bar) \
+ __pci_dev_resource_attr(_bar, resource##_bar,, \
+ pci_mmap_resource_dense)
+
+#define pci_dev_resource_sparse_attr(_bar) \
+ __pci_dev_resource_attr(_bar, resource##_bar##_sparse, _sparse, \
+ pci_mmap_resource_sparse)
+
+#define pci_dev_resource_dense_attr(_bar) \
+ __pci_dev_resource_attr(_bar, resource##_bar##_dense, _dense, \
+ pci_mmap_resource_dense)
+
/**
* pci_remove_resource_files - cleanup resource files
* @pdev: pci_dev to cleanup