#include <linux/init.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#define REG_MEMC_CNTRLR_CONFIG …
#define CNTRLR_CONFIG_LPDDR4_SHIFT …
#define CNTRLR_CONFIG_MASK …
#define REG_MEMC_SRPD_CFG_21 …
#define REG_MEMC_SRPD_CFG_20 …
#define REG_MEMC_SRPD_CFG_1x …
#define INACT_COUNT_SHIFT …
#define INACT_COUNT_MASK …
#define SRPD_EN_SHIFT …
struct brcmstb_memc_data { … };
struct brcmstb_memc { … };
static int brcmstb_memc_uses_lpddr4(struct brcmstb_memc *memc)
{ … }
static int brcmstb_memc_srpd_config(struct brcmstb_memc *memc,
unsigned int cycles)
{ … }
static ssize_t frequency_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t srpd_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t srpd_store(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count)
{ … }
static DEVICE_ATTR_RO(frequency);
static DEVICE_ATTR_RW(srpd);
static struct attribute *dev_attrs[] = …;
static struct attribute_group dev_attr_group = …;
static int brcmstb_memc_probe(struct platform_device *pdev)
{ … }
static void brcmstb_memc_remove(struct platform_device *pdev)
{ … }
enum brcmstb_memc_hwtype { … };
static const struct brcmstb_memc_data brcmstb_memc_versions[] = …;
static const struct of_device_id brcmstb_memc_of_match[] = …;
MODULE_DEVICE_TABLE(of, brcmstb_memc_of_match);
static int brcmstb_memc_suspend(struct device *dev)
{ … }
static int brcmstb_memc_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(brcmstb_memc_pm_ops, brcmstb_memc_suspend,
brcmstb_memc_resume);
static struct platform_driver brcmstb_memc_driver = …;
module_platform_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;