Merge branch 'linux-4.15' of git://github.com/skeggsb/linux into drm-fixes
[sfrench/cifs-2.6.git] / drivers / nvdimm / pmem.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __NVDIMM_PMEM_H__
3 #define __NVDIMM_PMEM_H__
4 #include <linux/badblocks.h>
5 #include <linux/types.h>
6 #include <linux/pfn_t.h>
7 #include <linux/fs.h>
8
9 /* this definition is in it's own header for tools/testing/nvdimm to consume */
10 struct pmem_device {
11         /* One contiguous memory region per device */
12         phys_addr_t             phys_addr;
13         /* when non-zero this device is hosting a 'pfn' instance */
14         phys_addr_t             data_offset;
15         u64                     pfn_flags;
16         void                    *virt_addr;
17         /* immutable base size of the namespace */
18         size_t                  size;
19         /* trim size when namespace capacity has been section aligned */
20         u32                     pfn_pad;
21         struct kernfs_node      *bb_state;
22         struct badblocks        bb;
23         struct dax_device       *dax_dev;
24         struct gendisk          *disk;
25 };
26
27 long __pmem_direct_access(struct pmem_device *pmem, pgoff_t pgoff,
28                 long nr_pages, void **kaddr, pfn_t *pfn);
29 #endif /* __NVDIMM_PMEM_H__ */