nd-core.h 1.6 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/*
 * Copyright(c) 2013-2015 Intel Corporation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 */
#ifndef __ND_CORE_H__
#define __ND_CORE_H__
#include <linux/libnvdimm.h>
#include <linux/device.h>

18 19
extern struct list_head nvdimm_bus_list;
extern struct mutex nvdimm_bus_list_mutex;
20
extern int nvdimm_major;
21

22 23
struct nvdimm_bus {
	struct nvdimm_bus_descriptor *nd_desc;
24
	struct module *module;
25
	struct list_head list;
26 27
	struct device dev;
	int id;
28
	struct mutex reconfig_mutex;
29
};
30

31 32 33
struct nvdimm {
	unsigned long flags;
	void *provider_data;
34
	unsigned long *dsm_mask;
35 36 37 38
	struct device dev;
	int id;
};

39 40 41
bool is_nvdimm(struct device *dev);
bool is_nd_blk(struct device *dev);
bool is_nd_pmem(struct device *dev);
42
struct nvdimm_bus *walk_to_nvdimm_bus(struct device *nd_dev);
43
int __init nvdimm_bus_init(void);
44
void nvdimm_bus_exit(void);
45 46
int nvdimm_bus_create_ndctl(struct nvdimm_bus *nvdimm_bus);
void nvdimm_bus_destroy_ndctl(struct nvdimm_bus *nvdimm_bus);
47
void nd_synchronize(void);
48 49 50
int nvdimm_bus_register_dimms(struct nvdimm_bus *nvdimm_bus);
int nvdimm_bus_register_regions(struct nvdimm_bus *nvdimm_bus);
int nd_match_dimm(struct device *dev, void *data);
51
#endif /* __ND_CORE_H__ */