Re: [PATCH v2] mfd: syscon: allow to register syscon with a device

From: Philipp Zabel
Date: Wed Feb 24 2016 - 07:44:39 EST

Hi Arnd,

Am Mittwoch, den 24.02.2016, 13:18 +0100 schrieb Arnd Bergmann:
> On Wednesday 24 February 2016 12:19:01 Philipp Zabel wrote:
> > Commit bdb0066df96e ("mfd: syscon: Decouple syscon interface from platform
> > devices") added the possibility to register syscon devices without
> > associated platform device. This also removed regmap debugfs facilities,
> > which don't work without a device. Since there is no replacement, this
> > patch allows again to register syscon regions with an associated device
> > where that this device exists anyway.
> >
> > Signed-off-by: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>
> Can you elaborate how you want to use the new interface?

I use this patch to attach the regmap to the IOMUXC device, which the
GPR (syscon) region on i.MX6 is a part of:

diff --git a/drivers/pinctrl/freescale/pinctrl-imx6q.c b/drivers/pinctrl/freescale/pinctrl-imx6q.c
index 4d1fcb8..74a68ec 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx6q.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx6q.c
@@ -15,6 +15,7 @@
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
+#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_device.h>
@@ -473,6 +474,12 @@ static const struct of_device_id imx6q_pinctrl_of_match[] = {

static int imx6q_pinctrl_probe(struct platform_device *pdev)
+ struct device_node *syscon_np;
+ syscon_np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-iomuxc-gpr");
+ if (syscon_np)
+ syscon_register(&pdev->dev, syscon_np);
return imx_pinctrl_probe(pdev, &imx6q_pinctrl_info);

The pinctrl driver is probed at arch_initcall time.

> My immediate reaction would be that drivers calling syscon_register()
> are probably doing something wrong. If we want to restore the
> debugfs interfaces, there might be a better way to do this automatically.

Do you have any suggestion?