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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.