All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V5] mfd: syscon: Add arguments support for syscon reference
@ 2020-01-21  7:09 Orson Zhai
  2020-01-21  8:38 ` Lee Jones
  0 siblings, 1 reply; 2+ messages in thread
From: Orson Zhai @ 2020-01-21  7:09 UTC (permalink / raw
  To: Lee Jones, Arnd Bergmann
  Cc: linux-kernel, baolin.wang, chunyan.zhang, Orson Zhai

From: Orson Zhai <orson.zhai@unisoc.com>

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>
Acked-by: Lee Jones <lee.jones@linaro.org>
---
Change V5:
	Removed unexpected preceding spaces replaced by email system.
	The patch has been tested for local mailing and applying.

 drivers/mfd/syscon.c       | 29 +++++++++++++++++++++++++++++
 include/linux/mfd/syscon.h | 14 ++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c
index e22197c..2918b05 100644
--- a/drivers/mfd/syscon.c
+++ b/drivers/mfd/syscon.c
@@ -224,6 +224,35 @@ struct regmap *syscon_regmap_lookup_by_phandle(struct device_node *np,
 }
 EXPORT_SYMBOL_GPL(syscon_regmap_lookup_by_phandle);

+struct regmap *syscon_regmap_lookup_by_phandle_args(struct device_node *np,
+					const char *property,
+					int arg_count,
+					unsigned int *out_args)
+{
+	struct device_node *syscon_np;
+	struct of_phandle_args args;
+	struct regmap *regmap;
+	unsigned int index;
+	int rc;
+
+	rc = of_parse_phandle_with_fixed_args(np, property, arg_count,
+			0, &args);
+	if (rc)
+		return ERR_PTR(rc);
+
+	syscon_np = args.np;
+	if (!syscon_np)
+		return ERR_PTR(-ENODEV);
+
+	regmap = syscon_node_to_regmap(syscon_np);
+	for (index = 0; index < arg_count; index++)
+		out_args[index] = args.args[index];
+	of_node_put(syscon_np);
+
+	return regmap;
+}
+EXPORT_SYMBOL_GPL(syscon_regmap_lookup_by_phandle_args);
+
 static int syscon_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
diff --git a/include/linux/mfd/syscon.h b/include/linux/mfd/syscon.h
index 112dc66..714cab1 100644
--- a/include/linux/mfd/syscon.h
+++ b/include/linux/mfd/syscon.h
@@ -23,6 +23,11 @@ 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)
 {
@@ -45,6 +50,15 @@ static inline struct regmap *syscon_regmap_lookup_by_phandle(
 {
 	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__ */
--
2.7.4


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH V5] mfd: syscon: Add arguments support for syscon reference
  2020-01-21  7:09 [PATCH V5] mfd: syscon: Add arguments support for syscon reference Orson Zhai
@ 2020-01-21  8:38 ` Lee Jones
  0 siblings, 0 replies; 2+ messages in thread
From: Lee Jones @ 2020-01-21  8:38 UTC (permalink / raw
  To: Orson Zhai
  Cc: Arnd Bergmann, linux-kernel, baolin.wang, chunyan.zhang,
	Orson Zhai

On Tue, 21 Jan 2020, Orson Zhai wrote:

> From: Orson Zhai <orson.zhai@unisoc.com>
> 
> 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>
> Acked-by: Lee Jones <lee.jones@linaro.org>
> ---
> Change V5:
> 	Removed unexpected preceding spaces replaced by email system.
> 	The patch has been tested for local mailing and applying.
> 
>  drivers/mfd/syscon.c       | 29 +++++++++++++++++++++++++++++
>  include/linux/mfd/syscon.h | 14 ++++++++++++++
>  2 files changed, 43 insertions(+)

Applied, thanks.

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-01-21  8:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-01-21  7:09 [PATCH V5] mfd: syscon: Add arguments support for syscon reference Orson Zhai
2020-01-21  8:38 ` Lee Jones

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.