#include <linux/device.h>
#include <linux/slab.h>
#include <linux/idr.h>
#include <cxlmem.h>
#include <cxl.h>
#include "core.h"
static DEFINE_IDA(cxl_nvdimm_bridge_ida);
static void cxl_nvdimm_bridge_release(struct device *dev)
{ … }
static const struct attribute_group *cxl_nvdimm_bridge_attribute_groups[] = …;
const struct device_type cxl_nvdimm_bridge_type = …;
struct cxl_nvdimm_bridge *to_cxl_nvdimm_bridge(struct device *dev)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
bool is_cxl_nvdimm_bridge(struct device *dev)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
static int match_nvdimm_bridge(struct device *dev, void *data)
{ … }
struct cxl_nvdimm_bridge *cxl_find_nvdimm_bridge(struct cxl_port *port)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
static struct lock_class_key cxl_nvdimm_bridge_key;
static struct cxl_nvdimm_bridge *cxl_nvdimm_bridge_alloc(struct cxl_port *port)
{ … }
static void unregister_nvb(void *_cxl_nvb)
{ … }
struct cxl_nvdimm_bridge *devm_cxl_add_nvdimm_bridge(struct device *host,
struct cxl_port *port)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
static void cxl_nvdimm_release(struct device *dev)
{ … }
static const struct attribute_group *cxl_nvdimm_attribute_groups[] = …;
const struct device_type cxl_nvdimm_type = …;
bool is_cxl_nvdimm(struct device *dev)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
struct cxl_nvdimm *to_cxl_nvdimm(struct device *dev)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
static struct lock_class_key cxl_nvdimm_key;
static struct cxl_nvdimm *cxl_nvdimm_alloc(struct cxl_nvdimm_bridge *cxl_nvb,
struct cxl_memdev *cxlmd)
{ … }
static void cxlmd_release_nvdimm(void *_cxlmd)
{ … }
int devm_cxl_add_nvdimm(struct cxl_port *parent_port,
struct cxl_memdev *cxlmd)
{ … }
EXPORT_SYMBOL_NS_GPL(…);