diff mbox series

mfd: syscon: Fix syscon name for device tree

Message ID 20190108000558.54914-1-tony@atomide.com (mailing list archive)
State New, archived
Headers show
Series mfd: syscon: Fix syscon name for device tree | expand

Commit Message

Tony Lindgren Jan. 8, 2019, 12:05 a.m. UTC
I'm now seeing the following error on omap5 during boot:

(NULL device *): Failed to create dummy-scm_conf@0 debugfs directory

This is because we have two separate scm_conf syscon regions in the
dts. Let's fix the issue by setting a proper name if syscon is
configured via device tree.

See also related fix for commit 500f9ff518cf ("mfd: syscon: Set name
of regmap_config").

Cc: Jeffy Chen <jeffy.chen@rock-chips.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/mfd/syscon.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Tony Lindgren Jan. 8, 2019, 12:15 a.m. UTC | #1
* Tony Lindgren <tony@atomide.com> [190108 00:06]:
> I'm now seeing the following error on omap5 during boot:
> 
> (NULL device *): Failed to create dummy-scm_conf@0 debugfs directory
> 
> This is because we have two separate scm_conf syscon regions in the
> dts. Let's fix the issue by setting a proper name if syscon is
> configured via device tree.
> 
> See also related fix for commit 500f9ff518cf ("mfd: syscon: Set name
> of regmap_config").
> 
> Cc: Jeffy Chen <jeffy.chen@rock-chips.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  drivers/mfd/syscon.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c
> --- a/drivers/mfd/syscon.c
> +++ b/drivers/mfd/syscon.c
> @@ -241,6 +241,8 @@ static int syscon_probe(struct platform_device *pdev)
>  	syscon_config.max_register = res->end - res->start - 3;
>  	if (pdata)
>  		syscon_config.name = pdata->label;
> +	else
> +		syscon_config.name = dev_name(dev);
>  	syscon->regmap = devm_regmap_init_mmio(dev, base, &syscon_config);
>  	if (IS_ERR(syscon->regmap)) {
>  		dev_err(dev, "regmap init failed\n");

Hmm this fixes the error, but I'm still seeing only one
entry for /sys/kernel/debug/regmap/dummy-scm_conf@0.

Anybody got better ideas for setting the default name,
maybe dev->of_node->name if it exists?

Regards,

Tony
Jeffy Chen Jan. 8, 2019, 3:16 a.m. UTC | #2
Hi Tony,

On 01/08/2019 08:15 AM, Tony Lindgren wrote:
> * Tony Lindgren <tony@atomide.com> [190108 00:06]:
>> I'm now seeing the following error on omap5 during boot:
>>
>> (NULL device *): Failed to create dummy-scm_conf@0 debugfs directory
This log means failed to init regmap debugfs with device(NULL) and 
name("scm_conf@0"), which likely to be called from of_syscon_register() 
with np fullname("scm_conf@0").

So my guess would be there're more than one syscon dts nodes named 
"scm_conf@0".


For omap5 and scm_conf@0, should be these 2:
https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/omap5.dtsi#L167
				scm_conf: scm_conf@0 {
					compatible = "syscon";

https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/omap5.dtsi#L313
				scm_wkup_pad_conf: scm_conf@0 {
					compatible = "syscon", "simple-bus";

Maybe try to rename one of them(for example, rename the second one to 
"scm_wkup_pad_conf@0").
Tony Lindgren Jan. 8, 2019, 3:38 p.m. UTC | #3
* JeffyChen <jeffy.chen@rock-chips.com> [190108 03:17]:
> Hi Tony,
> 
> On 01/08/2019 08:15 AM, Tony Lindgren wrote:
> > * Tony Lindgren <tony@atomide.com> [190108 00:06]:
> > > I'm now seeing the following error on omap5 during boot:
> > > 
> > > (NULL device *): Failed to create dummy-scm_conf@0 debugfs directory
> This log means failed to init regmap debugfs with device(NULL) and
> name("scm_conf@0"), which likely to be called from of_syscon_register() with
> np fullname("scm_conf@0").
> 
> So my guess would be there're more than one syscon dts nodes named
> "scm_conf@0".

Yup.

> For omap5 and scm_conf@0, should be these 2:
> https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/omap5.dtsi#L167
> 				scm_conf: scm_conf@0 {
> 					compatible = "syscon";
> 
> https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/omap5.dtsi#L313
> 				scm_wkup_pad_conf: scm_conf@0 {
> 					compatible = "syscon", "simple-bus";

Yes those are the one.

> Maybe try to rename one of them(for example, rename the second one to
> "scm_wkup_pad_conf@0").

Well the thing is that any valid node name should work here
just like it does for devices. In this case the syscon
instances are on separate inteconnect instances. So it seems
that we should do something similar to what we already do in
of_device_make_bus_id().

BTW, I was trying to patch the wrong function :) The right
function to fix is of_syscon_register() for the dts case.

Regards,

Tony
diff mbox series

Patch

diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c
--- a/drivers/mfd/syscon.c
+++ b/drivers/mfd/syscon.c
@@ -241,6 +241,8 @@  static int syscon_probe(struct platform_device *pdev)
 	syscon_config.max_register = res->end - res->start - 3;
 	if (pdata)
 		syscon_config.name = pdata->label;
+	else
+		syscon_config.name = dev_name(dev);
 	syscon->regmap = devm_regmap_init_mmio(dev, base, &syscon_config);
 	if (IS_ERR(syscon->regmap)) {
 		dev_err(dev, "regmap init failed\n");