mirror of
https://github.com/armbian/build.git
synced 2025-08-10 05:06:57 +02:00
61 lines
2.2 KiB
Diff
61 lines
2.2 KiB
Diff
From 12045a9ab272974528afea72781f5308c662a1d0 Mon Sep 17 00:00:00 2001
|
|
From: Andre Przywara <andre.przywara@arm.com>
|
|
Date: Tue, 1 Oct 2024 22:28:41 +0100
|
|
Subject: [PATCH 03/37] mfd: axp20x: Allow multiple regulators
|
|
|
|
At the moment trying to register a second AXP chip makes the probe fail,
|
|
as some sysfs registration fails due to a duplicate name:
|
|
|
|
...
|
|
[ 3.688215] axp20x-i2c 0-0035: AXP20X driver loaded
|
|
[ 3.695610] axp20x-i2c 0-0036: AXP20x variant AXP323 found
|
|
[ 3.706151] sysfs: cannot create duplicate filename '/bus/platform/devices/axp20x-regulator'
|
|
[ 3.714718] CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.12.0-rc1-00026-g50bf2e2c079d-dirty #192
|
|
[ 3.724020] Hardware name: Avaota A1 (DT)
|
|
[ 3.728029] Call trace:
|
|
[ 3.730477] dump_backtrace+0x94/0xec
|
|
[ 3.734146] show_stack+0x18/0x24
|
|
[ 3.737462] dump_stack_lvl+0x80/0xf4
|
|
[ 3.741128] dump_stack+0x18/0x24
|
|
[ 3.744444] sysfs_warn_dup+0x64/0x80
|
|
[ 3.748109] sysfs_do_create_link_sd+0xf0/0xf8
|
|
[ 3.752553] sysfs_create_link+0x20/0x40
|
|
[ 3.756476] bus_add_device+0x64/0x104
|
|
[ 3.760229] device_add+0x310/0x760
|
|
[ 3.763717] platform_device_add+0x10c/0x238
|
|
[ 3.767990] mfd_add_device+0x4ec/0x5c8
|
|
[ 3.771829] mfd_add_devices+0x88/0x11c
|
|
[ 3.775666] axp20x_device_probe+0x70/0x184
|
|
[ 3.779851] axp20x_i2c_probe+0x9c/0xd8
|
|
...
|
|
|
|
This is because we use PLATFORM_DEVID_NONE for the mfd_add_devices()
|
|
call, which would number the child devices in the same 0-based way, even
|
|
for the second (or any other) instance.
|
|
|
|
Use PLATFORM_DEVID_AUTO instead, which automatically assigns
|
|
non-conflicting device numbers.
|
|
|
|
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
|
|
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
|
|
---
|
|
drivers/mfd/axp20x.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
|
|
index 5ceea359289..bc08ae43326 100644
|
|
--- a/drivers/mfd/axp20x.c
|
|
+++ b/drivers/mfd/axp20x.c
|
|
@@ -1419,7 +1419,7 @@ int axp20x_device_probe(struct axp20x_dev *axp20x)
|
|
}
|
|
}
|
|
|
|
- ret = mfd_add_devices(axp20x->dev, PLATFORM_DEVID_NONE, axp20x->cells,
|
|
+ ret = mfd_add_devices(axp20x->dev, PLATFORM_DEVID_AUTO, axp20x->cells,
|
|
axp20x->nr_cells, NULL, 0, NULL);
|
|
|
|
if (ret) {
|
|
--
|
|
2.46.0
|
|
|