soc: ti: k3-socinfo: Do not use syscon helper to build regmap
PATCH 1/1 soc: ti: k3-socinfo: Do not use syscon helper to build regmap
The syscon helper device_node_to_regmap() is used to fetch a regmap registered to a device node. It also currently creates this regmap if the node did not already have a regmap associated with it. This should only be used on "syscon" nodes. This driver is not such a device and instead uses device_node_to_regmap() on its own node as a hacky way to create a regmap for itself.
This will not work going forward and so we should create our regmap the normal way by defining our regmap_config, fetching our memory resource, then using the normal regmap_init_mmio() function.
--- drivers/soc/ti/k3-socinfo.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
drivers/soc/ti/k3-socinfo.c +12 -1
@@ -105,6 +105,12 @@ k3_chipinfo_variant_to_sr(unsigned int partno, unsigned int variant,return -ENODEV ; } +static const struct regmap_config k3_chipinfo_regmap_cfg = { + .reg_bits =32 , + .val_bits =32 , + .reg_stride =4 , +}; +static int k3_chipinfo_probe (struct platform_device *pdev) {struct device_node *node = pdev->dev.of_node;
@@ -112,13 +118,18 @@ static int k3_chipinfo_probe(struct platform_device *pdev)struct device *dev = &pdev->dev;struct soc_device *soc_dev;struct regmap *regmap; +void __iomem *base;u32 partno_id;u32 variant;u32 jtag_id;u32 mfg;int ret; - regmap =device_node_to_regmap (node); + base =devm_platform_ioremap_resource (pdev,0 ); +if (IS_ERR (base)) +return PTR_ERR (base); + + regmap =regmap_init_mmio (dev, base, &k3_chipinfo_regmap_cfg);if (IS_ERR (regmap))return PTR_ERR (regmap);
Signature · 1 line
2.39.2
Nishanth Menon
maintainerQuoted 7 lines · Andrew Davis
The syscon helper
device_node_to_regmap()is used to fetch a regmap registered to a device node. It also currently creates this regmap if the node did not already have a regmap associated with it. This should only be used on "syscon" nodes. This driver is not such a device and instead usesdevice_node_to_regmap()on its own node as a hacky way to create a regmap for itself.
Quoted 6 lines
This will not work going forward and so we should create our regmap the normal way by defining our
regmap_config, fetching our memory resource, then using the normalregmap_init_mmio()function.Signed-off-by Andrew Davis <[email protected]>---
This is part of the fixes TI K3 platforms boot issues reported in
https://lore.kernel.org/all/[email protected]/
on the latest linus master v6.13-5001-gd0d106a2bd21 + linux next-20250123
Total set of patches tested with:
https://lore.kernel.org/all/[email protected]/
https://lore.kernel.org/r/[email protected]
https://lore.kernel.org/r/[email protected]
https://lore.kernel.org/r/[email protected]
https://lore.kernel.org/r/[email protected]
I will try and get this in at the earliest possible window. Thanks for providing a fix.
Cc Rob and Lee
Quoted 43 lines
drivers/soc/ti/k3-socinfo.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)drivers/soc/ti/k3-socinfo.c +12
-1@@ -105,6 +105,12 @@ k3_chipinfo_variant_to_sr(unsigned int partno, unsigned int variant,return -ENODEV ; } +static const struct regmap_config k3_chipinfo_regmap_cfg = { + .reg_bits =32 , + .val_bits =32 , + .reg_stride =4 , +}; +static int k3_chipinfo_probe (struct platform_device *pdev) {struct device_node *node = pdev->dev.of_node;@@ -112,13 +118,18 @@ static int k3_chipinfo_probe(struct platform_device *pdev)struct device *dev = &pdev->dev;struct soc_device *soc_dev;struct regmap *regmap; +void __iomem *base;u32 partno_id;u32 variant;u32 jtag_id;u32 mfg;int ret; - regmap =device_node_to_regmap (node); + base =devm_platform_ioremap_resource (pdev,0 ); +if (IS_ERR (base)) +return PTR_ERR (base); + + regmap =regmap_init_mmio (dev, base, &k3_chipinfo_regmap_cfg);if (IS_ERR (regmap))return PTR_ERR (regmap);Signature · 1 line
2.39.2
Signature · 3 lines
Regards, Nishanth Menon Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D
Hi Andrew Davis,
Quoted 8 lines · Andrew Davis
The syscon helper
device_node_to_regmap()is used to fetch a regmap registered to a device node. It also currently creates this regmap if the node did not already have a regmap associated with it. This should only be used on "syscon" nodes. This driver is not such a device and instead usesdevice_node_to_regmap()on its own node as a hacky way to create a regmap for itself.[...]
I have applied the following to branch ti-drivers-soc-next on [1]. Thank you!
[1/1] soc: ti: k3-socinfo: Do not use syscon helper to build regmap
commit: a5caf03188e44388e8c618dcbe5fffad1a249385
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent up the chain during the next merge window (or sooner if it is a relevant bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git
Signature · 3 lines
Regards, Nishanth Menon Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D