#include <linux/clk.h>
#include <linux/err.h>
#include <linux/hwspinlock.h>
#include <linux/io.h>
#include <linux/init.h>
#include <linux/list.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_platform.h>
#include <linux/platform_data/syscon.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/reset.h>
#include <linux/mfd/syscon.h>
#include <linux/slab.h>
static struct platform_driver syscon_driver;
static DEFINE_SPINLOCK(syscon_list_slock);
static LIST_HEAD(syscon_list);
struct syscon { … };
static const struct regmap_config syscon_regmap_config = …;
static struct syscon *of_syscon_register(struct device_node *np, bool check_res)
{ … }
static struct regmap *device_node_get_regmap(struct device_node *np,
bool check_res)
{ … }
int of_syscon_register_regmap(struct device_node *np, struct regmap *regmap)
{ … }
EXPORT_SYMBOL_GPL(…);
struct regmap *device_node_to_regmap(struct device_node *np)
{ … }
EXPORT_SYMBOL_GPL(…);
struct regmap *syscon_node_to_regmap(struct device_node *np)
{ … }
EXPORT_SYMBOL_GPL(…);
struct regmap *syscon_regmap_lookup_by_compatible(const char *s)
{ … }
EXPORT_SYMBOL_GPL(…);
struct regmap *syscon_regmap_lookup_by_phandle(struct device_node *np,
const char *property)
{ … }
EXPORT_SYMBOL_GPL(…);
struct regmap *syscon_regmap_lookup_by_phandle_args(struct device_node *np,
const char *property,
int arg_count,
unsigned int *out_args)
{ … }
EXPORT_SYMBOL_GPL(…);
struct regmap *syscon_regmap_lookup_by_phandle_optional(struct device_node *np,
const char *property)
{ … }
EXPORT_SYMBOL_GPL(…);
static int syscon_probe(struct platform_device *pdev)
{ … }
static const struct platform_device_id syscon_ids[] = …;
static struct platform_driver syscon_driver = …;
static int __init syscon_init(void)
{ … }
postcore_initcall(syscon_init);