linux/drivers/memory/dfl-emif.c

// SPDX-License-Identifier: GPL-2.0
/*
 * DFL device driver for EMIF private feature
 *
 * Copyright (C) 2020 Intel Corporation, Inc.
 *
 */
#include <linux/bitfield.h>
#include <linux/dfl.h>
#include <linux/errno.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/io-64-nonatomic-lo-hi.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/spinlock.h>
#include <linux/types.h>

#define FME_FEATURE_ID_EMIF

#define EMIF_STAT
#define EMIF_STAT_INIT_DONE_SFT
#define EMIF_STAT_CALC_FAIL_SFT
#define EMIF_STAT_CLEAR_BUSY_SFT
#define EMIF_CTRL
#define EMIF_CTRL_CLEAR_EN_SFT
#define EMIF_CTRL_CLEAR_EN_MSK

#define EMIF_POLL_INVL
#define EMIF_POLL_TIMEOUT

/*
 * The Capability Register replaces the Control Register (at the same
 * offset) for EMIF feature revisions > 0. The bitmask that indicates
 * the presence of memory channels exists in both the Capability Register
 * and Control Register definitions. These can be thought of as a C union.
 * The Capability Register definitions are used to check for the existence
 * of a memory channel, and the Control Register definitions are used for
 * managing the memory-clear functionality in revision 0.
 */
#define EMIF_CAPABILITY_BASE
#define EMIF_CAPABILITY_CHN_MSK_V0
#define EMIF_CAPABILITY_CHN_MSK

struct dfl_emif {};

struct emif_attr {};

#define to_emif_attr(dev_attr)

static ssize_t emif_state_show(struct device *dev,
			       struct device_attribute *attr, char *buf)
{}

static ssize_t emif_clear_store(struct device *dev,
				struct device_attribute *attr,
				const char *buf, size_t count)
{}

#define emif_state_attr(_name, _shift, _index)

#define emif_clear_attr(_index)

emif_state_attr();
emif_state_attr();
emif_state_attr();
emif_state_attr();
emif_state_attr();
emif_state_attr();
emif_state_attr();
emif_state_attr();

emif_state_attr();
emif_state_attr();
emif_state_attr();
emif_state_attr();
emif_state_attr();
emif_state_attr();
emif_state_attr();
emif_state_attr();


emif_clear_attr();
emif_clear_attr();
emif_clear_attr();
emif_clear_attr();
emif_clear_attr();
emif_clear_attr();
emif_clear_attr();
emif_clear_attr();


static struct attribute *dfl_emif_attrs[] =;

static umode_t dfl_emif_visible(struct kobject *kobj,
				struct attribute *attr, int n)
{}

static const struct attribute_group dfl_emif_group =;

static const struct attribute_group *dfl_emif_groups[] =;

static int dfl_emif_probe(struct dfl_device *ddev)
{}

static const struct dfl_device_id dfl_emif_ids[] =;
MODULE_DEVICE_TABLE(dfl, dfl_emif_ids);

static struct dfl_driver dfl_emif_driver =;
module_dfl_driver();

MODULE_DESCRIPTION();
MODULE_AUTHOR();
MODULE_LICENSE();