Add macros for declaring static binary attributes for Alpha's PCI
resource files:

  - pci_dev_resource_attr(),        for dense/BWX systems (mmap dense)
  - pci_dev_resource_sparse_attr(), for sparse systems (mmap sparse)
  - pci_dev_resource_dense_attr(),  for dense companion files (mmap dense)

Each macro creates a const bin_attribute with the BAR index stored in
the .private property and the appropriate .mmap callback.

Tested-by: Magnus Lindholm <[email protected]>
Tested-by: Shivaprasad G Bhat <[email protected]>
Acked-by: Magnus Lindholm <[email protected]>
Signed-off-by: Krzysztof Wilczyński <[email protected]>
---
 arch/alpha/kernel/pci-sysfs.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/arch/alpha/kernel/pci-sysfs.c b/arch/alpha/kernel/pci-sysfs.c
index a8dade7d084b..b537313d1717 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
-- 
2.54.0


Reply via email to