mfd: syscon: Fix syscon name for device tree
Subsystems (2)
PATCH 1/1 mfd: syscon: Fix syscon name for device tree
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").
--- drivers/mfd/syscon.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/mfd/syscon.c +2 -0
@@ -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" );
Signature · 1 line
2.20.1
Quoted 21 lines · Tony Lindgren
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_confsyscon 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 ofregmap_config").Cc Jeffy Chen <[email protected]>Signed-off-by Tony Lindgren <[email protected]>--- drivers/mfd/syscon.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/mfd/syscon.c static int syscon_probe(struct platform_device *pdev) · line 248
Quoted 8 lines
drivers/mfd/syscon.c +2
-0@@ -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
Hi Tony,
Quoted 4 lines · Tony Lindgren
Quoted 3 lines · Tony Lindgren
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").
Quoted 6 lines · JeffyChen
Hi Tony,
Quoted 3 lines · Tony Lindgren
Quoted 2 lines · Tony Lindgren
I'm now seeing the following error on omap5 during boot:
Quoted 7 lines
Quoted 1 line
Quoted 1 line
(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 fromof_syscon_register()with npfullname("scm_conf@0").So my guess would be there're more than one syscon dts nodes named "scm_conf@0".
Yup.
Quoted 8 lines
For omap5 and scm_conf@0, should be these 2:
https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/omap5.dtsi#L167scm_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.
Quoted 2 lines
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