There are a lot of similar global registers being used across multiple SoCs
from Unisoc. But most of these registers are assigned with different offset
for different SoCs. It is hard to handle all of them in an all-in-one
kernel image.
Add a helper function to get regmap with arguments where we could put some
extra information such as the offset value.
Signed-off-by: Orson Zhai <orson.zhai@unisoc.com>
Tested-by: Baolin Wang <baolin.wang@unisoc.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Bug: 146258076
Change-Id: I836fb64d0cdc9596623453b49fad10d3d181906e
(cherry picked from commit 6a24f567af)
Signed-off-by: Orson Zhai <orson.zhai@unisoc.com>
65 lines
1.6 KiB
C
65 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* System Control Driver
|
|
*
|
|
* Copyright (C) 2012 Freescale Semiconductor, Inc.
|
|
* Copyright (C) 2012 Linaro Ltd.
|
|
*
|
|
* Author: Dong Aisheng <dong.aisheng@linaro.org>
|
|
*/
|
|
|
|
#ifndef __LINUX_MFD_SYSCON_H__
|
|
#define __LINUX_MFD_SYSCON_H__
|
|
|
|
#include <linux/err.h>
|
|
#include <linux/errno.h>
|
|
|
|
struct device_node;
|
|
|
|
#ifdef CONFIG_MFD_SYSCON
|
|
extern struct regmap *device_node_to_regmap(struct device_node *np);
|
|
extern struct regmap *syscon_node_to_regmap(struct device_node *np);
|
|
extern struct regmap *syscon_regmap_lookup_by_compatible(const char *s);
|
|
extern struct regmap *syscon_regmap_lookup_by_phandle(
|
|
struct device_node *np,
|
|
const char *property);
|
|
extern struct regmap *syscon_regmap_lookup_by_phandle_args(
|
|
struct device_node *np,
|
|
const char *property,
|
|
int arg_count,
|
|
unsigned int *out_args);
|
|
#else
|
|
static inline struct regmap *device_node_to_regmap(struct device_node *np)
|
|
{
|
|
return ERR_PTR(-ENOTSUPP);
|
|
}
|
|
|
|
static inline struct regmap *syscon_node_to_regmap(struct device_node *np)
|
|
{
|
|
return ERR_PTR(-ENOTSUPP);
|
|
}
|
|
|
|
static inline struct regmap *syscon_regmap_lookup_by_compatible(const char *s)
|
|
{
|
|
return ERR_PTR(-ENOTSUPP);
|
|
}
|
|
|
|
static inline struct regmap *syscon_regmap_lookup_by_phandle(
|
|
struct device_node *np,
|
|
const char *property)
|
|
{
|
|
return ERR_PTR(-ENOTSUPP);
|
|
}
|
|
|
|
static struct regmap *syscon_regmap_lookup_by_phandle_args(
|
|
struct device_node *np,
|
|
const char *property,
|
|
int arg_count,
|
|
unsigned int *out_args)
|
|
{
|
|
return ERR_PTR(-ENOTSUPP);
|
|
}
|
|
#endif
|
|
|
|
#endif /* __LINUX_MFD_SYSCON_H__ */
|