diff options
Diffstat (limited to 'include/linux/libnvdimm.h')
| -rw-r--r-- | include/linux/libnvdimm.h | 24 | 
1 files changed, 18 insertions, 6 deletions
| diff --git a/include/linux/libnvdimm.h b/include/linux/libnvdimm.h index 0c3c30cbbea5..b519e137b9b7 100644 --- a/include/linux/libnvdimm.h +++ b/include/linux/libnvdimm.h @@ -52,6 +52,7 @@ typedef int (*ndctl_fn)(struct nvdimm_bus_descriptor *nd_desc,  struct nd_namespace_label;  struct nvdimm_drvdata; +  struct nd_mapping {  	struct nvdimm *nvdimm;  	struct nd_namespace_label **labels; @@ -69,6 +70,7 @@ struct nd_mapping {  struct nvdimm_bus_descriptor {  	const struct attribute_group **attr_groups;  	unsigned long cmd_mask; +	struct module *module;  	char *provider_name;  	ndctl_fn ndctl;  	int (*flush_probe)(struct nvdimm_bus_descriptor *nd_desc); @@ -99,13 +101,21 @@ struct nd_region_desc {  	unsigned long flags;  }; +struct device; +void *devm_nvdimm_memremap(struct device *dev, resource_size_t offset, +		size_t size, unsigned long flags); +static inline void __iomem *devm_nvdimm_ioremap(struct device *dev, +		resource_size_t offset, size_t size) +{ +	return (void __iomem *) devm_nvdimm_memremap(dev, offset, size, 0); +} +  struct nvdimm_bus;  struct module;  struct device;  struct nd_blk_region;  struct nd_blk_region_desc {  	int (*enable)(struct nvdimm_bus *nvdimm_bus, struct device *dev); -	void (*disable)(struct nvdimm_bus *nvdimm_bus, struct device *dev);  	int (*do_io)(struct nd_blk_region *ndbr, resource_size_t dpa,  			void *iobuf, u64 len, int rw);  	struct nd_region_desc ndr_desc; @@ -119,22 +129,22 @@ static inline struct nd_blk_region_desc *to_blk_region_desc(  }  int nvdimm_bus_add_poison(struct nvdimm_bus *nvdimm_bus, u64 addr, u64 length); -struct nvdimm_bus *__nvdimm_bus_register(struct device *parent, -		struct nvdimm_bus_descriptor *nfit_desc, struct module *module); -#define nvdimm_bus_register(parent, desc) \ -	__nvdimm_bus_register(parent, desc, THIS_MODULE) +struct nvdimm_bus *nvdimm_bus_register(struct device *parent, +		struct nvdimm_bus_descriptor *nfit_desc);  void nvdimm_bus_unregister(struct nvdimm_bus *nvdimm_bus);  struct nvdimm_bus *to_nvdimm_bus(struct device *dev);  struct nvdimm *to_nvdimm(struct device *dev);  struct nd_region *to_nd_region(struct device *dev);  struct nd_blk_region *to_nd_blk_region(struct device *dev);  struct nvdimm_bus_descriptor *to_nd_desc(struct nvdimm_bus *nvdimm_bus); +struct device *to_nvdimm_bus_dev(struct nvdimm_bus *nvdimm_bus);  const char *nvdimm_name(struct nvdimm *nvdimm);  unsigned long nvdimm_cmd_mask(struct nvdimm *nvdimm);  void *nvdimm_provider_data(struct nvdimm *nvdimm);  struct nvdimm *nvdimm_create(struct nvdimm_bus *nvdimm_bus, void *provider_data,  		const struct attribute_group **groups, unsigned long flags, -		unsigned long cmd_mask); +		unsigned long cmd_mask, int num_flush, +		struct resource *flush_wpq);  const struct nd_cmd_desc *nd_cmd_dimm_desc(int cmd);  const struct nd_cmd_desc *nd_cmd_bus_desc(int cmd);  u32 nd_cmd_in_size(struct nvdimm *nvdimm, int cmd, @@ -156,4 +166,6 @@ struct nvdimm *nd_blk_region_to_dimm(struct nd_blk_region *ndbr);  unsigned int nd_region_acquire_lane(struct nd_region *nd_region);  void nd_region_release_lane(struct nd_region *nd_region, unsigned int lane);  u64 nd_fletcher64(void *addr, size_t len, bool le); +void nvdimm_flush(struct nd_region *nd_region); +int nvdimm_has_flush(struct nd_region *nd_region);  #endif /* __LIBNVDIMM_H__ */ |