From: Neil Armstrong <neil.armstrong@linaro.org>
To: Sebastian Reichel <sebastian.reichel@collabora.com>
Cc: Lee Jones <lee@kernel.org>,
linux-kernel@vger.kernel.org, Adam Green <greena88@gmail.com>
Subject: Re: [PATCH] mfd: rk8xx: register devices again with PLATFORM_DEVID_NONE
Date: Thu, 16 Nov 2023 14:13:09 +0100 [thread overview]
Message-ID: <45cf3bc2-e63e-4a4e-a310-90bb2230e1bc@linaro.org> (raw)
In-Reply-To: <20231116113505.ay4kihy3u32smhbm@mercury.elektranox.org>
Hi,
On 16/11/2023 12:35, Sebastian Reichel wrote:
> Hi,
>
> On Thu, Nov 16, 2023 at 09:53:05AM +0100, Neil Armstrong wrote:
>> Since commit 210f418f8ace ("mfd: rk8xx: Add rk806 support"), devices are
>> registered with "0" as id, causing devices to not have an automatic device id
>> and prevents having multiple RK8xx PMICs on the same system.
>
> They are not registered with "0" as ID - they are registered without
> any ID at all, because their cells have PLATFORM_DEVID_NONE.
>
>> This fixes a regression while booting the Odroid Go Ultra on v6.6.1:
>> sysfs: cannot create duplicate filename '/bus/platform/devices/rk808-clkout'
>
> ^ which you can see here. There is no ".0" suffix at the end of the
> sysfs path.
>
>> CPU: 3 PID: 97 Comm: kworker/u12:2 Not tainted 6.6.1 #1
>> Hardware name: Hardkernel ODROID-GO-Ultra (DT)
>> Workqueue: events_unbound deferred_probe_work_func
>> Call trace:
>> dump_backtrace+0x9c/0x11c
>> show_stack+0x18/0x24
>> dump_stack_lvl+0x78/0xc4
>> dump_stack+0x18/0x24
>> sysfs_warn_dup+0x64/0x80
>> sysfs_do_create_link_sd+0xf0/0xf8
>> sysfs_create_link+0x20/0x40
>> bus_add_device+0x114/0x160
>> device_add+0x3f0/0x7cc
>> platform_device_add+0x180/0x270
>> mfd_add_device+0x390/0x4a8
>> devm_mfd_add_devices+0xb0/0x150
>> rk8xx_probe+0x26c/0x410
>> rk8xx_i2c_probe+0x64/0x98
>> i2c_device_probe+0x104/0x2e8
>> really_probe+0x184/0x3c8
>> __driver_probe_device+0x7c/0x16c
>> driver_probe_device+0x3c/0x10c
>> __device_attach_driver+0xbc/0x158
>> bus_for_each_drv+0x80/0xdc
>> __device_attach+0x9c/0x1ac
>> device_initial_probe+0x14/0x20
>> bus_probe_device+0xac/0xb0
>> deferred_probe_work_func+0xa0/0xf4
>> process_one_work+0x1bc/0x378
>> worker_thread+0x1dc/0x3d4
>> kthread+0x104/0x118
>> ret_from_fork+0x10/0x20
>> rk8xx-i2c 0-001c: error -EEXIST: failed to add MFD devices
>> rk8xx-i2c: probe of 0-001c failed with error -17
>>
>> Fixes: 210f418f8ace ("mfd: rk8xx: Add rk806 support")
>> Reported-by: Adam Green <greena88@gmail.com>
>> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
>> ---
>> Lee, This is only a fix for the regression, as discussed with Sebastian at [1],
>> the driver would require some more cleanup to cleanly register all devices with
>> PLATFORM_DEVID_AUTO. I plan to send this later on.
>>
>> [1] https://lore.kernel.org/all/20231115180050.5r5xukttz27vviyi@mercury.elektranox.org/
>
> NAK, this would break rk806. You can use PLATFORM_DEVID_AUTO instead,
> since that has special handling in devm_mfd_add_devices and will
> ignore the PLATFORM_DEVID_NONE specified by the cells.
You're right, I was preparing the patch cleanup and it's clear it will
break rk806 because I just saw you specifically added PLATFORM_DEVID_AUTO
to rk806 cells.
I'll send a v2.
Thanks,
Neil
>
> Greetings,
>
> -- Sebastian
>
>> ---
>> drivers/mfd/rk8xx-core.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/mfd/rk8xx-core.c b/drivers/mfd/rk8xx-core.c
>> index c47164a3ec1d..58d8dec7ac02 100644
>> --- a/drivers/mfd/rk8xx-core.c
>> +++ b/drivers/mfd/rk8xx-core.c
>> @@ -684,7 +684,7 @@ int rk8xx_probe(struct device *dev, int variant, unsigned int irq, struct regmap
>> pre_init_reg[i].addr);
>> }
>>
>> - ret = devm_mfd_add_devices(dev, 0, cells, nr_cells, NULL, 0,
>> + ret = devm_mfd_add_devices(dev, PLATFORM_DEVID_NONE, cells, nr_cells, NULL, 0,
>> regmap_irq_get_domain(rk808->irq_data));
>> if (ret)
>> return dev_err_probe(dev, ret, "failed to add MFD devices\n");
>>
>> ---
>> base-commit: f31817cbcf48d191faee7cebfb59197d2048cd64
>> change-id: 20231116-topic-amlogic-upstream-fix-rk8xx-devid-auto-59ce0d1b738a
>>
>> Best regards,
>> --
>> Neil Armstrong <neil.armstrong@linaro.org>
>>
prev parent reply other threads:[~2023-11-16 13:13 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-16 8:53 [PATCH] mfd: rk8xx: register devices again with PLATFORM_DEVID_NONE Neil Armstrong
2023-11-16 11:35 ` Sebastian Reichel
2023-11-16 13:13 ` Neil Armstrong [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=45cf3bc2-e63e-4a4e-a310-90bb2230e1bc@linaro.org \
--to=neil.armstrong@linaro.org \
--cc=greena88@gmail.com \
--cc=lee@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sebastian.reichel@collabora.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox